Support STT tunneling protocol at kubevirt networking app

Change-Id: Icbef76dbfb842ce1cf6893bf18ee80c4b1b26006
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtFloatingIpHandler.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtFloatingIpHandler.java
index e9ab1fe..2d5b87d 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtFloatingIpHandler.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtFloatingIpHandler.java
@@ -72,6 +72,7 @@
 import static org.onosproject.kubevirtnetworking.api.Constants.TUNNEL_DEFAULT_TABLE;
 import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.GENEVE;
 import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.GRE;
+import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.STT;
 import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.VXLAN;
 import static org.onosproject.kubevirtnetworking.util.KubevirtNetworkingUtil.buildGarpPacket;
 import static org.onosproject.kubevirtnetworking.util.KubevirtNetworkingUtil.externalPatchPortNum;
@@ -164,7 +165,8 @@
         }
 
         KubevirtNetwork kubevirtNetwork = kubevirtNetworkService.network(kubevirtPort.networkId());
-        if (kubevirtNetwork.type() == VXLAN || kubevirtNetwork.type() == GENEVE || kubevirtNetwork.type() == GRE) {
+        if (kubevirtNetwork.type() == VXLAN || kubevirtNetwork.type() == GENEVE ||
+                kubevirtNetwork.type() == GRE || kubevirtNetwork.type() == STT) {
             setFloatingIpDownstreamRulesToGatewayTunBridge(floatingIp,
                     electedGw, kubevirtNetwork, kubevirtPort, install);
         }
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtLbHandler.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtLbHandler.java
index ba352eb..55b84f1 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtLbHandler.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtLbHandler.java
@@ -83,6 +83,7 @@
 import static org.onosproject.kubevirtnetworking.api.Constants.TUNNEL_DEFAULT_TABLE;
 import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.GENEVE;
 import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.GRE;
+import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.STT;
 import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.VXLAN;
 import static org.onosproject.kubevirtnetworking.util.KubevirtNetworkingUtil.buildGarpPacket;
 import static org.onosproject.kubevirtnetworking.util.KubevirtNetworkingUtil.externalPatchPortNum;
@@ -237,7 +238,7 @@
             setLbDownstreamRules(loadBalancer, router, gateway, true);
             setLbUpstreamRules(loadBalancer, router, gateway, true);
 
-            if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE) {
+            if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE || network.type() == STT) {
                 setLbDownStreamRulesForTunBridge(loadBalancer, gateway, true);
             }
         }
@@ -274,7 +275,8 @@
 
             setLbDownstreamRules(old, oldRouter, oldGateway, false);
             setLbUpstreamRules(old, oldRouter, oldGateway, false);
-            if (oldNetwork.type() == VXLAN || oldNetwork.type() == GENEVE || oldNetwork.type() == GRE) {
+            if (oldNetwork.type() == VXLAN || oldNetwork.type() == GENEVE ||
+                    oldNetwork.type() == GRE || oldNetwork.type() == STT) {
                 setLbDownStreamRulesForTunBridge(loadBalancer, oldGateway, false);
             }
             setBucketsToGroup(old, oldGateway, false);
@@ -310,7 +312,8 @@
             setBucketsToGroup(loadBalancer, gateway, true);
             setLbDownstreamRules(loadBalancer, router, gateway, true);
             setLbUpstreamRules(loadBalancer, router, gateway, true);
-            if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE) {
+            if (network.type() == VXLAN || network.type() == GENEVE ||
+                    network.type() == GRE || network.type() == STT) {
                 setLbDownStreamRulesForTunBridge(loadBalancer, gateway, true);
             }
         }
@@ -350,7 +353,7 @@
             setBucketsToGroup(loadBalancer, gateway, false);
             setLbGroup(loadBalancer, gateway, false);
 
-            if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE) {
+            if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE || network.type() == STT) {
                 setLbDownStreamRulesForTunBridge(loadBalancer, gateway, false);
             }
         }
