commit | 8e365bdab1d2ac6b059baa854aa2e7d75b45cd52 | [log] [tgz] |
---|---|---|
author | Jian Li <pyguni@gmail.com> | Fri Oct 12 22:09:03 2018 +0900 |
committer | Jian Li <pyguni@gmail.com> | Mon Oct 15 09:11:32 2018 +0000 |
tree | f6db308e160752e9972ae23ce8793c80567ff5a9 | |
parent | 581f21a1c0ff8bbe373e597999b8d351bb258530 [diff] |
Fix: allow to specify duplicated gateways for different subnets Change-Id: I846b045c346ca328744803c2e72a5a549a95f860
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 f64adc0..2c18f03 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
@@ -277,6 +277,21 @@ private void setFakeGatewayArpRule(Subnet osSubnet, boolean install, OpenstackNode osNode) { if (ARP_BROADCAST_MODE.equals(getArpMode())) { + + // do not remove fake gateway ARP rules, if there is another gateway + // which has the same subnet that to be removed + // this only occurs if we have duplicated subnets associated with + // different networks + if (!install) { + long numOfDupGws = osNetworkService.subnets().stream() + .filter(s -> !s.getId().equals(osSubnet.getId())) + .filter(s -> s.getGateway().equals(osSubnet.getGateway())) + .count(); + if (numOfDupGws > 0) { + return; + } + } + String gateway = osSubnet.getGateway(); TrafficSelector selector = DefaultTrafficSelector.builder()