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();
                 }
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodecTest.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodecTest.java
index 492847a..667ca4b 100644
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodecTest.java
+++ b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodecTest.java
@@ -96,6 +96,7 @@
                 .name("net-1")
                 .type(KubevirtNetwork.Type.FLAT)
                 .gatewayIp(IpAddress.valueOf("10.10.10.1"))
+                .defaultRoute(true)
                 .mtu(1500)
                 .cidr("10.10.10.0/24")
                 .hostRoutes(ImmutableSet.of(hostRoute1, hostRoute2))
@@ -121,6 +122,7 @@
         assertThat(network.type().name(), is("FLAT"));
         assertThat(network.cidr(), is("10.10.0.0/24"));
         assertThat(network.gatewayIp().toString(), is("10.10.0.1"));
+        assertThat(network.defaultRoute(), is(true));
         assertThat(network.ipPool().start().toString(), is("10.10.10.100"));
         assertThat(network.ipPool().end().toString(), is("10.10.10.200"));
         assertThat(network.dnses().size(), is(1));
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkJsonMatcher.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkJsonMatcher.java
index 4a67e07..7cbc587 100644
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkJsonMatcher.java
+++ b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkJsonMatcher.java
@@ -35,6 +35,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";
@@ -86,6 +87,14 @@
             return false;
         }
 
+        // check default route
+        boolean jsonDefaultRoute = jsonNode.get(DEFAULT_ROUTE).asBoolean();
+        boolean defaultRoute = network.defaultRoute();
+        if (jsonDefaultRoute != defaultRoute) {
+            description.appendText("Default route was " + jsonDefaultRoute);
+            return false;
+        }
+
         // check CIDR
         String jsonCidr = jsonNode.get(CIDR).asText();
         String cidr = network.cidr();
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkManagerTest.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkManagerTest.java
index 1d0c676..5474433 100644
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkManagerTest.java
+++ b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkManagerTest.java
@@ -61,6 +61,7 @@
     private static final Integer MTU = 1500;
     private static final String SEGMENT_ID = "1";
     private static final IpAddress GATEWAY_IP = IpAddress.valueOf("10.10.10.1");
+    private static final boolean DEFAULT_ROUTE = true;
     private static final String CIDR = "10.10.10.0/24";
     private static final IpAddress IP_POOL_START = IpAddress.valueOf("10.10.10.100");
     private static final IpAddress IP_POOL_END = IpAddress.valueOf("10.10.10.200");
@@ -72,6 +73,7 @@
             .mtu(MTU)
             .segmentId(SEGMENT_ID)
             .gatewayIp(GATEWAY_IP)
+            .defaultRoute(DEFAULT_ROUTE)
             .cidr(CIDR)
             .ipPool(new KubevirtIpPool(IP_POOL_START, IP_POOL_END))
             .hostRoutes(ImmutableSet.of())
@@ -84,6 +86,7 @@
             .mtu(MTU)
             .segmentId(SEGMENT_ID)
             .gatewayIp(GATEWAY_IP)
+            .defaultRoute(DEFAULT_ROUTE)
             .cidr(CIDR)
             .ipPool(new KubevirtIpPool(IP_POOL_START, IP_POOL_END))
             .hostRoutes(ImmutableSet.of())
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/web/KubevirtNetworkWebResourceTest.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/web/KubevirtNetworkWebResourceTest.java
index 8a06018..b453dad 100644
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/web/KubevirtNetworkWebResourceTest.java
+++ b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/web/KubevirtNetworkWebResourceTest.java
@@ -88,6 +88,7 @@
                 .cidr("10.10.10.0/24")
                 .mtu(1500)
                 .gatewayIp(IpAddress.valueOf("10.10.10.1"))
+                .defaultRoute(true)
                 .ipPool(new KubevirtIpPool(IpAddress.valueOf("10.10.10.100"),
                         IpAddress.valueOf("10.10.10.200")))
                 .build();
diff --git a/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/codec/KubevirtNetwork.json b/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/codec/KubevirtNetwork.json
index afef160..293cfcb 100644
--- a/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/codec/KubevirtNetwork.json
+++ b/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/codec/KubevirtNetwork.json
@@ -5,6 +5,7 @@
   "mtu": 1500,
   "cidr": "10.10.0.0/24",
   "gatewayIp": "10.10.0.1",
+  "defaultRoute": true,
   "ipPool": {
     "start": "10.10.10.100",
     "end": "10.10.10.200"
diff --git a/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/web/kubevirt-network.json b/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/web/kubevirt-network.json
index d8a0a1f..c65236c 100644
--- a/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/web/kubevirt-network.json
+++ b/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/web/kubevirt-network.json
@@ -5,6 +5,7 @@
   "mtu": 1500,
   "cidr": "10.10.10.0/24",
   "gatewayIp": "10.10.10.1",
+  "defaultRoute": true,
   "ipPool": {
     "start": "10.10.10.100",
     "end": "10.10.10.200"
