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();
                 }
