Fix: enforce to match VNI for ARP request in broadcast mode
Change-Id: I4dd31866c843f16d527e9d6c25ea1f99946c8990
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 c60dfec..8cbec2a 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
@@ -75,15 +75,15 @@
import static com.google.common.base.Preconditions.checkNotNull;
import static org.onosproject.openstacknetworking.api.Constants.ARP_BROADCAST_MODE;
import static org.onosproject.openstacknetworking.api.Constants.ARP_PROXY_MODE;
+import static org.onosproject.openstacknetworking.api.Constants.ARP_TABLE;
import static org.onosproject.openstacknetworking.api.Constants.DEFAULT_ARP_MODE_STR;
import static org.onosproject.openstacknetworking.api.Constants.DEFAULT_GATEWAY_MAC_STR;
-import static org.onosproject.openstacknetworking.api.Constants.DHCP_ARP_TABLE;
import static org.onosproject.openstacknetworking.api.Constants.OPENSTACK_NETWORKING_APP_ID;
import static org.onosproject.openstacknetworking.api.Constants.PRIORITY_ARP_CONTROL_RULE;
+import static org.onosproject.openstacknetworking.api.Constants.PRIORITY_ARP_FLOOD_RULE;
import static org.onosproject.openstacknetworking.api.Constants.PRIORITY_ARP_GATEWAY_RULE;
import static org.onosproject.openstacknetworking.api.Constants.PRIORITY_ARP_REPLY_RULE;
import static org.onosproject.openstacknetworking.api.Constants.PRIORITY_ARP_REQUEST_RULE;
-import static org.onosproject.openstacknetworking.api.Constants.PRIORITY_ARP_SUBNET_RULE;
import static org.onosproject.openstacknetworking.api.InstancePort.State.ACTIVE;
import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.getPropertyValue;
import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.swapStaleLocation;
@@ -324,7 +324,7 @@
selector,
treatment,
PRIORITY_ARP_GATEWAY_RULE,
- DHCP_ARP_TABLE,
+ ARP_TABLE,
install
)
);
@@ -335,7 +335,7 @@
selector,
treatment,
PRIORITY_ARP_GATEWAY_RULE,
- DHCP_ARP_TABLE,
+ ARP_TABLE,
install
);
}
@@ -396,10 +396,13 @@
OpenstackNode localNode = osNodeService.node(port.deviceId());
+ String segId = osNetworkService.segmentId(port.networkId());
+
TrafficSelector selector = DefaultTrafficSelector.builder()
.matchEthType(EthType.EtherType.ARP.ethType().toShort())
.matchArpOp(ARP.OP_REQUEST)
.matchArpTpa(port.ipAddress().getIp4Address())
+ .matchTunnelId(Long.valueOf(segId))
.build();
setRemoteArpTreatmentForVxlan(selector, port, localNode, install);
@@ -450,7 +453,7 @@
selector,
treatment,
PRIORITY_ARP_REPLY_RULE,
- DHCP_ARP_TABLE,
+ ARP_TABLE,
install
);
@@ -479,7 +482,7 @@
selector,
treatmentToRemote,
PRIORITY_ARP_REQUEST_RULE,
- DHCP_ARP_TABLE,
+ ARP_TABLE,
install
);
}
@@ -502,7 +505,7 @@
selector,
treatmentToRemote,
PRIORITY_ARP_REQUEST_RULE,
- DHCP_ARP_TABLE,
+ ARP_TABLE,
install);
}
}
@@ -675,7 +678,7 @@
selector,
treatment,
PRIORITY_ARP_CONTROL_RULE,
- DHCP_ARP_TABLE,
+ ARP_TABLE,
install
);
}
@@ -695,8 +698,8 @@
osNode.intgBridge(),
selector,
treatment,
- PRIORITY_ARP_SUBNET_RULE,
- DHCP_ARP_TABLE,
+ PRIORITY_ARP_FLOOD_RULE,
+ ARP_TABLE,
install
);
}