Enhance the RM logic for Kubevirt Networking App

Change-Id: I84fa678c75ba1e738c68c72ffbc89c54e5309997
(cherry picked from commit 842b3031e5b82a95d1f292fc952e8f091cc1e20b)
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtRoutingSnatHandler.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtRoutingSnatHandler.java
index 2b99937..5e0aa64 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtRoutingSnatHandler.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtRoutingSnatHandler.java
@@ -675,6 +675,23 @@
             if (!router.external().isEmpty() && router.peerRouter() != null) {
                 initGatewayNodeSnatForRouter(router, router.electedGateway(), false);
             }
+            KubevirtNode gatewayNode = kubevirtNodeService.node(router.electedGateway());
+
+            router.internal()
+                    .stream()
+                    .filter(networkId -> kubevirtNetworkService.network(networkId) != null)
+                    .map(kubevirtNetworkService::network)
+                    .forEach(network -> {
+                        String routerSnatIp = router.external().keySet().stream().findAny().orElse(null);
+                        if (routerSnatIp == null) {
+                            return;
+                        }
+
+                        kubevirtPortService.ports(network.networkId()).forEach(kubevirtPort -> {
+                            setStatefulSnatDownStreamRuleForKubevirtPort(router,
+                                    gatewayNode, kubevirtPort, false);
+                        });
+                    });
         }
 
         private void processRouterUpdate(KubevirtRouter router) {