From 7cae5d45abd1b6ac6bfc096e1cd9ee64990fc7bd Mon Sep 17 00:00:00 2001 From: Yevgeny Khodorkovsky Date: Wed, 9 Jul 2014 22:13:57 -0700 Subject: [PATCH] IEEE802.1q Packet returns incorrect header size 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 --- .../controller/arphandler/internal/ArpHandler.java | 2 ++ .../opendaylight/controller/sal/packet/IEEE8021Q.java | 11 +++++++++++ 2 files changed, 13 insertions(+) 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 fe456f3f8e..4efcada2f8 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 @@ -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); } diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IEEE8021Q.java b/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IEEE8021Q.java index 9825d0eefb..4c0c94ccb8 100644 --- a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IEEE8021Q.java +++ b/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IEEE8021Q.java @@ -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; + } + } -- 2.36.6