diff options
Diffstat (limited to 'framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/ArpHandler.java')
-rw-r--r-- | framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/ArpHandler.java | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/ArpHandler.java b/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/ArpHandler.java index 6ca6d193..f42f84b1 100644 --- a/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/ArpHandler.java +++ b/framework/src/onos/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/ArpHandler.java @@ -88,7 +88,6 @@ public class ArpHandler { } private void handleArpRequest(DeviceId deviceId, ConnectPoint inPort, Ethernet payload) { - ARP arpRequest = (ARP) payload.getPayload(); HostId targetHostId = HostId.hostId(MacAddress.valueOf( arpRequest.getTargetHardwareAddress())); @@ -98,14 +97,16 @@ public class ArpHandler { Ip4Address targetAddress = Ip4Address.valueOf(arpRequest.getTargetProtocolAddress()); sendArpResponse(arpRequest, config.getRouterMacForAGatewayIp(targetAddress)); - // ARP request for known hosts - } else if (srManager.hostService.getHost(targetHostId) != null) { - MacAddress targetMac = srManager.hostService.getHost(targetHostId).mac(); - sendArpResponse(arpRequest, targetMac); - - // ARP request for unknown host in the subnet - } else if (isArpReqForSubnet(deviceId, arpRequest)) { - flood(payload, inPort); + } else { + Host targetHost = srManager.hostService.getHost(targetHostId); + // ARP request for known hosts + if (targetHost != null) { + sendArpResponse(arpRequest, targetHost.mac()); + + // ARP request for unknown host in the subnet + } else if (isArpReqForSubnet(deviceId, arpRequest)) { + flood(payload, inPort); + } } } |