@@ -747,7 +750,8 @@
                 setLbUpstreamRules(loadBalancer, router, gatewayNode, true);
 
                 KubevirtNetwork network = networkService.network(loadBalancer.networkId());
-                if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE) {
+                if (network.type() == VXLAN || network.type() == GENEVE ||
+                        network.type() == GRE || network.type() == STT) {
                     setLbDownStreamRulesForTunBridge(loadBalancer, gatewayNode, true);
                 }
 
@@ -781,7 +785,8 @@
                 setLbGroup(loadBalancer, gatewayNode, false);
 
                 KubevirtNetwork network = networkService.network(loadBalancer.networkId());
-                if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE) {
+                if (network.type() == VXLAN || network.type() == GENEVE ||
+                        network.type() == GRE || network.type() == STT) {
                     setLbDownStreamRulesForTunBridge(loadBalancer, gatewayNode, false);
                 }
 
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 482676f..1ea11e5 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
@@ -469,6 +469,7 @@
             case VXLAN:
             case GRE:
             case GENEVE:
+            case STT:
                 setDefaultEgressRuleToGatewayNode(router, network,
                         electedGateway.intgBridge(), install);
                 kubevirtNodeService.completeNodes(WORKER).forEach(node -> {
@@ -1208,6 +1209,7 @@
                 case VXLAN:
                 case GRE:
                 case GENEVE:
+                case STT:
                     initIntegrationTunnelBridge(network);
                     break;
                 case FLAT:
@@ -1228,6 +1230,7 @@
                 case VXLAN:
                 case GRE:
                 case GENEVE:
+                case STT:
                     purgeIntegrationTunnelBridge(network);
                     break;
                 case FLAT:
@@ -1301,6 +1304,7 @@
                         case VXLAN:
                         case GRE:
                         case GENEVE:
+                        case STT:
                             if (network.segmentId() == null) {
                                 continue;
                             }
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkManager.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkManager.java
index 74d317d..3c29e30 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkManager.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkManager.java
@@ -48,6 +48,7 @@
 import static org.onosproject.kubevirtnetworking.api.Constants.KUBEVIRT_NETWORKING_APP_ID;
 import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.GENEVE;
 import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.GRE;
+import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.STT;
 import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.VXLAN;
 import static org.slf4j.LoggerFactory.getLogger;
 
@@ -224,7 +225,8 @@
         return ImmutableSet.copyOf(networkStore.networks().stream()
                 .filter(n -> n.type() == VXLAN ||
                              n.type() == GRE ||
-                             n.type() == GENEVE)
+                             n.type() == GENEVE ||
+                             n.type() == STT)
                 .collect(Collectors.toSet()));
     }
 
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 7c21b3f..8cdf435 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
@@ -79,6 +79,7 @@
 import static org.onosproject.kubevirtnetworking.api.Constants.TUNNEL_DEFAULT_TABLE;
 import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.GENEVE;
 import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.GRE;
+import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.STT;
 import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.VLAN;
 import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.VXLAN;
 import static org.onosproject.kubevirtnetworking.util.KubevirtNetworkingUtil.buildGarpPacket;
@@ -318,7 +319,7 @@
                 GW_DROP_TABLE,
                 install);
 
-        if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE) {
+        if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE || network.type() == STT) {
             setDownStreamRulesToGatewayTunBridge(network, gatewayNode, kubevirtPort, install);
         }
     }
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/util/KubevirtNetworkingUtil.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/util/KubevirtNetworkingUtil.java
index 21353b9..82d3964 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/util/KubevirtNetworkingUtil.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/util/KubevirtNetworkingUtil.java
@@ -320,6 +320,8 @@
                 return node.grePort();
             case GENEVE:
                 return node.genevePort();
+            case STT:
+                return node.sttPort();
             default:
                 break;
         }
@@ -446,6 +448,8 @@
                 return node.grePort();
             case GENEVE:
                 return node.genevePort();
+            case STT:
+                return node.sttPort();
             case FLAT:
             case VLAN:
             default: