* 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 static java.util.Objects.requireNonNullElse;
+
import com.google.common.collect.ImmutableMap;
import io.netty.buffer.ByteBuf;
import org.opendaylight.openflowjava.util.ByteBufUtils;
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) {
- int index = outBuffer.writerIndex();
+ 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.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(requireNonNullElse(createPortConfigBitMask(message.getMask()), DEFAULT_PORT_CONFIG_MASK));
outBuffer.writeInt(createPortFeaturesBitMask(message.getAdvertisedFeatures()));
outBuffer.writeZero(PADDING_IN_PORT_MOD_MESSAGE_03);
outBuffer.setShort(index + 2, outBuffer.writerIndex() - index);
return 16;
}
- private static int createPortConfigBitMask(final PortConfig config) {
- return ByteBufUtils.fillBitMaskFromMap(ImmutableMap
+ private static Integer createPortConfigBitMask(final PortConfig config) {
+ return config == null ? null : ByteBufUtils.fillBitMaskFromMap(ImmutableMap
.<Integer, Boolean>builder()
- .put(0, config.isPORTDOWN())
- .put(2, config.isNORECV())
- .put(5, config.isNOFWD())
- .put(6, config.isNOPACKETIN())
+ .put(0, config.getPORTDOWN())
+ .put(2, config.getNORECV())
+ .put(5, config.getNOFWD())
+ .put(6, config.getNOPACKETIN())
.build());
}
private static int createPortFeaturesBitMask(final PortFeatures feature) {
return ByteBufUtils.fillBitMask(0,
- feature.isTenMbHd(),
- feature.isTenMbFd(),
- feature.isHundredMbHd(),
- feature.isHundredMbFd(),
- feature.isOneGbHd(),
- feature.isOneGbFd(),
- feature.isTenGbFd(),
- feature.isFortyGbFd(),
- feature.isHundredGbFd(),
- feature.isOneTbFd(),
- feature.isOther(),
- feature.isCopper(),
- feature.isFiber(),
- feature.isAutoeng(),
- feature.isPause(),
- feature.isPauseAsym());
+ feature.getTenMbHd(),
+ feature.getTenMbFd(),
+ feature.getHundredMbHd(),
+ feature.getHundredMbFd(),
+ feature.getOneGbHd(),
+ feature.getOneGbFd(),
+ feature.getTenGbFd(),
+ feature.getFortyGbFd(),
+ feature.getHundredGbFd(),
+ feature.getOneTbFd(),
+ feature.getOther(),
+ feature.getCopper(),
+ feature.getFiber(),
+ feature.getAutoeng(),
+ feature.getPause(),
+ feature.getPauseAsym());
}
-
}