[CORD-458] Updates ARP handler
Changes:
- SR application uses NRM;
- Adds hooks for ND protocol;
- Updates ARP handler to better leverage on NRM;
- Reworks to take into account IPv4/IPv6 together;
Change-Id: Iab55b8c5ef7d973928d8ad47e2c2a482fb9c5c8a
diff --git a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/RoutingRulePopulator.java b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/RoutingRulePopulator.java
index 2c2f1eb..757e408 100644
--- a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/RoutingRulePopulator.java
+++ b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/RoutingRulePopulator.java
@@ -203,7 +203,7 @@
// All forwarding is via Groups. Drivers can re-purpose to flow-actions if needed.
// for switch pipelines that need it, provide outgoing vlan as metadata
VlanId outvlan = null;
- Ip4Prefix subnet = srManager.deviceConfiguration.getPortSubnet(deviceId, outPort);
+ Ip4Prefix subnet = srManager.deviceConfiguration.getPortIPv4Subnet(deviceId, outPort);
if (subnet == null) {
outvlan = VlanId.vlanId(SegmentRoutingManager.ASSIGNED_VLAN_NO_SUBNET);
} else {
@@ -234,7 +234,7 @@
* @param nextHops next hop switch ID list
* @return true if all rules are set successfully, false otherwise
*/
- public boolean populateIpRuleForSubnet(DeviceId deviceId, Set<Ip4Prefix> subnets,
+ public boolean populateIpRuleForSubnet(DeviceId deviceId, Set<IpPrefix> subnets,
DeviceId destSw, Set<DeviceId> nextHops) {
for (IpPrefix subnet : subnets) {
if (!populateIpRuleForRouter(deviceId, subnet, destSw, nextHops)) {
@@ -250,7 +250,7 @@
* @param subnets subnet being removed
* @return true if all rules are removed successfully, false otherwise
*/
- public boolean revokeIpRuleForSubnet(Set<Ip4Prefix> subnets) {
+ public boolean revokeIpRuleForSubnet(Set<IpPrefix> subnets) {
for (IpPrefix subnet : subnets) {
if (!revokeIpRuleForRouter(subnet)) {
return false;
@@ -597,7 +597,7 @@
suppressedPorts++;
}
- Ip4Prefix portSubnet = config.getPortSubnet(deviceId, port.number());
+ Ip4Prefix portSubnet = config.getPortIPv4Subnet(deviceId, port.number());
VlanId assignedVlan = (portSubnet == null || isSuppressed)
? VlanId.vlanId(SegmentRoutingManager.ASSIGNED_VLAN_NO_SUBNET)
: srManager.getSubnetAssignedVlanId(deviceId, portSubnet);
@@ -785,7 +785,8 @@
public void populateSubnetBroadcastRule(DeviceId deviceId) {
config.getSubnets(deviceId).forEach(subnet -> {
if (subnet.prefixLength() == 0 ||
- subnet.prefixLength() == IpPrefix.MAX_INET_MASK_LENGTH) {
+ subnet.prefixLength() == IpPrefix.MAX_INET_MASK_LENGTH ||
+ subnet.prefixLength() == IpPrefix.MAX_INET6_MASK_LENGTH) {
return;
}
int nextId = srManager.getSubnetNextObjectiveId(deviceId, subnet);