X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openflow-protocol-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowjava%2Fprotocol%2Fimpl%2Futil%2FOF13MatchSerializer.java;h=32ecb5de7f058c174b81d2129e7c693625e14625;hb=29a2a074c78708f6d18583779ece96bb6573f0c6;hp=e2196daf12377cff9621fa80720e88391c7e28ef;hpb=37cf2e565f6ec0f86f65b35898091fcf279753a5;p=openflowjava.git diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13MatchSerializer.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13MatchSerializer.java index e2196daf..32ecb5de 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13MatchSerializer.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13MatchSerializer.java @@ -12,16 +12,17 @@ import io.netty.buffer.ByteBuf; import java.util.List; -import org.opendaylight.openflowjava.protocol.api.extensibility.EnhancedMessageTypeKey; import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer; -import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector; import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry; +import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector; +import org.opendaylight.openflowjava.protocol.api.keys.MatchEntrySerializerKey; import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants; -import org.opendaylight.openflowjava.util.ByteBufUtils; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.oxm.container.match.entry.value.ExperimenterIdCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.StandardMatchType; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.OxmMatchType; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.match.grouping.Match; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.grouping.MatchEntries; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ExperimenterClass; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OxmMatchType; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntry; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.Match; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,13 +47,13 @@ public class OF13MatchSerializer implements OFSerializer, SerializerRegis serializeType(match, outBuffer); int matchLengthIndex = outBuffer.writerIndex(); outBuffer.writeShort(EncodeConstants.EMPTY_LENGTH); - serializeMatchEntries(match.getMatchEntries(), outBuffer); + serializeMatchEntries(match.getMatchEntry(), outBuffer); // Length of ofp_match (excluding padding) int matchLength = outBuffer.writerIndex() - matchStartIndex; outBuffer.setShort(matchLengthIndex, matchLength); int paddingRemainder = matchLength % EncodeConstants.PADDING; if (paddingRemainder != 0) { - ByteBufUtils.padBuffer(EncodeConstants.PADDING - paddingRemainder, outBuffer); + outBuffer.writeZero(EncodeConstants.PADDING - paddingRemainder); } } @@ -69,15 +70,22 @@ public class OF13MatchSerializer implements OFSerializer, SerializerRegis * @param matchEntries list of match entries (oxm_fields) * @param out output ByteBuf */ - public void serializeMatchEntries(List matchEntries, ByteBuf out) { + public void serializeMatchEntries(List matchEntries, ByteBuf out) { if (matchEntries == null) { LOGGER.debug("Match entries are null"); return; } - for (MatchEntries entry : matchEntries) { - OFSerializer entrySerializer = registry.getSerializer( - new EnhancedMessageTypeKey<>(EncodeConstants.OF13_VERSION_ID, entry.getOxmClass(), - entry.getOxmMatchField())); + for (MatchEntry entry : matchEntries) { + + MatchEntrySerializerKey key = new MatchEntrySerializerKey<>( + EncodeConstants.OF13_VERSION_ID, entry.getOxmClass(), entry.getOxmMatchField()); + if (entry.getOxmClass().equals(ExperimenterClass.class)) { + ExperimenterIdCase entryValue = (ExperimenterIdCase) entry.getMatchEntryValue(); + key.setExperimenterId(entryValue.getExperimenter().getExperimenter().getValue()); + } else { + key.setExperimenterId(null); + } + OFSerializer entrySerializer = registry.getSerializer(key); entrySerializer.serialize(entry, out); } }