From 0ab242b16d03728345dcfbaa337ecfc0f61e3545 Mon Sep 17 00:00:00 2001 From: Jian Li Date: Fri, 16 Jul 2021 17:41:13 +0900 Subject: [PATCH] Fix: support to enable SNAT from disabled status at kubevirt net Change-Id: I82742975e0525f259d01f6279b32ebf34f8ea26f (cherry picked from commit c2a2c07c3171b8413fa8dc3915f42efbd3c467a9) --- .../impl/KubevirtRoutingSnatHandler.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) 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 f5fcd431d2..517c1cea3b 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 @@ -697,6 +697,24 @@ public class KubevirtRoutingSnatHandler { } if (router.enableSnat() && !router.external().isEmpty() && router.peerRouter() != null) { initGatewayNodeSnatForRouter(router, router.electedGateway(), true); + + 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, true); + }); + }); } }