MacAddress srcMac = MacAddress.valueOf(arp.getSenderHardwareAddress()); OpenstackPortInfo portInfo = openstackPortInfoCollection.stream() .filter(p -> p.ip().equals(sourceIp) && p.mac().equals(srcMac)).findFirst().orElse(null);
private void arpresponceProcess(ARP arpPacket, DeviceId deviceId) { MacAddress srcMac = MacAddress .valueOf(arpPacket.getTargetHardwareAddress()); MacAddress dstMac = MacAddress .valueOf(arpPacket.getSenderHardwareAddress()); IpAddress srcIp = IpAddress.valueOf(IPv4 .toIPv4Address(arpPacket.getTargetProtocolAddress())); IpAddress dstIp = IpAddress.valueOf(IPv4 .toIPv4Address(arpPacket.getSenderProtocolAddress())); FloatingIp floatingIp = floatingIpStore.get(srcIp); if (floatingIp == null) { return; } DeviceId deviceIdOfFloatingIp = getDeviceIdOfFloatingIP(floatingIp); if (!deviceId.equals(deviceIdOfFloatingIp)) { return; } if (!downloadSnatRules(deviceId, srcMac, srcIp, dstMac, dstIp, floatingIp)) { return; } }
private void arprequestProcess(ARP arpPacket, DeviceId deviceId) { MacAddress dstMac = MacAddress .valueOf(arpPacket.getSenderHardwareAddress()); IpAddress srcIp = IpAddress.valueOf(IPv4 .toIPv4Address(arpPacket.getTargetProtocolAddress())); IpAddress dstIp = IpAddress.valueOf(IPv4 .toIPv4Address(arpPacket.getSenderProtocolAddress())); FloatingIp floatingIp = floatingIpStore.get(srcIp); if (floatingIp == null) { return; } DeviceId deviceIdOfFloatingIp = getDeviceIdOfFloatingIP(floatingIp); if (!deviceId.equals(deviceIdOfFloatingIp)) { return; } Port exPort = exPortOfDevice.get(deviceId); MacAddress srcMac = MacAddress.valueOf(exPort.annotations() .value(AnnotationKeys.PORT_MAC)); if (!downloadSnatRules(deviceId, srcMac, srcIp, dstMac, dstIp, floatingIp)) { return; } Ethernet ethernet = buildArpResponse(dstIp, dstMac, srcIp, srcMac); if (ethernet != null) { sendPacketOut(deviceId, exPort.number(), ethernet); } }