Add default route option to kubevirt network

Change-Id: Ia2a2d9b34ec3c493e04d56c544c22812e32d524a
(cherry picked from commit d95d3524caff5449aded4ff9397c3ed717fc91e6)
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/cli/KubevirtListNetworkCommand.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/cli/KubevirtListNetworkCommand.java
index dfaed15..ded79aa 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/cli/KubevirtListNetworkCommand.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/cli/KubevirtListNetworkCommand.java
@@ -67,7 +67,7 @@
                                 0, CLI_NAME_LENGTH - CLI_MARGIN_LENGTH),
                         net.type().toString(),
                         net.segmentId() == null ? "N/A" : net.segmentId(),
-                        net.gatewayIp() == null ? "" : net.gatewayIp().toString());
+                        net.gatewayIp() == null ? "N/A" : net.gatewayIp().toString());
             }
         }
     }
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodec.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodec.java
index f04106e..2d8a07c 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodec.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodec.java
@@ -48,6 +48,7 @@
     private static final String MTU = "mtu";
     private static final String SEGMENT_ID = "segmentId";
     private static final String GATEWAY_IP = "gatewayIp";
+    private static final String DEFAULT_ROUTE = "defaultRoute";
     private static final String CIDR = "cidr";
     private static final String HOST_ROUTES = "hostRoutes";
     private static final String IP_POOL = "ipPool";
@@ -65,6 +66,7 @@
                 .put(NAME, network.name())
                 .put(MTU, network.mtu())
                 .put(GATEWAY_IP, network.gatewayIp().toString())
+                .put(DEFAULT_ROUTE, network.defaultRoute())
                 .put(CIDR, network.cidr());
 
         if (network.segmentId() != null) {
@@ -113,6 +115,8 @@
                 MTU + MISSING_MESSAGE);
         String gatewayIp = nullIsIllegal(json.get(GATEWAY_IP).asText(),
                 GATEWAY_IP + MISSING_MESSAGE);
+        boolean defaultRoute = nullIsIllegal(json.get(DEFAULT_ROUTE).asBoolean(),
+                DEFAULT_ROUTE + MISSING_MESSAGE);
         String cidr = nullIsIllegal(json.get(CIDR).asText(),
                 CIDR + MISSING_MESSAGE);
 
@@ -122,6 +126,7 @@
                 .name(name)
                 .mtu(mtu)
                 .gatewayIp(IpAddress.valueOf(gatewayIp))
+                .defaultRoute(defaultRoute)
                 .cidr(cidr);
 
         if (!type.equals(KubevirtNetwork.Type.FLAT.name())) {
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtDhcpHandler.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtDhcpHandler.java
index 983a5bb..1a2b7d7 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtDhcpHandler.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtDhcpHandler.java
@@ -411,8 +411,8 @@
             }
 
             // Sets the default router address up.
-            // Performs only if the gateway is set in subnet.
-            if (network.gatewayIp() != null) {
+            // Performs only if the gateway is set and default route is configure to true.
+            if (network.gatewayIp() != null && network.defaultRoute()) {
                 options.add(doRouterAddr(network));
             }
 
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkHandler.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkHandler.java
index d4a90a5..992f2f4 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkHandler.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkHandler.java
@@ -649,7 +649,6 @@
             return;
         }
 
-
         TrafficSelector.Builder sBuilder = DefaultTrafficSelector.builder()
                 .matchEthType(Ethernet.TYPE_IPV4)
                 .matchIPProtocol(IPv4.PROTOCOL_ICMP)
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/NetworkAttachmentDefinitionWatcher.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/NetworkAttachmentDefinitionWatcher.java
index da66b0e..7d40fee 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/NetworkAttachmentDefinitionWatcher.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/NetworkAttachmentDefinitionWatcher.java
@@ -74,6 +74,7 @@
     private static final String MTU = "mtu";
     private static final String SEGMENT_ID = "segmentId";
     private static final String GATEWAY_IP = "gatewayIp";
+    private static final String DEFAULT_ROUTE = "defaultRoute";
     private static final String CIDR = "cidr";
     private static final String HOST_ROUTES = "hostRoutes";
     private static final String DESTINATION = "destination";
@@ -284,6 +285,7 @@
                     String type = configJson.getString(TYPE);
                     Integer mtu = configJson.getInt(MTU);
                     String gatewayIp = configJson.getString(GATEWAY_IP);
+                    boolean defaultRoute = configJson.getBoolean(DEFAULT_ROUTE);
 
                     if (!type.equalsIgnoreCase(FLAT.name())) {
                         builder.segmentId(configJson.getString(SEGMENT_ID));
@@ -334,7 +336,8 @@
                     }
 
                     builder.networkId(name).name(name).type(Type.valueOf(type))
-                            .mtu(mtu).gatewayIp(IpAddress.valueOf(gatewayIp)).cidr(cidr);
+                            .mtu(mtu).gatewayIp(IpAddress.valueOf(gatewayIp))
+                            .defaultRoute(defaultRoute).cidr(cidr);
 
                     return builder.build();
                 }