From 08fbe94713c7a810a8923291813565ebae73e7eb Mon Sep 17 00:00:00 2001 From: Michal Polkorab Date: Mon, 9 Dec 2013 14:08:20 +0100 Subject: [PATCH] Quickfix - Vlan-vid match entry Signed-off-by: Michal Polkorab --- .../openflowjava/protocol/impl/util/MatchDeserializer.java | 6 +++--- .../openflowjava/protocol/impl/util/MatchSerializer.java | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/MatchDeserializer.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/MatchDeserializer.java index 989af293..9df9d17d 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/MatchDeserializer.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/MatchDeserializer.java @@ -248,9 +248,9 @@ public abstract class MatchDeserializer { case 6: matchEntriesBuilder.setOxmMatchField(VlanVid.class); VlanVidMatchEntryBuilder vlanVidBuilder = new VlanVidMatchEntryBuilder(); - int vidEntryValue = in.readUnsignedShort(); - vlanVidBuilder.setCfiBit((vidEntryValue & 1) != 0); - vlanVidBuilder.setVlanVid(vidEntryValue >> 1); + int vidEntryValue = in.readUnsignedShort(); + vlanVidBuilder.setCfiBit((vidEntryValue & (1 << 12)) != 0); // cfi is 13-th bit + vlanVidBuilder.setVlanVid(vidEntryValue & ((1 << 12) - 1)); // value without 13-th bit matchEntriesBuilder.addAugmentation(VlanVidMatchEntry.class, vlanVidBuilder.build()); if (hasMask) { addMaskAugmentation(matchEntriesBuilder, in, EncodeConstants.SIZE_OF_SHORT_IN_BYTES); diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/MatchSerializer.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/MatchSerializer.java index aeaff04b..bfa45c81 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/MatchSerializer.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/MatchSerializer.java @@ -187,9 +187,10 @@ public class MatchSerializer { fieldValue = 6; fieldValue = fieldValue << 1; VlanVidMatchEntry vlanVid = entry.getAugmentation(VlanVidMatchEntry.class); - int vlanVidValue = vlanVid.getVlanVid() << 1; + int vlanVidValue = vlanVid.getVlanVid(); if (vlanVid.isCfiBit()) { - vlanVidValue = vlanVidValue | 1; + short cfi = 1 << 12; // 13-th bit + vlanVidValue = vlanVidValue | cfi; } if (entry.isHasMask()) { fieldValue = fieldValue | 1; -- 2.36.6