X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Farphandler%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Farphandler%2Finternal%2FArpHandler.java;h=fa883829cccf6c9f69044f3346e364ea4c2f9c5d;hb=f9aae7377704eed8a43c9a984f585165042ce5f7;hp=8ae038c30f38bb38410b1c093c7a7a6b791ca507;hpb=f8ab6822a30746c21b50fa770a99910dc61e26c7;p=controller.git diff --git a/opendaylight/arphandler/src/main/java/org/opendaylight/controller/arphandler/internal/ArpHandler.java b/opendaylight/arphandler/src/main/java/org/opendaylight/controller/arphandler/internal/ArpHandler.java index 8ae038c30f..fa883829cc 100644 --- a/opendaylight/arphandler/src/main/java/org/opendaylight/controller/arphandler/internal/ArpHandler.java +++ b/opendaylight/arphandler/src/main/java/org/opendaylight/controller/arphandler/internal/ArpHandler.java @@ -172,6 +172,12 @@ public class ArpHandler implements IHostFinder, IListenDataPacket, ICacheUpdateA byte[] targetIP = tIP.getAddress(); ARP arp = createARP(ARP.REPLY, sMAC, senderIP, tMAC, targetIP); + if(log.isTraceEnabled()) { + log.trace("Sending Arp Reply with srcMac {} - srcIp {} - dstMac {} - dstIp {} - outport {}", + HexEncode.bytesToHexString(sMAC), + sIP, HexEncode.bytesToHexString(tMAC), tIP, p); + } + Ethernet ethernet = createEthernet(sMAC, tMAC, arp); RawPacket destPkt = this.dataPacketService.encodeDataPacket(ethernet); @@ -180,8 +186,28 @@ public class ArpHandler implements IHostFinder, IListenDataPacket, ICacheUpdateA this.dataPacketService.transmitDataPacket(destPkt); } + private void logArpPacket(ARP pkt, NodeConnector p) { + try { + if (pkt.getOpCode() == ARP.REQUEST) { + log.trace("Received Arp Request with srcMac {} - srcIp {} - dstMac {} - dstIp {} - inport {}", HexEncode.bytesToHexString(pkt.getSenderHardwareAddress()), + InetAddress.getByAddress(pkt.getSenderProtocolAddress()), HexEncode.bytesToHexString(pkt.getTargetHardwareAddress()), + InetAddress.getByAddress(pkt.getTargetProtocolAddress()), p); + } else if(pkt.getOpCode() == ARP.REPLY) { + log.trace("Received Arp Reply with srcMac {} - srcIp {} - dstMac {} - dstIp {} - inport {}", HexEncode.bytesToHexString(pkt.getSenderHardwareAddress()), + InetAddress.getByAddress(pkt.getSenderProtocolAddress()), HexEncode.bytesToHexString(pkt.getTargetHardwareAddress()), + InetAddress.getByAddress(pkt.getTargetProtocolAddress()), p); + } + } catch(UnknownHostException e) { + log.warn("Illegal Ip Address in the ARP packet", e); + } + } + protected void handleARPPacket(Ethernet eHeader, ARP pkt, NodeConnector p) { + if(log.isTraceEnabled()) { + logArpPacket(pkt, p); + } + byte[] sourceMAC = eHeader.getSourceMACAddress(); byte[] targetMAC = eHeader.getDestinationMACAddress(); /* @@ -357,6 +383,11 @@ public class ArpHandler implements IHostFinder, IListenDataPacket, ICacheUpdateA byte[] targetIPByte = targetIP.getAddress(); ARP arp = createARP(ARP.REQUEST, getControllerMAC(), senderIP, targetHardwareAddress, targetIPByte); + if(log.isTraceEnabled()) { + log.trace("Sending Broadcast Arp Request with srcMac {} - srcIp {} - dstMac {} - dstIp {} - outport {}", HexEncode.bytesToHexString(getControllerMAC()), + subnet.getNetworkAddress(), HexEncode.bytesToHexString(targetHardwareAddress), targetIP, p); + } + byte[] destMACAddress = NetUtils.getBroadcastMACAddr(); Ethernet ethernet = createEthernet(getControllerMAC(), destMACAddress, arp); @@ -387,6 +418,13 @@ public class ArpHandler implements IHostFinder, IListenDataPacket, ICacheUpdateA byte[] targetMAC = host.getDataLayerAddressBytes(); ARP arp = createARP(ARP.REQUEST, getControllerMAC(), senderIP, targetMAC, targetIP); + if(log.isTraceEnabled()) { + log.trace("Sending Unicast Arp Request with srcMac {} - srcIp {} - dstMac {} - dstIp {} - outport {}", + HexEncode.bytesToHexString(getControllerMAC()), + subnet.getNetworkAddress(), HexEncode.bytesToHexString(targetMAC), host.getNetworkAddress(), + outPort); + } + Ethernet ethernet = createEthernet(getControllerMAC(), targetMAC, arp); RawPacket destPkt = this.dataPacketService.encodeDataPacket(ethernet);