From d2867c7e1ea9c190a77291680aaa89879f9237c7 Mon Sep 17 00:00:00 2001 From: Michal Polkorab Date: Wed, 27 Nov 2013 15:34:04 +0100 Subject: [PATCH] Quickfix - TableMod message (now correct config) Signed-off-by: Michal Polkorab --- .../src/main/yang/openflow-protocol.yang | 2 +- .../factories/GroupModInputMessageFactory.java | 4 ++-- .../factories/TableModInputMessageFactory.java | 15 +++++---------- .../TableModInputMessageFactoryTest.java | 15 ++++----------- 4 files changed, 12 insertions(+), 24 deletions(-) diff --git a/openflow-protocol-api/src/main/yang/openflow-protocol.yang b/openflow-protocol-api/src/main/yang/openflow-protocol.yang index 7960afa2..cb1397d6 100644 --- a/openflow-protocol-api/src/main/yang/openflow-protocol.yang +++ b/openflow-protocol-api/src/main/yang/openflow-protocol.yang @@ -523,7 +523,7 @@ module openflow-protocol { type oft:table-id; } leaf config { - type oft:port-config; + type oft:table-config; } } diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/GroupModInputMessageFactory.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/GroupModInputMessageFactory.java index 594e4f3a..b60a7c29 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/GroupModInputMessageFactory.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/GroupModInputMessageFactory.java @@ -18,9 +18,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 */ public class GroupModInputMessageFactory implements OFSerializer { private static final byte MESSAGE_TYPE = 15; - private static final byte PADDING_IN_GROUP_MOD_MESSAGE = 1; private static final int MESSAGE_LENGTH = 16; + private static final byte PADDING_IN_GROUP_MOD_MESSAGE = 1; private static final byte LENGTH_OF_BUCKET_STRUCTURE = 16; + private static final byte PADDING_IN_BUCKET = 4; private static GroupModInputMessageFactory instance; private GroupModInputMessageFactory() { @@ -59,7 +60,6 @@ public class GroupModInputMessageFactory implements OFSerializer } private static void encodeBuckets(List buckets, ByteBuf outBuffer) { - final byte PADDING_IN_BUCKET = 4; if (buckets != null) { for (BucketsList currentBucket : buckets) { outBuffer.writeShort(computeLengthOfBucket(currentBucket)); diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/TableModInputMessageFactory.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/TableModInputMessageFactory.java index 228aa900..1255b159 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/TableModInputMessageFactory.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/TableModInputMessageFactory.java @@ -8,7 +8,7 @@ import java.util.Map; import org.opendaylight.openflowjava.protocol.impl.serialization.OFSerializer; import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfig; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.TableConfig; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.TableModInput; /** @@ -55,18 +55,13 @@ public class TableModInputMessageFactory implements OFSerializer } /** - * @param config + * @param tableConfig * @return port config bitmask */ - private static int createConfigBitmask(PortConfig config) { - int configBitmask = 0; + private static int createConfigBitmask(TableConfig tableConfig) { Map portConfigMap = new HashMap<>(); - portConfigMap.put(0, config.isPortDown()); - portConfigMap.put(2, config.isNoRecv()); - portConfigMap.put(5, config.isNoFwd()); - portConfigMap.put(6, config.isNoPacketIn()); - - configBitmask = ByteBufUtils.fillBitMaskFromMap(portConfigMap); + portConfigMap.put(3, tableConfig.isOFPTCDEPRECATEDMASK()); + int configBitmask = ByteBufUtils.fillBitMaskFromMap(portConfigMap); return configBitmask; } } diff --git a/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/TableModInputMessageFactoryTest.java b/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/TableModInputMessageFactoryTest.java index 501453bd..ddcdb27c 100644 --- a/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/TableModInputMessageFactoryTest.java +++ b/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/TableModInputMessageFactoryTest.java @@ -8,7 +8,7 @@ import junit.framework.Assert; import org.junit.Test; import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.HelloMessageFactoryTest; import org.opendaylight.openflowjava.protocol.impl.util.BufferHelper; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfig; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.TableConfig; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.TableId; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.TableModInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.TableModInputBuilder; @@ -30,7 +30,7 @@ public class TableModInputMessageFactoryTest { TableModInputBuilder builder = new TableModInputBuilder(); BufferHelper.setupHeader(builder); builder.setTableId(new TableId(9L)); - builder.setConfig(new PortConfig(true, false, true, false)); + builder.setConfig(new TableConfig(true)); TableModInput message = builder.build(); ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer(); @@ -38,16 +38,9 @@ public class TableModInputMessageFactoryTest { factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message); BufferHelper.checkHeaderV13(out, MESSAGE_TYPE, 16); - Assert.assertEquals("Wrong TableID", message.getTableId().getValue().intValue(), out.readByte()); + Assert.assertEquals("Wrong TableID", message.getTableId().getValue().intValue(), out.readUnsignedByte()); out.skipBytes(PADDING_IN_TABLE_MOD_MESSAGE); - Assert.assertEquals("Wrong PortConfig", message.getConfig(), createPortConfig(out.readInt())); + Assert.assertEquals("Wrong TableConfig", 8, out.readUnsignedInt()); } - private static PortConfig createPortConfig(long input){ - final Boolean _portDown = ((input) & (1<<0)) > 0; - final Boolean _noRecv = ((input) & (1<<2)) > 0; - final Boolean _noFwd = ((input) & (1<<5)) > 0; - final Boolean _noPacketIn = ((input) & (1<<6)) > 0; - return new PortConfig(_noFwd, _noPacketIn, _noRecv, _portDown); - } } -- 2.36.6