IEEE802.1q Packet returns incorrect header size 88/8888/4
authorYevgeny Khodorkovsky <ykhodork@cisco.com>
Thu, 10 Jul 2014 05:13:57 +0000 (22:13 -0700)
committerYevgeny Khodorkovsky <ykhodork@cisco.com>
Fri, 11 Jul 2014 01:41:57 +0000 (18:41 -0700)
IEEE8021Q class uses the Packet.getHeaderSize() which iterates through
header fields to determine the size. .1Q header is fixed in size and
should return the correct value

Change-Id: I4b0123dd943f6e833f14782f2ed7cc0e6e184e87
Signed-off-by: Yevgeny Khodorkovsky <ykhodork@cisco.com>
opendaylight/arphandler/src/main/java/org/opendaylight/controller/arphandler/internal/ArpHandler.java
opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IEEE8021Q.java

index fe456f3f8ebe6f6237352cb09f5b6a7dc8056398..4efcada2f8ed9ef7fd0d2774c5b41cfb6e265ba1 100644 (file)
@@ -695,6 +695,8 @@ public class ArpHandler implements IHostFinder, IListenDataPacket, ICacheUpdateA
             dot1q.setVid(vlan);
             dot1q.setEtherType(EtherTypes.ARP.shortValue());
             dot1q.setPayload(arp);
+            dot1q.setCfi((byte)0);
+            dot1q.setPcp((byte)0);
             ethernet.setEtherType(EtherTypes.VLANTAGGED.shortValue());
             ethernet.setPayload(dot1q);
         }
index 9825d0eefb791098bf1724d5996c44f881c0da6f..4c0c94ccb82a50d5027b1be6ea23718939cc3a28 100644 (file)
@@ -11,6 +11,7 @@ package org.opendaylight.controller.sal.packet;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.Map;
+
 import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.apache.commons.lang3.tuple.Pair;
 import org.opendaylight.controller.sal.match.Match;
@@ -156,4 +157,14 @@ public class IEEE8021Q extends Packet {
         match.setField(MatchType.DL_VLAN_PR, this.getPcp());
         match.setField(MatchType.DL_TYPE, this.getEtherType());
     }
+
+    /**
+     * Gets the header size in bits
+     * @return The .1Q header size in bits
+     */
+    @Override
+    public int getHeaderSize() {
+        return 32;
+    }
+
 }