X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=extension%2Fopenflowjava-extension-nicira%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowjava%2Fnx%2Fcodec%2Fmatch%2FNsiCodec.java;h=b2eee1a3481e905602d2a9b5436bd8acbf11948f;hb=refs%2Fchanges%2F77%2F100077%2F17;hp=10c5cd3904ba5c938ee356fad6dfb13f5ca4596e;hpb=d1e8370d95c96c21499f7c2970204671af628b42;p=openflowplugin.git diff --git a/extension/openflowjava-extension-nicira/src/main/java/org/opendaylight/openflowjava/nx/codec/match/NsiCodec.java b/extension/openflowjava-extension-nicira/src/main/java/org/opendaylight/openflowjava/nx/codec/match/NsiCodec.java index 10c5cd3904..b2eee1a348 100644 --- a/extension/openflowjava-extension-nicira/src/main/java/org/opendaylight/openflowjava/nx/codec/match/NsiCodec.java +++ b/extension/openflowjava-extension-nicira/src/main/java/org/opendaylight/openflowjava/nx/codec/match/NsiCodec.java @@ -1,54 +1,61 @@ /* - * Copyright (C) 2014 Red Hat, Inc. + * Copyright (c) 2014 Red Hat, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html - * - * Authors : Madhu Venugopal */ - package org.opendaylight.openflowjava.nx.codec.match; -import io.netty.buffer.ByteBuf; -import org.opendaylight.openflowjava.nx.codec.match.AbstractMatchCodec; +import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint8; + +import io.netty.buffer.ByteBuf; +import org.opendaylight.openflowjava.nx.api.NiciraConstants; import org.opendaylight.openflowjava.protocol.api.keys.MatchEntryDeserializerKey; import org.opendaylight.openflowjava.protocol.api.keys.MatchEntrySerializerKey; import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants; -import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.MatchField; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Nxm1Class; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.OxmClassBase; -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.rev130731.oxm.fields.grouping.MatchEntriesBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ExperimenterClass; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchField; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxNsi; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.OfjAugNxMatch; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.OfjAugNxMatchBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.ofj.aug.nx.exp.match.NxExpMatchEntryValue; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.ofj.aug.nx.exp.match.nx.exp.match.entry.value.NsiCaseValue; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.ofj.aug.nx.exp.match.nx.exp.match.entry.value.NsiCaseValueBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.ofj.nxm.nx.match.nsi.grouping.NsiValues; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.ofj.nxm.nx.match.nsi.grouping.NsiValuesBuilder; +import org.opendaylight.yangtools.yang.common.Uint32; +import org.opendaylight.yangtools.yang.common.Uint8; -public class NsiCodec extends AbstractMatchCodec { +public class NsiCodec extends AbstractExperimenterMatchCodec { - private static final int VALUE_LENGTH = 1; - private static final int NXM_FIELD_CODE = 38; - public static final MatchEntrySerializerKey SERIALIZER_KEY = new MatchEntrySerializerKey<>( - EncodeConstants.OF13_VERSION_ID, Nxm1Class.class, NxmNxNsi.class); - public static final MatchEntryDeserializerKey DESERIALIZER_KEY = new MatchEntryDeserializerKey( - EncodeConstants.OF13_VERSION_ID, OxmMatchConstants.NXM_1_CLASS, NXM_FIELD_CODE); + private static final int VALUE_LENGTH = Byte.BYTES; + private static final int NXM_FIELD_CODE = 5; + public static final MatchEntrySerializerKey SERIALIZER_KEY = + createSerializerKey( + EncodeConstants.OF_VERSION_1_3, + NiciraConstants.NX_NSH_VENDOR_ID, + NxmNxNsi.class); + public static final MatchEntryDeserializerKey DESERIALIZER_KEY = + createDeserializerKey( + EncodeConstants.OF_VERSION_1_3, + NiciraConstants.NX_NSH_VENDOR_ID, + NXM_FIELD_CODE); @Override - public void serialize(MatchEntries input, ByteBuf outBuffer) { - serializeHeader(input, outBuffer); - Short nsi = input.getAugmentation(OfjAugNxMatch.class).getNsiValues().getNsi(); - outBuffer.writeByte(nsi.byteValue()); + protected void serializeValue(final NxExpMatchEntryValue value, final boolean hasMask, final ByteBuf outBuffer) { + NsiCaseValue nsiCaseValue = (NsiCaseValue) value; + NsiValues nsiValues = nsiCaseValue.getNsiValues(); + outBuffer.writeByte(nsiValues.getNsi().toJava()); + if (hasMask) { + outBuffer.writeByte(nsiValues.getMask().toJava()); + } } @Override - public MatchEntries deserialize(ByteBuf message) { - MatchEntriesBuilder matchEntriesBuilder = deserializeHeader(message); - OfjAugNxMatchBuilder augNxMatchBuilder = new OfjAugNxMatchBuilder(); - augNxMatchBuilder.setNsiValues(new NsiValuesBuilder().setNsi(message.readUnsignedByte()).build()); - matchEntriesBuilder.addAugmentation(OfjAugNxMatch.class, augNxMatchBuilder.build()); - return matchEntriesBuilder.build(); + protected NxExpMatchEntryValue deserializeValue(final ByteBuf message, final boolean hasMask) { + Uint8 value = readUint8(message); + Uint8 mask = hasMask ? readUint8(message) : null; + NsiValues nsiValues = new NsiValuesBuilder().setNsi(value).setMask(mask).build(); + return new NsiCaseValueBuilder().setNsiValues(nsiValues).build(); } @Override @@ -57,8 +64,8 @@ public class NsiCodec extends AbstractMatchCodec { } @Override - public int getOxmClassCode() { - return OxmMatchConstants.NXM_1_CLASS; + protected Uint32 getExperimenterId() { + return NiciraConstants.NX_NSH_VENDOR_ID; } @Override @@ -70,9 +77,4 @@ public class NsiCodec extends AbstractMatchCodec { public Class getNxmField() { return NxmNxNsi.class; } - - @Override - public Class getOxmClass() { - return Nxm1Class.class; - } }