Fix: provide the ICMP connectivity to external gateway
Change-Id: I893037715c93dd228fc23eb1c706abba96cd4786
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingArpHandler.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingArpHandler.java
index 6b96dfa..feb06cc 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingArpHandler.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingArpHandler.java
@@ -316,11 +316,10 @@
}
TrafficSelector.Builder sBuilder = DefaultTrafficSelector.builder();
- TrafficTreatment.Builder tBuilder = DefaultTrafficTreatment.builder();
if (netType == VLAN) {
sBuilder.matchVlanId(VlanId.vlanId(network.getProviderSegID()));
- tBuilder.popVlan();
+
} else if (netType == VXLAN || netType == GRE || netType == GENEVE) {
// do not remove fake gateway ARP rules, if there is another gateway
// which has the same subnet that to be removed
@@ -345,6 +344,13 @@
if (osNode == null) {
osNodeService.completeNodes(COMPUTE).forEach(n -> {
Device device = deviceService.getDevice(n.intgBridge());
+
+ TrafficTreatment.Builder tBuilder = DefaultTrafficTreatment.builder();
+
+ if (netType == VLAN) {
+ tBuilder.popVlan();
+ }
+
tBuilder.extension(buildMoveEthSrcToDstExtension(device), device.id())
.extension(buildMoveArpShaToThaExtension(device), device.id())
.extension(buildMoveArpSpaToTpaExtension(device), device.id())
@@ -365,6 +371,13 @@
});
} else {
Device device = deviceService.getDevice(osNode.intgBridge());
+
+ TrafficTreatment.Builder tBuilder = DefaultTrafficTreatment.builder();
+
+ if (netType == VLAN) {
+ tBuilder.popVlan();
+ }
+
tBuilder.extension(buildMoveEthSrcToDstExtension(device), device.id())
.extension(buildMoveArpShaToThaExtension(device), device.id())
.extension(buildMoveArpSpaToTpaExtension(device), device.id())