Enhancements for hosts behing trunks
[controller.git] / opendaylight / arphandler / src / main / java / org / opendaylight / controller / arphandler / internal / ArpHandler.java
index e5491824397c1678b26b819b4e2691d0295f95a6..db94a7c86734888b47c4e9c80071e5a2194e460e 100644 (file)
@@ -51,6 +51,7 @@ import org.opendaylight.controller.sal.packet.Ethernet;
 import org.opendaylight.controller.sal.packet.IDataPacketService;
 import org.opendaylight.controller.sal.packet.IListenDataPacket;
 import org.opendaylight.controller.sal.packet.IPv4;
+import org.opendaylight.controller.sal.packet.IEEE8021Q;
 import org.opendaylight.controller.sal.packet.Packet;
 import org.opendaylight.controller.sal.packet.PacketResult;
 import org.opendaylight.controller.sal.packet.RawPacket;
@@ -654,6 +655,10 @@ public class ArpHandler implements IHostFinder, IListenDataPacket, ICacheUpdateA
         Packet formattedPak = this.dataPacketService.decodeDataPacket(inPkt);
         if (formattedPak instanceof Ethernet) {
             Object nextPak = formattedPak.getPayload();
+            if (nextPak instanceof IEEE8021Q) {
+                log.trace("Moved after the dot1Q header");
+                nextPak = ((IEEE8021Q) nextPak).getPayload();
+            }
             if (nextPak instanceof IPv4) {
                 log.trace("Handle IP packet: {}", formattedPak);
                 handlePuntedIPPacket((IPv4) nextPak, inPkt.getIncomingNodeConnector());