X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openflowplugin-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Fimpl%2Fprotocol%2Fserialization%2Fmessages%2FPortMessageSerializer.java;h=ffcf596f0d4420abac00156167704e6211fd0ab2;hb=a044ce53af46a062ec53a1064f9b63898e4b808e;hp=c098ab51271d66f488089eb930dca1e8287554dd;hpb=1cae498c81f84215a0e610c16c4a0b1f93528da8;p=openflowplugin.git diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/messages/PortMessageSerializer.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/messages/PortMessageSerializer.java index c098ab5127..ffcf596f0d 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/messages/PortMessageSerializer.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/messages/PortMessageSerializer.java @@ -5,9 +5,9 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.openflowplugin.impl.protocol.serialization.messages; +import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableMap; import io.netty.buffer.ByteBuf; import org.opendaylight.openflowjava.util.ByteBufUtils; @@ -23,23 +23,28 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.P * OF protocol versions: 1.3. */ public class PortMessageSerializer extends AbstractMessageSerializer { + private static final byte PADDING_IN_PORT_MOD_MESSAGE_01 = 4; private static final byte PADDING_IN_PORT_MOD_MESSAGE_02 = 2; private static final byte PADDING_IN_PORT_MOD_MESSAGE_03 = 4; + private static final Integer DEFAULT_PORT_CONFIG_MASK = createPortConfigBitMask( + new PortConfig(true, true, true, true)); @Override public void serialize(final PortMessage message, final ByteBuf outBuffer) { + final int index = outBuffer.writerIndex(); super.serialize(message, outBuffer); - outBuffer.writeInt(OpenflowPortsUtil.getProtocolPortNumber(OpenflowVersion.OF13, message.getPortNumber()).intValue()); + outBuffer.writeInt(OpenflowPortsUtil + .getProtocolPortNumber(OpenflowVersion.OF13, message.getPortNumber()).intValue()); outBuffer.writeZero(PADDING_IN_PORT_MOD_MESSAGE_01); - outBuffer.writeBytes(IetfYangUtil.INSTANCE.bytesFor(message.getHardwareAddress())); + outBuffer.writeBytes(IetfYangUtil.INSTANCE.macAddressBytes(message.getHardwareAddress())); outBuffer.writeZero(PADDING_IN_PORT_MOD_MESSAGE_02); - final int portConfigBitMask = createPortConfigBitMask(message.getConfiguration()); - outBuffer.writeInt(portConfigBitMask); // Configuration - outBuffer.writeInt(portConfigBitMask); // Configuration mask + outBuffer.writeInt(createPortConfigBitMask(message.getConfiguration())); + outBuffer.writeInt(MoreObjects + .firstNonNull(createPortConfigBitMask(message.getMask()), DEFAULT_PORT_CONFIG_MASK)); outBuffer.writeInt(createPortFeaturesBitMask(message.getAdvertisedFeatures())); outBuffer.writeZero(PADDING_IN_PORT_MOD_MESSAGE_03); - ByteBufUtils.updateOFHeaderLength(outBuffer); + outBuffer.setShort(index + 2, outBuffer.writerIndex() - index); } @Override @@ -47,8 +52,8 @@ public class PortMessageSerializer extends AbstractMessageSerializerbuilder() .put(0, config.isPORTDOWN()) .put(2, config.isNORECV())