package org.opendaylight.openflowjava.nx;
import org.opendaylight.openflowjava.nx.api.NiciraExtensionCodecRegistrator;
+import org.opendaylight.openflowjava.nx.codec.action.ConntrackCodec;
import org.opendaylight.openflowjava.nx.codec.action.MultipathCodec;
import org.opendaylight.openflowjava.nx.codec.action.NiciraActionCodecs;
import org.opendaylight.openflowjava.nx.codec.action.OutputRegCodec;
import org.opendaylight.openflowjava.nx.codec.match.ArpSpaCodec;
import org.opendaylight.openflowjava.nx.codec.match.ArpThaCodec;
import org.opendaylight.openflowjava.nx.codec.match.ArpTpaCodec;
+import org.opendaylight.openflowjava.nx.codec.match.CtStateCodec;
+import org.opendaylight.openflowjava.nx.codec.match.CtZoneCodec;
import org.opendaylight.openflowjava.nx.codec.match.EthDstCodec;
import org.opendaylight.openflowjava.nx.codec.match.EthSrcCodec;
import org.opendaylight.openflowjava.nx.codec.match.EthTypeCodec;
registrator.registerActionSerializer(SetNshc4Codec.SERIALIZER_KEY, NiciraActionCodecs.SET_NSC4_CODEC);
registrator.registerActionDeserializer(SetNsiCodec.DESERIALIZER_KEY, NiciraActionCodecs.SET_NSI_CODEC);
registrator.registerActionSerializer(SetNsiCodec.SERIALIZER_KEY, NiciraActionCodecs.SET_NSI_CODEC);
+ registrator.registerActionSerializer(ConntrackCodec.SERIALIZER_KEY, NiciraActionCodecs.CONNTRACK_CODEC);
+ registrator.registerActionDeserializer(ConntrackCodec.DESERIALIZER_KEY, NiciraActionCodecs.CONNTRACK_CODEC);
registrator.registerMatchEntrySerializer(Reg0Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG0_CODEC);
registrator.registerMatchEntryDeserializer(Reg0Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG0_CODEC);
registrator.registerMatchEntryDeserializer(UdpSrcCodec.DESERIALIZER_KEY, NiciraMatchCodecs.UDP_SRC_CODEC);
registrator.registerMatchEntrySerializer(UdpDstCodec.SERIALIZER_KEY, NiciraMatchCodecs.UDP_DST_CODEC);
registrator.registerMatchEntryDeserializer(UdpDstCodec.DESERIALIZER_KEY, NiciraMatchCodecs.UDP_DST_CODEC);
+ registrator.registerMatchEntrySerializer(CtStateCodec.SERIALIZER_KEY, NiciraMatchCodecs.CT_ST_CODEC);
+ registrator.registerMatchEntryDeserializer(CtStateCodec.DESERIALIZER_KEY, NiciraMatchCodecs.CT_ST_CODEC);
+ registrator.registerMatchEntrySerializer(CtZoneCodec.SERIALIZER_KEY, NiciraMatchCodecs.CT_ZONE_CODEC);
+ registrator.registerMatchEntryDeserializer(CtZoneCodec.DESERIALIZER_KEY, NiciraMatchCodecs.CT_ZONE_CODEC);
}
public void unregisterExtensions() {
registrator.unregisterActionSerializer(SetNshc3Codec.SERIALIZER_KEY);
registrator.unregisterActionDeserializer(SetNshc4Codec.DESERIALIZER_KEY);
registrator.unregisterActionSerializer(SetNshc4Codec.SERIALIZER_KEY);
+ registrator.unregisterActionSerializer(ConntrackCodec.SERIALIZER_KEY);
+ registrator.unregisterActionDeserializer(ConntrackCodec.DESERIALIZER_KEY);
registrator.unregisterMatchEntrySerializer(Reg0Codec.SERIALIZER_KEY);
registrator.unregisterMatchEntryDeserializer(Reg0Codec.DESERIALIZER_KEY);
registrator.unregisterMatchEntryDeserializer(UdpSrcCodec.DESERIALIZER_KEY);
registrator.unregisterMatchEntrySerializer(UdpDstCodec.SERIALIZER_KEY);
registrator.unregisterMatchEntryDeserializer(UdpDstCodec.DESERIALIZER_KEY);
+ registrator.unregisterMatchEntrySerializer(CtStateCodec.SERIALIZER_KEY);
+ registrator.unregisterMatchEntryDeserializer(CtStateCodec.DESERIALIZER_KEY);
+ registrator.unregisterMatchEntrySerializer(CtZoneCodec.SERIALIZER_KEY);
+ registrator.unregisterMatchEntryDeserializer(CtZoneCodec.DESERIALIZER_KEY);
}
@Override
import org.opendaylight.openflowjava.nx.codec.match.ArpSpaCodec;
import org.opendaylight.openflowjava.nx.codec.match.ArpThaCodec;
import org.opendaylight.openflowjava.nx.codec.match.ArpTpaCodec;
+import org.opendaylight.openflowjava.nx.codec.match.CtStateCodec;
+import org.opendaylight.openflowjava.nx.codec.match.CtZoneCodec;
import org.opendaylight.openflowjava.nx.codec.match.EthDstCodec;
import org.opendaylight.openflowjava.nx.codec.match.EthSrcCodec;
import org.opendaylight.openflowjava.nx.codec.match.EthTypeCodec;
public static final TcpDstCodec TCP_DST_CODEC = new TcpDstCodec();
public static final UdpSrcCodec UDP_SRC_CODEC = new UdpSrcCodec();
public static final UdpDstCodec UDP_DST_CODEC = new UdpDstCodec();
+ public static final CtStateCodec CT_ST_CODEC = new CtStateCodec();
+ public static final CtZoneCodec CT_ZONE_CODEC = new CtZoneCodec();
}
--- /dev/null
+/*
+ * Copyright (c) 2015 Hewlett-Packard Enterprise 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
+ */
+
+package org.opendaylight.openflowjava.nx.codec.action;
+
+import io.netty.buffer.ByteBuf;
+import org.opendaylight.openflowjava.nx.api.NiciraActionDeserializerKey;
+import org.opendaylight.openflowjava.nx.api.NiciraActionSerializerKey;
+import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.ActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.action.container.action.choice.ActionConntrack;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.action.container.action.choice.ActionConntrackBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.nx.action.conntrack.grouping.NxActionConntrackBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author Aswin Suryanarayanan.
+ */
+
+public class ConntrackCodec extends AbstractActionCodec {
+ private static final Logger logger = LoggerFactory.getLogger(ConntrackCodec.class);
+
+ public static final int LENGTH = 24;
+ public static final byte NXAST_CONNTRACK_SUBTYPE = 35;
+ public static final NiciraActionSerializerKey SERIALIZER_KEY =
+ new NiciraActionSerializerKey(EncodeConstants.OF13_VERSION_ID, ActionConntrack.class);
+ public static final NiciraActionDeserializerKey DESERIALIZER_KEY =
+ new NiciraActionDeserializerKey(EncodeConstants.OF13_VERSION_ID, NXAST_CONNTRACK_SUBTYPE);
+
+ @Override
+ public void serialize(final Action input, final ByteBuf outBuffer) {
+ ActionConntrack action = ((ActionConntrack) input.getActionChoice()); //getAugmentation(OfjAugNxAction.class).getActionConntrack();
+ serializeHeader(LENGTH, NXAST_CONNTRACK_SUBTYPE, outBuffer);
+
+ outBuffer.writeShort(action.getNxActionConntrack().getFlags().shortValue());
+ outBuffer.writeInt(action.getNxActionConntrack().getZoneSrc().intValue());
+ outBuffer.writeShort(action.getNxActionConntrack().getConntrackZone().shortValue());
+ outBuffer.writeByte(action.getNxActionConntrack().getRecircTable().byteValue());
+ outBuffer.writeZero(5);
+ }
+
+ @Override
+ public Action deserialize(final ByteBuf message) {
+ ActionBuilder actionBuilder = deserializeHeader(message);
+ ActionConntrackBuilder actionConntrackBuilder = new ActionConntrackBuilder();
+
+ NxActionConntrackBuilder nxActionConntrackBuilder = new NxActionConntrackBuilder();
+ nxActionConntrackBuilder.setFlags(message.readUnsignedShort());
+ nxActionConntrackBuilder.setZoneSrc(message.readUnsignedInt());
+ nxActionConntrackBuilder.setConntrackZone(message.readUnsignedShort());
+ nxActionConntrackBuilder.setRecircTable(message.readUnsignedByte());
+ message.skipBytes(5);
+ actionConntrackBuilder.setNxActionConntrack(nxActionConntrackBuilder.build());
+ actionBuilder.setActionChoice(actionConntrackBuilder.build());
+
+ return actionBuilder.build();
+ }
+}
public static final SetNshc2Codec SET_NSC2_CODEC = new SetNshc2Codec();
public static final SetNshc3Codec SET_NSC3_CODEC = new SetNshc3Codec();
public static final SetNshc4Codec SET_NSC4_CODEC = new SetNshc4Codec();
+ public static final ConntrackCodec CONNTRACK_CODEC = new ConntrackCodec();
}
--- /dev/null
+/*
+ * Copyright (c) 2015 Hewlett-Packard Enterprise 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
+ */
+
+package org.opendaylight.openflowjava.nx.codec.match;
+
+import io.netty.buffer.ByteBuf;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchField;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Nxm1Class;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OxmClassBase;
+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.entries.grouping.MatchEntryBuilder;
+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.openflowjava.nx.match.rev140421.NxmNxCtState;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.ofj.nxm.nx.match.ct.state.grouping.CtStateValuesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.oxm.container.match.entry.value.CtStateCaseValue;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.oxm.container.match.entry.value.CtStateCaseValueBuilder;
+
+/**
+ * @author Aswin Suryanarayanan.
+ */
+
+public class CtStateCodec extends AbstractMatchCodec {
+
+ private static final int VALUE_LENGTH = 8;
+ private static final int NXM_FIELD_CODE = 105;
+ public static final MatchEntrySerializerKey<Nxm1Class, NxmNxCtState> SERIALIZER_KEY = new MatchEntrySerializerKey<>(
+ EncodeConstants.OF13_VERSION_ID, Nxm1Class.class, NxmNxCtState.class);
+ public static final MatchEntryDeserializerKey DESERIALIZER_KEY = new MatchEntryDeserializerKey(
+ EncodeConstants.OF13_VERSION_ID, OxmMatchConstants.NXM_1_CLASS, NXM_FIELD_CODE);
+
+ @Override
+ public void serialize(MatchEntry input, ByteBuf outBuffer) {
+ serializeHeader(input, outBuffer);
+ CtStateCaseValue ctStateCase = ((CtStateCaseValue) input.getMatchEntryValue());
+ outBuffer.writeInt(ctStateCase.getCtStateValues().getCtState().intValue());
+ outBuffer.writeInt(ctStateCase.getCtStateValues().getMask().intValue());
+ }
+
+ @Override
+ public MatchEntry deserialize(ByteBuf message) {
+ MatchEntryBuilder matchEntryBuilder = deserializeHeader(message);
+ CtStateCaseValueBuilder caseBuilder = new CtStateCaseValueBuilder();
+ CtStateValuesBuilder ctStateValuesBuilder = new CtStateValuesBuilder();
+ ctStateValuesBuilder.setCtState(message.readUnsignedInt());
+ ctStateValuesBuilder.setMask(message.readUnsignedInt());
+ caseBuilder.setCtStateValues(ctStateValuesBuilder.build());
+ matchEntryBuilder.setMatchEntryValue(caseBuilder.build());
+ matchEntryBuilder.setHasMask(true);
+ return matchEntryBuilder.build();
+ }
+
+ @Override
+ public int getNxmFieldCode() {
+ return NXM_FIELD_CODE;
+ }
+
+ @Override
+ public int getOxmClassCode() {
+ return OxmMatchConstants.NXM_1_CLASS;
+ }
+
+ @Override
+ public int getValueLength() {
+ return VALUE_LENGTH;
+ }
+
+ @Override
+ public Class<? extends MatchField> getNxmField() {
+ return NxmNxCtState.class;
+ }
+
+ @Override
+ public Class<? extends OxmClassBase> getOxmClass() {
+ return Nxm1Class.class;
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2015 Hewlett-Packard Enterprise 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
+ */
+
+package org.opendaylight.openflowjava.nx.codec.match;
+
+import io.netty.buffer.ByteBuf;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchField;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Nxm1Class;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OxmClassBase;
+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.entries.grouping.MatchEntryBuilder;
+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.openflowjava.nx.match.rev140421.NxmNxCtZone;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.ofj.nxm.nx.match.ct.zone.grouping.CtZoneValuesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.oxm.container.match.entry.value.CtZoneCaseValue;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.oxm.container.match.entry.value.CtZoneCaseValueBuilder;
+
+/**
+ * @author Aswin Suryanarayanan.
+ */
+
+public class CtZoneCodec extends AbstractMatchCodec {
+
+ private static final int VALUE_LENGTH = 2;
+ private static final int NXM_FIELD_CODE = 106;
+ public static final MatchEntrySerializerKey<Nxm1Class, NxmNxCtZone> SERIALIZER_KEY = new MatchEntrySerializerKey<>(
+ EncodeConstants.OF13_VERSION_ID, Nxm1Class.class, NxmNxCtZone.class);
+ public static final MatchEntryDeserializerKey DESERIALIZER_KEY = new MatchEntryDeserializerKey(
+ EncodeConstants.OF13_VERSION_ID, OxmMatchConstants.NXM_1_CLASS, NXM_FIELD_CODE);
+
+ @Override
+ public void serialize(MatchEntry input, ByteBuf outBuffer) {
+ serializeHeader(input, outBuffer);
+ CtZoneCaseValue ctZoneCase = ((CtZoneCaseValue) input.getMatchEntryValue());
+ outBuffer.writeShort(ctZoneCase.getCtZoneValues().getCtZone());
+ }
+
+ @Override
+ public MatchEntry deserialize(ByteBuf message) {
+ MatchEntryBuilder matchEntryBuilder = deserializeHeader(message);
+ CtZoneCaseValueBuilder caseBuilder = new CtZoneCaseValueBuilder();
+ CtZoneValuesBuilder ctZoneValuesBuilder = new CtZoneValuesBuilder();
+ ctZoneValuesBuilder.setCtZone(message.readUnsignedShort());
+ caseBuilder.setCtZoneValues(ctZoneValuesBuilder.build());
+ matchEntryBuilder.setMatchEntryValue(caseBuilder.build());
+ return matchEntryBuilder.build();
+ }
+
+ @Override
+ public int getNxmFieldCode() {
+ return NXM_FIELD_CODE;
+ }
+
+ @Override
+ public int getOxmClassCode() {
+ return OxmMatchConstants.NXM_1_CLASS;
+ }
+
+ @Override
+ public int getValueLength() {
+ return VALUE_LENGTH;
+ }
+
+ @Override
+ public Class<? extends MatchField> getNxmField() {
+ return NxmNxCtZone.class;
+ }
+
+ @Override
+ public Class<? extends OxmClassBase> getOxmClass() {
+ return Nxm1Class.class;
+ }
+
+}
import openflow-types {prefix oft;}
import yang-ext {prefix ext; revision-date "2013-07-09";}
- description
+ description
"Nicira openflow extensions of action.";
revision "2014-04-21" {
description "Initial revision";
}
-
+
identity nxm-nx-reg-load {
base ofaction:experimenter-action-sub-type;
}
identity nxm-nx-set-nsi {
base ofaction:experimenter-action-sub-type;
}
+ identity nxm-nx-conntrack {
+ base ofaction:experimenter-action-sub-type;
+ }
grouping ofj-nx-action-reg-load-grouping {
container nx-action-reg-load {
}
}
}
-
+
grouping ofj-nx-action-set-nshc-grouping {
leaf nshc {
type uint32;
type oft:experimenter-id;
}
}
-
+
grouping ofj-nx-action-set-nshc-1-grouping {
container nx-action-set-nshc-1 {
uses ofj-nx-action-set-nshc-grouping;
}
}
+ grouping ofj-nx-action-conntrack-grouping {
+ container nx-action-conntrack {
+ leaf flags {
+ type uint16;
+ }
+ leaf zone-src {
+ type uint32;
+ }
+ leaf conntrack-zone {
+ type uint16;
+ }
+ leaf recirc-table {
+ type uint8;
+ }
+ leaf experimenter-id {
+ type oft:experimenter-id;
+ }
+ }
+ }
+
augment "/ofaction:action-container/ofaction:action-choice" {
ext:augment-identifier "ofj-aug-nx-action";
case action-reg-load {
case action-set-nshc-4 {
uses ofj-nx-action-set-nshc-4-grouping;
}
+ case action-conntrack {
+ uses ofj-nx-action-conntrack-grouping;
+ }
}
}
identity nxm-of-udp-dst {
base ofoxm:match-field;
}
+ identity nxm-nx-ct-state {
+ base ofoxm:match-field;
+ }
+ identity nxm-nx-ct-zone {
+ base ofoxm:match-field;
+ }
grouping ofj-nxm-nx-match-reg-grouping {
container reg-values {
}
}
}
-
+
grouping ofj-nxm-nx-match-nshc-grouping {
leaf nshc {
type uint32;
}
}
-
+
grouping ofj-nxm-nx-match-nshc-1-grouping {
container nshc-1-values {
uses ofj-nxm-nx-match-nshc-grouping;
}
}
}
-
+ grouping ofj-nxm-nx-match-ct-state-grouping{
+ container ct-state-values {
+ leaf ct-state {
+ type uint32;
+ }
+ leaf mask {
+ type uint32;
+ }
+ }
+ }
+ grouping ofj-nxm-nx-match-ct-zone-grouping{
+ container ct-zone-values {
+ leaf ct-zone {
+ type uint16;
+ }
+ }
+ }
augment "/ofoxm:oxm-container/ofoxm:match-entry-value" {
ext:augment-identifier "ofj-aug-nx-match";
case reg-case-value {
case udp-dst-case-value {
uses ofj-nxm-of-match-udp-dst-grouping;
}
+ case ct-state-case-value {
+ uses ofj-nxm-nx-match-ct-state-grouping;
+ }
+ case ct-zone-case-value {
+ uses ofj-nxm-nx-match-ct-zone-grouping;
+ }
}
import java.util.HashSet;
import java.util.Set;
import org.opendaylight.openflowjava.nx.api.NiciraUtil;
+import org.opendaylight.openflowjava.nx.codec.action.ConntrackCodec;
import org.opendaylight.openflowjava.nx.codec.action.MultipathCodec;
import org.opendaylight.openflowjava.nx.codec.action.OutputRegCodec;
import org.opendaylight.openflowjava.nx.codec.action.RegLoadCodec;
import org.opendaylight.openflowjava.nx.codec.match.ArpSpaCodec;
import org.opendaylight.openflowjava.nx.codec.match.ArpThaCodec;
import org.opendaylight.openflowjava.nx.codec.match.ArpTpaCodec;
+import org.opendaylight.openflowjava.nx.codec.match.CtStateCodec;
+import org.opendaylight.openflowjava.nx.codec.match.CtZoneCodec;
import org.opendaylight.openflowjava.nx.codec.match.EthDstCodec;
import org.opendaylight.openflowjava.nx.codec.match.EthSrcCodec;
import org.opendaylight.openflowjava.nx.codec.match.EthTypeCodec;
import org.opendaylight.openflowplugin.extension.api.ExtensionConverterRegistrator;
import org.opendaylight.openflowplugin.extension.api.TypeVersionKey;
import org.opendaylight.openflowplugin.extension.api.path.ActionPath;
+import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action.ConntrackConvertor;
import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action.MultipathConvertor;
import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action.OutputRegConvertor;
import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action.RegLoadConvertor;
import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.ArpSpaConvertor;
import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.ArpThaConvertor;
import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.ArpTpaConvertor;
+import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.CtStateConvertor;
+import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.CtZoneConvertor;
import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.EthDstConvertor;
import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.EthSrcConvertor;
import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.EthTypeConvertor;
import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.UdpSrcConvertor;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.ActionChoice;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.action.container.action.choice.ActionConntrack;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.action.container.action.choice.ActionMultipath;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.action.container.action.choice.ActionOutputReg;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.action.container.action.choice.ActionRegLoad;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.action.container.action.choice.ActionResubmit;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.action.container.action.choice.ActionSetNsi;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.action.container.action.choice.ActionSetNsp;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionConntrackRpcAddFlowApplyActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionMultipathRpcAddFlowApplyActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionOutputRegRpcAddFlowApplyActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionRegLoadRpcAddFlowApplyActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionSetNshc4RpcAddFlowApplyActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionSetNsiRpcAddFlowApplyActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionSetNspRpcAddFlowApplyActionsCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionConntrackRpcAddFlowWriteActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionMultipathRpcAddFlowWriteActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionOutputRegRpcAddFlowWriteActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionRegLoadRpcAddFlowWriteActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionSetNshc4RpcAddFlowWriteActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionSetNsiRpcAddFlowWriteActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionSetNspRpcAddFlowWriteActionsCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.group.input.buckets.bucket.action.action.NxActionConntrackRpcAddGroupCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.group.input.buckets.bucket.action.action.NxActionMultipathRpcAddGroupCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.group.input.buckets.bucket.action.action.NxActionOutputRegRpcAddGroupCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.group.input.buckets.bucket.action.action.NxActionRegLoadRpcAddGroupCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.group.input.buckets.bucket.action.action.NxActionSetNshc4RpcAddGroupCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.group.input.buckets.bucket.action.action.NxActionSetNsiRpcAddGroupCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.group.input.buckets.bucket.action.action.NxActionSetNspRpcAddGroupCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionConntrackNodesNodeGroupBucketsBucketActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionMultipathNodesNodeGroupBucketsBucketActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionOutputRegNodesNodeGroupBucketsBucketActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionRegLoadNodesNodeGroupBucketsBucketActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionSetNshc4NodesNodeGroupBucketsBucketActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionSetNsiNodesNodeGroupBucketsBucketActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionSetNspNodesNodeGroupBucketsBucketActionsCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionConntrackNodesNodeTableFlowApplyActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionMultipathNodesNodeTableFlowApplyActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionOutputRegNodesNodeTableFlowApplyActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionRegLoadNodesNodeTableFlowApplyActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionSetNshc4NodesNodeTableFlowApplyActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionSetNsiNodesNodeTableFlowApplyActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionSetNspNodesNodeTableFlowApplyActionsCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionConntrackNodesNodeTableFlowWriteActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionMultipathNodesNodeTableFlowWriteActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionOutputRegNodesNodeTableFlowWriteActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionRegLoadNodesNodeTableFlowWriteActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionSetNshc4NodesNodeTableFlowWriteActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionSetNsiNodesNodeTableFlowWriteActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionSetNspNodesNodeTableFlowWriteActionsCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.remove.group.input.buckets.bucket.action.action.NxActionConntrackRpcRemoveGroupCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.remove.group.input.buckets.bucket.action.action.NxActionMultipathRpcRemoveGroupCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.remove.group.input.buckets.bucket.action.action.NxActionOutputRegRpcRemoveGroupCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.remove.group.input.buckets.bucket.action.action.NxActionRegLoadRpcRemoveGroupCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.remove.group.input.buckets.bucket.action.action.NxActionSetNshc4RpcRemoveGroupCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.remove.group.input.buckets.bucket.action.action.NxActionSetNsiRpcRemoveGroupCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.remove.group.input.buckets.bucket.action.action.NxActionSetNspRpcRemoveGroupCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.original.group.buckets.bucket.action.action.NxActionConntrackRpcUpdateGroupOriginalCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.original.group.buckets.bucket.action.action.NxActionMultipathRpcUpdateGroupOriginalCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.original.group.buckets.bucket.action.action.NxActionOutputRegRpcUpdateGroupOriginalCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.original.group.buckets.bucket.action.action.NxActionRegLoadRpcUpdateGroupOriginalCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.original.group.buckets.bucket.action.action.NxActionSetNshc4RpcUpdateGroupOriginalCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.original.group.buckets.bucket.action.action.NxActionSetNsiRpcUpdateGroupOriginalCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.original.group.buckets.bucket.action.action.NxActionSetNspRpcUpdateGroupOriginalCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.updated.group.buckets.bucket.action.action.NxActionConntrackRpcUpdateGroupUpdatedCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.updated.group.buckets.bucket.action.action.NxActionMultipathRpcUpdateGroupUpdatedCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.updated.group.buckets.bucket.action.action.NxActionOutputRegRpcUpdateGroupUpdatedCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.updated.group.buckets.bucket.action.action.NxActionRegLoadRpcUpdateGroupUpdatedCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.updated.group.buckets.bucket.action.action.NxActionSetNspRpcUpdateGroupUpdatedCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxArpShaKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxArpThaKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxCtStateKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxCtZoneKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNshc1Key;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNshc2Key;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNshc3Key;
private final static TcpDstConvertor TCP_DST_CONVERTOR = new TcpDstConvertor();
private final static UdpSrcConvertor UDP_SRC_CONVERTOR = new UdpSrcConvertor();
private final static UdpDstConvertor UDP_DST_CONVERTOR = new UdpDstConvertor();
+ private final static ConntrackConvertor CONNTRACK_CONVERTOR = new ConntrackConvertor();
+ private final static CtStateConvertor CT_STATE_CONVERTOR = new CtStateConvertor();
+ private final static CtZoneConvertor CT_ZONE_CONVERTOR = new CtZoneConvertor();
@Override
public void close() {
registerAction13(NxActionSetNshc2NodesNodeTableFlowApplyActionsCase.class, SET_NSC2_CONVERTOR);
registerAction13(NxActionSetNshc3NodesNodeTableFlowApplyActionsCase.class, SET_NSC3_CONVERTOR);
registerAction13(NxActionSetNshc4NodesNodeTableFlowApplyActionsCase.class, SET_NSC4_CONVERTOR);
+ registerAction13(NxActionConntrackNodesNodeTableFlowApplyActionsCase.class, CONNTRACK_CONVERTOR);
registerAction13(NxActionRegLoadNodesNodeTableFlowWriteActionsCase.class, REG_LOAD_CONVERTOR);
registerAction13(NxActionRegMoveNodesNodeTableFlowWriteActionsCase.class, REG_MOVE_CONVERTOR);
registerAction13(NxActionSetNshc2NodesNodeTableFlowWriteActionsCase.class, SET_NSC2_CONVERTOR);
registerAction13(NxActionSetNshc3NodesNodeTableFlowWriteActionsCase.class, SET_NSC3_CONVERTOR);
registerAction13(NxActionSetNshc4NodesNodeTableFlowWriteActionsCase.class, SET_NSC4_CONVERTOR);
+ registerAction13(NxActionConntrackNodesNodeTableFlowWriteActionsCase.class, CONNTRACK_CONVERTOR);
registerAction13(NxActionRegLoadNodesNodeGroupBucketsBucketActionsCase.class, REG_LOAD_CONVERTOR);
registerAction13(NxActionRegMoveNodesNodeGroupBucketsBucketActionsCase.class, REG_MOVE_CONVERTOR);
registerAction13(NxActionSetNshc2NodesNodeGroupBucketsBucketActionsCase.class, SET_NSC2_CONVERTOR);
registerAction13(NxActionSetNshc3NodesNodeGroupBucketsBucketActionsCase.class, SET_NSC3_CONVERTOR);
registerAction13(NxActionSetNshc4NodesNodeGroupBucketsBucketActionsCase.class, SET_NSC4_CONVERTOR);
+ registerAction13(NxActionConntrackNodesNodeGroupBucketsBucketActionsCase.class, CONNTRACK_CONVERTOR);
// src=rpc-addFlow
registerAction13(NxActionRegLoadRpcAddFlowApplyActionsCase.class, REG_LOAD_CONVERTOR);
registerAction13(NxActionSetNshc2RpcAddFlowApplyActionsCase.class, SET_NSC2_CONVERTOR);
registerAction13(NxActionSetNshc3RpcAddFlowApplyActionsCase.class, SET_NSC3_CONVERTOR);
registerAction13(NxActionSetNshc4RpcAddFlowApplyActionsCase.class, SET_NSC4_CONVERTOR);
+ registerAction13(NxActionConntrackRpcAddFlowApplyActionsCase.class, CONNTRACK_CONVERTOR);
registerAction13(NxActionRegLoadRpcAddFlowWriteActionsCase.class, REG_LOAD_CONVERTOR);
registerAction13(NxActionRegMoveRpcAddFlowWriteActionsCase.class, REG_MOVE_CONVERTOR);
registerAction13(NxActionSetNshc2RpcAddFlowWriteActionsCase.class, SET_NSC2_CONVERTOR);
registerAction13(NxActionSetNshc3RpcAddFlowWriteActionsCase.class, SET_NSC3_CONVERTOR);
registerAction13(NxActionSetNshc4RpcAddFlowWriteActionsCase.class, SET_NSC4_CONVERTOR);
+ registerAction13(NxActionConntrackRpcAddFlowWriteActionsCase.class, CONNTRACK_CONVERTOR);
registerAction13(NxActionRegLoadRpcAddGroupCase.class, REG_LOAD_CONVERTOR);
registerAction13(NxActionRegLoadRpcRemoveGroupCase.class, REG_LOAD_CONVERTOR);
registerAction13(NxActionSetNshc4RpcRemoveGroupCase.class, SET_NSC4_CONVERTOR);
registerAction13(NxActionSetNshc4RpcUpdateGroupOriginalCase.class, SET_NSC4_CONVERTOR);
registerAction13(NxActionSetNshc4RpcUpdateGroupUpdatedCase.class, SET_NSC4_CONVERTOR);
+ registerAction13(NxActionConntrackRpcAddGroupCase.class, CONNTRACK_CONVERTOR);
+ registerAction13(NxActionConntrackRpcRemoveGroupCase.class, CONNTRACK_CONVERTOR);
+ registerAction13(NxActionConntrackRpcUpdateGroupOriginalCase.class, CONNTRACK_CONVERTOR);
+ registerAction13(NxActionConntrackRpcUpdateGroupUpdatedCase.class, CONNTRACK_CONVERTOR);
registerAction13(ActionRegLoad.class, REG_LOAD_CONVERTOR);
registerAction13(ActionMultipath.class, MULTIPATH_CONVERTOR);
registerAction13(ActionSetNsp.class, SET_NSP_CONVERTOR);
registerAction13(ActionSetNsi.class, SET_NSI_CONVERTOR);
+ registerAction13(ActionConntrack.class, CONNTRACK_CONVERTOR);
registrations.add(extensionConverterRegistrator.registerActionConvertor(NiciraUtil.createOfJavaKeyFrom(RegLoadCodec.SERIALIZER_KEY), REG_LOAD_CONVERTOR));
registrations.add(extensionConverterRegistrator.registerActionConvertor(NiciraUtil.createOfJavaKeyFrom(RegMoveCodec.SERIALIZER_KEY), REG_MOVE_CONVERTOR));
registrations.add(extensionConverterRegistrator.registerActionConvertor(NiciraUtil.createOfJavaKeyFrom(SetNshc2Codec.SERIALIZER_KEY), SET_NSC2_CONVERTOR));
registrations.add(extensionConverterRegistrator.registerActionConvertor(NiciraUtil.createOfJavaKeyFrom(SetNshc3Codec.SERIALIZER_KEY), SET_NSC3_CONVERTOR));
registrations.add(extensionConverterRegistrator.registerActionConvertor(NiciraUtil.createOfJavaKeyFrom(SetNshc4Codec.SERIALIZER_KEY), SET_NSC4_CONVERTOR));
+ registrations.add(extensionConverterRegistrator.registerActionConvertor(NiciraUtil.createOfJavaKeyFrom(ConntrackCodec.SERIALIZER_KEY), CONNTRACK_CONVERTOR));
registrations.add(extensionConverterRegistrator.registerMatchConvertor(new ConverterExtensionKey<>(NxmNxReg0Key.class, EncodeConstants.OF13_VERSION_ID), REG_CONVERTOR));
registrations.add(extensionConverterRegistrator.registerMatchConvertor(new ConverterExtensionKey<>(NxmNxReg1Key.class, EncodeConstants.OF13_VERSION_ID), REG_CONVERTOR));
registrations.add(extensionConverterRegistrator.registerMatchConvertor(UdpSrcCodec.SERIALIZER_KEY, UDP_SRC_CONVERTOR));
registrations.add(extensionConverterRegistrator.registerMatchConvertor(new ConverterExtensionKey<>(NxmOfUdpDstKey.class, EncodeConstants.OF13_VERSION_ID), UDP_DST_CONVERTOR));
registrations.add(extensionConverterRegistrator.registerMatchConvertor(UdpDstCodec.SERIALIZER_KEY, UDP_DST_CONVERTOR));
+ registrations.add(extensionConverterRegistrator.registerMatchConvertor(new ConverterExtensionKey<>(NxmNxCtStateKey.class, EncodeConstants.OF13_VERSION_ID), CT_STATE_CONVERTOR));
+ registrations.add(extensionConverterRegistrator.registerMatchConvertor(CtStateCodec.SERIALIZER_KEY, CT_STATE_CONVERTOR));
+ registrations.add(extensionConverterRegistrator.registerMatchConvertor(new ConverterExtensionKey<>(NxmNxCtZoneKey.class, EncodeConstants.OF13_VERSION_ID), CT_ZONE_CONVERTOR));
+ registrations.add(extensionConverterRegistrator.registerMatchConvertor(CtZoneCodec.SERIALIZER_KEY, CT_ZONE_CONVERTOR));
}
/**
--- /dev/null
+/*
+ * Copyright (c) 2015 Hewlett-Packard Enterprise 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
+ */
+
+package org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action;
+
+import com.google.common.base.Preconditions;
+import org.opendaylight.openflowplugin.extension.api.ConvertorActionFromOFJava;
+import org.opendaylight.openflowplugin.extension.api.ConvertorActionToOFJava;
+import org.opendaylight.openflowplugin.extension.api.path.ActionPath;
+import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.CodecPreconditionException;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.action.container.action.choice.ActionConntrack;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.action.container.action.choice.ActionConntrackBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.nx.action.conntrack.grouping.NxActionConntrack;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.nx.action.conntrack.grouping.NxActionConntrackBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.NxActionConntrackGrouping;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flows.statistics.update.flow.and.statistics.map.list.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionConntrackNotifFlowsStatisticsUpdateApplyActionsCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flows.statistics.update.flow.and.statistics.map.list.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionConntrackNotifFlowsStatisticsUpdateWriteActionsCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.group.desc.stats.updated.group.desc.stats.buckets.bucket.action.action.NxActionConntrackNotifGroupDescStatsUpdatedCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionConntrackNodesNodeTableFlowWriteActionsCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.conntrack.grouping.NxConntrack;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.conntrack.grouping.NxConntrackBuilder;
+
+/**
+ * @author Aswin Suryanarayanan.
+ */
+
+public class ConntrackConvertor implements
+ ConvertorActionToOFJava<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action, Action>,
+ ConvertorActionFromOFJava<Action, ActionPath> {
+
+ @Override
+ public org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action convert(final Action input, final ActionPath path) {
+ NxActionConntrack action = ((ActionConntrack) input.getActionChoice()).getNxActionConntrack();
+ NxConntrackBuilder builder = new NxConntrackBuilder();
+ builder.setFlags(action.getFlags());
+ builder.setZoneSrc(action.getZoneSrc());
+ builder.setRecircTable(action.getRecircTable());
+ builder.setConntrackZone(action.getConntrackZone());
+ return resolveAction(builder.build(), path);
+ }
+
+ private static int resolveStart(final int ofsNBints) {
+ return extractSub(ofsNBints, 10, 6);
+ }
+
+ private static int resolveEnd(final int ofsNBints) {
+ int ofs = extractSub(ofsNBints, 10, 6);
+ int nBits = extractSub(ofsNBints, 6, 0);
+ return ofs + nBits;
+ }
+
+ private static int extractSub(final int l, final int nrBits, final int offset) {
+ final int rightShifted = l >>> offset;
+ final int mask = (1 << nrBits) - 1;
+ return rightShifted & mask;
+ }
+
+ private static org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action resolveAction(final NxConntrack value, final ActionPath path) {
+ switch (path) {
+ case NODES_NODE_TABLE_FLOW_INSTRUCTIONS_INSTRUCTION_WRITEACTIONSCASE_WRITEACTIONS_ACTION_ACTION_EXTENSIONLIST_EXTENSION:
+ return new NxActionConntrackNodesNodeTableFlowWriteActionsCaseBuilder().setNxConntrack(value).build();
+ case FLOWSSTATISTICSUPDATE_FLOWANDSTATISTICSMAPLIST_INSTRUCTIONS_INSTRUCTION_INSTRUCTION_WRITEACTIONSCASE_WRITEACTIONS_ACTION_ACTION:
+ return new NxActionConntrackNotifFlowsStatisticsUpdateWriteActionsCaseBuilder().setNxConntrack(value).build();
+ case FLOWSSTATISTICSUPDATE_FLOWANDSTATISTICSMAPLIST_INSTRUCTIONS_INSTRUCTION_INSTRUCTION_APPLYACTIONSCASE_APPLYACTIONS_ACTION_ACTION:
+ return new NxActionConntrackNotifFlowsStatisticsUpdateApplyActionsCaseBuilder().setNxConntrack(value).build();
+ case GROUPDESCSTATSUPDATED_GROUPDESCSTATS_BUCKETS_BUCKET_ACTION:
+ return new NxActionConntrackNotifGroupDescStatsUpdatedCaseBuilder().setNxConntrack(value).build();
+ default:
+ throw new CodecPreconditionException(path);
+ }
+ }
+
+ @Override
+ public Action convert(final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action nxActionArg) {
+ Preconditions.checkArgument(nxActionArg instanceof NxActionConntrackGrouping);
+ NxActionConntrackGrouping nxAction = (NxActionConntrackGrouping) nxActionArg;
+
+ NxActionConntrackBuilder nxActionConntrackBuilder = new NxActionConntrackBuilder();
+ nxActionConntrackBuilder.setFlags(nxAction.getNxConntrack().getFlags());
+ nxActionConntrackBuilder.setZoneSrc(nxAction.getNxConntrack().getZoneSrc());
+ nxActionConntrackBuilder.setRecircTable(nxAction.getNxConntrack().getRecircTable());
+ nxActionConntrackBuilder.setConntrackZone(nxAction.getNxConntrack().getConntrackZone());
+ ActionConntrackBuilder actionConntrackBuilder = new ActionConntrackBuilder();
+ actionConntrackBuilder.setNxActionConntrack(nxActionConntrackBuilder.build());
+ return ActionUtil.createAction(actionConntrackBuilder.build());
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2015 Hewlett-Packard Enterprise 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
+ */
+
+package org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match;
+
+import com.google.common.base.Optional;
+
+import org.opendaylight.openflowplugin.extension.api.ConvertorFromOFJava;
+import org.opendaylight.openflowplugin.extension.api.ConvertorToOFJava;
+import org.opendaylight.openflowplugin.extension.api.ExtensionAugment;
+import org.opendaylight.openflowplugin.extension.api.path.MatchPath;
+import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.CodecPreconditionException;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Nxm1Class;
+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.entries.grouping.MatchEntryBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.ExtensionKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.general.extension.grouping.Extension;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNotifPacketIn;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNotifPacketInBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNotifSwitchFlowRemoved;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNotifSwitchFlowRemovedBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNotifUpdateFlowStats;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNotifUpdateFlowStatsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxCtStateGrouping;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxCtStateKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.nxm.nx.ct.state.grouping.NxmNxCtState;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.nxm.nx.ct.state.grouping.NxmNxCtStateBuilder;
+import org.opendaylight.yangtools.yang.binding.Augmentation;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.ofj.nxm.nx.match.ct.state.grouping.CtStateValuesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.oxm.container.match.entry.value.CtStateCaseValue;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.oxm.container.match.entry.value.CtStateCaseValueBuilder;
+
+/**
+ * @author Aswin Suryanarayanan.
+ */
+
+public class CtStateConvertor implements ConvertorToOFJava<MatchEntry>, ConvertorFromOFJava<MatchEntry, MatchPath> {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.opendaylight.openflowplugin.extension.api.ConvertorFromOFJava#convert
+ * (org.opendaylight.yangtools.yang.binding.DataContainer,
+ * org.opendaylight.openflowplugin.extension.api.path.AugmentationPath)
+ */
+ @Override
+ public ExtensionAugment<? extends Augmentation<Extension>> convert(MatchEntry input, MatchPath path) {
+ CtStateCaseValue ctStateCaseValue = ((CtStateCaseValue) input.getMatchEntryValue());
+ NxmNxCtStateBuilder ctStateBuilder = new NxmNxCtStateBuilder();
+ ctStateBuilder.setCtState(ctStateCaseValue.getCtStateValues().getCtState());
+ ctStateBuilder.setMask(ctStateCaseValue.getCtStateValues().getMask());
+ return resolveAugmentation(ctStateBuilder.build(), path,
+ NxmNxCtStateKey.class);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.opendaylight.openflowplugin.extension.api.ConvertorToOFJava#convert
+ * (org
+ * .opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general
+ * .rev140714.general.extension.grouping.Extension)
+ */
+ @Override
+ public MatchEntry convert(Extension extension) {
+ Optional<NxmNxCtStateGrouping> matchGrouping = MatchUtil.ctStateResolver.getExtension(extension);
+ if (!matchGrouping.isPresent()) {
+ throw new CodecPreconditionException(extension);
+ }
+ CtStateCaseValueBuilder ctStateCaseValueBuilder = new CtStateCaseValueBuilder();
+ CtStateValuesBuilder ctStateValuesBuilder = new CtStateValuesBuilder();
+ ctStateValuesBuilder.setCtState(matchGrouping.get().getNxmNxCtState().getCtState());
+ ctStateValuesBuilder.setMask(matchGrouping.get().getNxmNxCtState().getMask());
+ ctStateCaseValueBuilder.setCtStateValues(ctStateValuesBuilder.build());
+ MatchEntryBuilder ofMatch = MatchUtil
+ .createDefaultMatchEntryBuilder(org.opendaylight.yang.gen.v1.urn
+ .opendaylight.openflowjava.nx.match.rev140421.NxmNxCtState.class,
+ Nxm1Class.class, ctStateCaseValueBuilder.build());
+ ofMatch.setHasMask(true);
+ return ofMatch.build();
+ }
+
+ private static ExtensionAugment<? extends Augmentation<Extension>> resolveAugmentation(NxmNxCtState value,
+ MatchPath path, Class<? extends ExtensionKey> key) {
+ switch (path) {
+ case FLOWSSTATISTICSUPDATE_FLOWANDSTATISTICSMAPLIST_MATCH:
+ return new ExtensionAugment<>(NxAugMatchNotifUpdateFlowStats.class,
+ new NxAugMatchNotifUpdateFlowStatsBuilder().setNxmNxCtState(value).build(), key);
+ case PACKETRECEIVED_MATCH:
+ return new ExtensionAugment<>(NxAugMatchNotifPacketIn.class, new NxAugMatchNotifPacketInBuilder()
+ .setNxmNxCtState(value).build(), key);
+ case SWITCHFLOWREMOVED_MATCH:
+ return new ExtensionAugment<>(NxAugMatchNotifSwitchFlowRemoved.class,
+ new NxAugMatchNotifSwitchFlowRemovedBuilder().setNxmNxCtState(value).build(), key);
+ default:
+ throw new CodecPreconditionException(path);
+ }
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2015 Hewlett-Packard Enterprise 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
+ */
+
+package org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match;
+
+import com.google.common.base.Optional;
+
+import org.opendaylight.openflowplugin.extension.api.ConvertorFromOFJava;
+import org.opendaylight.openflowplugin.extension.api.ConvertorToOFJava;
+import org.opendaylight.openflowplugin.extension.api.ExtensionAugment;
+import org.opendaylight.openflowplugin.extension.api.path.MatchPath;
+import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.CodecPreconditionException;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Nxm1Class;
+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.entries.grouping.MatchEntryBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.ExtensionKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.general.extension.grouping.Extension;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNotifPacketIn;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNotifPacketInBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNotifSwitchFlowRemoved;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNotifSwitchFlowRemovedBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNotifUpdateFlowStats;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNotifUpdateFlowStatsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxCtZoneGrouping;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxCtZoneKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.nxm.nx.ct.zone.grouping.NxmNxCtZone;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.nxm.nx.ct.zone.grouping.NxmNxCtZoneBuilder;
+import org.opendaylight.yangtools.yang.binding.Augmentation;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.ofj.nxm.nx.match.ct.zone.grouping.CtZoneValuesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.oxm.container.match.entry.value.CtZoneCaseValue;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.oxm.container.match.entry.value.CtZoneCaseValueBuilder;
+
+/**
+ * @author Aswin Suryanarayanan.
+ */
+
+public class CtZoneConvertor implements ConvertorToOFJava<MatchEntry>, ConvertorFromOFJava<MatchEntry, MatchPath> {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.opendaylight.openflowplugin.extension.api.ConvertorFromOFJava#convert
+ * (org.opendaylight.yangtools.yang.binding.DataContainer,
+ * org.opendaylight.openflowplugin.extension.api.path.AugmentationPath)
+ */
+ @Override
+ public ExtensionAugment<? extends Augmentation<Extension>> convert(MatchEntry input, MatchPath path) {
+ CtZoneCaseValue ctZoneCaseValue = ((CtZoneCaseValue) input.getMatchEntryValue());
+ NxmNxCtZoneBuilder ctZoneBuilder = new NxmNxCtZoneBuilder();
+ ctZoneBuilder.setCtZone(ctZoneCaseValue.getCtZoneValues().getCtZone());
+ return resolveAugmentation(ctZoneBuilder.build(), path,
+ NxmNxCtZoneKey.class);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.opendaylight.openflowplugin.extension.api.ConvertorToOFJava#convert
+ * (org
+ * .opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general
+ * .rev140714.general.extension.grouping.Extension)
+ */
+ @Override
+ public MatchEntry convert(Extension extension) {
+ Optional<NxmNxCtZoneGrouping> matchGrouping = MatchUtil.ctZoneResolver.getExtension(extension);
+ if (!matchGrouping.isPresent()) {
+ throw new CodecPreconditionException(extension);
+ }
+ CtZoneCaseValueBuilder ctZoneCaseValueBuilder = new CtZoneCaseValueBuilder();
+ CtZoneValuesBuilder ctZoneValuesBuilder = new CtZoneValuesBuilder();
+ ctZoneValuesBuilder.setCtZone(matchGrouping.get().getNxmNxCtZone().getCtZone());
+ ctZoneCaseValueBuilder.setCtZoneValues(ctZoneValuesBuilder.build());
+ MatchEntryBuilder ofMatch = MatchUtil
+ .createDefaultMatchEntryBuilder(org.opendaylight.yang.gen.v1.urn
+ .opendaylight.openflowjava.nx.match.rev140421.NxmNxCtZone.class,
+ Nxm1Class.class, ctZoneCaseValueBuilder.build());
+ return ofMatch.build();
+ }
+
+ private static ExtensionAugment<? extends Augmentation<Extension>> resolveAugmentation(NxmNxCtZone value,
+ MatchPath path, Class<? extends ExtensionKey> key) {
+ switch (path) {
+ case FLOWSSTATISTICSUPDATE_FLOWANDSTATISTICSMAPLIST_MATCH:
+ return new ExtensionAugment<>(NxAugMatchNotifUpdateFlowStats.class,
+ new NxAugMatchNotifUpdateFlowStatsBuilder().setNxmNxCtZone(value).build(), key);
+ case PACKETRECEIVED_MATCH:
+ return new ExtensionAugment<>(NxAugMatchNotifPacketIn.class, new NxAugMatchNotifPacketInBuilder()
+ .setNxmNxCtZone(value).build(), key);
+ case SWITCHFLOWREMOVED_MATCH:
+ return new ExtensionAugment<>(NxAugMatchNotifSwitchFlowRemoved.class,
+ new NxAugMatchNotifSwitchFlowRemovedBuilder().setNxmNxCtZone(value).build(), key);
+ default:
+ throw new CodecPreconditionException(path);
+ }
+ }
+}
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchRpcUpdateFlowUpdated;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxArpShaGrouping;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxArpThaGrouping;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxCtStateGrouping;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxCtZoneGrouping;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNshc1Grouping;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNshc2Grouping;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNshc3Grouping;
NxmOfUdpSrcGrouping.class);
public final static GroupingResolver<NxmOfUdpDstGrouping, Extension> udpDstResolver = new GroupingResolver<>(
NxmOfUdpDstGrouping.class);
+ public final static GroupingResolver<NxmNxCtStateGrouping, Extension> ctStateResolver = new GroupingResolver<>(
+ NxmNxCtStateGrouping.class);
+ public final static GroupingResolver<NxmNxCtZoneGrouping, Extension> ctZoneResolver = new GroupingResolver<>(
+ NxmNxCtZoneGrouping.class);
static {
tcpDstResolver.setAugmentations(augmentationsOfExtension);
udpSrcResolver.setAugmentations(augmentationsOfExtension);
udpDstResolver.setAugmentations(augmentationsOfExtension);
+ ctStateResolver.setAugmentations(augmentationsOfExtension);
+ ctZoneResolver.setAugmentations(augmentationsOfExtension);
}
namespace "urn:opendaylight:openflowplugin:extension:nicira:action";
prefix "openflowplugin-nicira-action";
-
+
import yang-ext {prefix ext; revision-date "2013-07-09";}
import flow-node-inventory {prefix fni; revision-date 2013-08-19; }
import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
import openflow-action {prefix ofaction;revision-date "2015-02-03";}
import nicira-action {prefix nicira-action;revision-date "2014-04-21";}
- description
+ description
"Nicira openflow action extensions.";
revision "2014-07-14" {
description "Initial revision";
}
-
+
identity nx-action-reg-load-key {
base ext-gen:extension-key;
}
}
}
}
-
+
grouping src-choice-grouping {
choice src-choice {
case src-nx-reg-case {
}
}
}
-
+
grouping range-grouping {
leaf start {
description "Include value.";
type uint16;
}
}
-
+
grouping nx-action-reg-load-grouping {
container nx-reg-load {
container dst {
}
}
}
-
+
grouping nx-action-reg-move-grouping {
container nx-reg-move {
container src {
grouping nx-action-output-reg-grouping {
container nx-output-reg {
container src {
- description "Choose the register with the OpenFlow output port, using the number of
+ description "Choose the register with the OpenFlow output port, using the number of
bits specified from the register.";
uses src-choice-grouping;
leaf ofs_nbits {
}
}
}
-
+
grouping nx-action-set-nshc-grouping {
leaf nshc {
type uint32;
}
}
-
+
grouping nx-action-set-nshc-1-grouping {
container nx-set-nshc-1 {
description "Sets NSC1 header";
}
}
+ grouping nx-action-conntrack-grouping {
+ container nx-conntrack {
+ leaf flags {
+ type uint16;
+ }
+ leaf zone-src {
+ type uint32;
+ }
+ leaf conntrack-zone {
+ type uint16;
+ }
+ leaf recirc-table {
+ type uint8;
+ }
+ }
+ }
// ACTION augmentations
// RPCS
augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
uses nx-action-set-nsi-grouping;
}
}
+ augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
+ case nx-action-conntrack-rpc-add-flow-write-actions-case {
+ uses nx-action-conntrack-grouping;
+ }
+ }
augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
case nx-action-reg-load-rpc-add-flow-apply-actions-case {
uses nx-action-set-nshc-3-grouping;
}
}
-
+
augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
case nx-action-set-nshc-4-rpc-add-flow-apply-actions-case {
uses nx-action-set-nshc-4-grouping;
}
}
-
+ augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
+ case nx-action-conntrack-rpc-add-flow-apply-actions-case {
+ uses nx-action-conntrack-grouping;
+ }
+ }
+
augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
case nx-action-set-nsi-rpc-add-flow-apply-actions-case {
uses nx-action-set-nsi-grouping;
}
}
-
+
augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
case "nx-action-reg-load-rpc-remove-flow-write-actions-case" {
uses nx-action-reg-load-grouping;
uses nx-action-set-nsi-grouping;
}
}
+ augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
+ case nx-action-conntrack-rpc-remove-flow-write-actions-case {
+ uses nx-action-conntrack-grouping;
+ }
+ }
augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
case "nx-action-reg-load-rpc-remove-flow-apply-actions-case" {
uses nx-action-set-nsi-grouping;
}
}
-
+ augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
+ case nx-action-conntrack-rpc-remove-flow-apply-actions-case {
+ uses nx-action-conntrack-grouping;
+ }
+ }
+
augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
case "nx-action-reg-load-rpc-update-flow-original-write-actions-case" {
uses nx-action-reg-load-grouping;
uses nx-action-set-nsi-grouping;
}
}
+ augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
+ case "nx-action-conntrack-rpc-update-flow-original-write-actions-case" {
+ uses nx-action-conntrack-grouping;
+ }
+ }
augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
case "nx-action-reg-load-rpc-update-flow-original-apply-actions-case" {
uses nx-action-set-nsi-grouping;
}
}
+ augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
+ case "nx-action-conntrack-rpc-update-flow-original-apply-actions-case" {
+ uses nx-action-conntrack-grouping;
+ }
+ }
augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
case "nx-action-reg-load-rpc-update-flow-updated-write-actions-case" {
uses nx-action-set-nsi-grouping;
}
}
+ augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
+ case "nx-action-conntrack-rpc-update-flow-updated-write-actions-case" {
+ uses nx-action-conntrack-grouping;
+ }
+ }
augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
case "nx-action-reg-load-rpc-update-flow-updated-apply-actions-case" {
uses nx-action-set-nsi-grouping;
}
}
-
+ augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
+ case "nx-action-conntrack-rpc-update-flow-updated-apply-actions-case" {
+ uses nx-action-conntrack-grouping;
+ }
+ }
+
augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
case "nx-action-reg-load-rpc-add-group-case" {
uses nx-action-reg-load-grouping;
uses nx-action-set-nsi-grouping;
}
}
-
+ augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
+ case "nx-action-conntrack-rpc-add-group-case" {
+ uses nx-action-conntrack-grouping;
+ }
+ }
+
augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
case "nx-action-reg-load-rpc-remove-group-case" {
uses nx-action-reg-load-grouping;
uses nx-action-set-nsi-grouping;
}
}
-
+ augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
+ case "nx-action-conntrack-rpc-remove-group-case" {
+ uses nx-action-conntrack-grouping;
+ }
+ }
+
augment "/sal-group:update-group/sal-group:input/sal-group:original-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
case "nx-action-reg-load-rpc-update-group-original-case" {
uses nx-action-reg-load-grouping;
uses nx-action-set-nsi-grouping;
}
}
+ augment "/sal-group:update-group/sal-group:input/sal-group:original-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
+ case "nx-action-conntrack-rpc-update-group-original-case" {
+ uses nx-action-conntrack-grouping;
+ }
+ }
augment "/sal-group:update-group/sal-group:input/sal-group:updated-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
case "nx-action-reg-load-rpc-update-group-updated-case" {
uses nx-action-set-nsi-grouping;
}
}
-
+ augment "/sal-group:update-group/sal-group:input/sal-group:updated-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
+ case "nx-action-conntrack-rpc-update-group-updated-case" {
+ uses nx-action-conntrack-grouping;
+ }
+ }
+
augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
case "nx-action-reg-load-rpc-transmit-packet-case" {
uses nx-action-reg-load-grouping;
uses nx-action-set-nsi-grouping;
}
}
-
+ augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
+ case "nx-action-conntrack-rpc-transmit-packet-case" {
+ uses nx-action-conntrack-grouping;
+ }
+ }
+
// DATA
augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:write-actions-case/fni:write-actions/fni:action/fni:action" {
case "nx-action-reg-load-nodes-node-table-flow-write-actions-case" {
uses nx-action-set-nsi-grouping;
}
}
+ augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:write-actions-case/fni:write-actions/fni:action/fni:action" {
+ case "nx-action-conntrack-nodes-node-table-flow-write-actions-case" {
+ uses nx-action-conntrack-grouping;
+ }
+ }
augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:apply-actions-case/fni:apply-actions/fni:action/fni:action" {
case "nx-action-reg-load-nodes-node-table-flow-apply-actions-case" {
uses nx-action-set-nsi-grouping;
}
}
-
+ augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:apply-actions-case/fni:apply-actions/fni:action/fni:action" {
+ case "nx-action-conntrack-nodes-node-table-flow-apply-actions-case" {
+ uses nx-action-conntrack-grouping;
+ }
+ }
+
augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
case "nx-action-reg-load-nodes-node-group-buckets-bucket-actions-case" {
uses nx-action-reg-load-grouping;
uses nx-action-set-nsi-grouping;
}
}
-
+ augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
+ case "nx-action-conntrack-nodes-node-group-buckets-bucket-actions-case" {
+ uses nx-action-conntrack-grouping;
+ }
+ }
+
// NOTIFICATIONS
augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:write-actions-case/odl-flow-stats:write-actions/odl-flow-stats:action/odl-flow-stats:action" {
case "nx-action-reg-load-notif-flows-statistics-update-write-actions-case" {
uses nx-action-set-nsi-grouping;
}
}
+ augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:write-actions-case/odl-flow-stats:write-actions/odl-flow-stats:action/odl-flow-stats:action" {
+ case "nx-action-conntrack-notif-flows-statistics-update-write-actions-case" {
+ uses nx-action-conntrack-grouping;
+ }
+ }
augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:apply-actions-case/odl-flow-stats:apply-actions/odl-flow-stats:action/odl-flow-stats:action" {
case "nx-action-reg-load-notif-flows-statistics-update-apply-actions-case" {
uses nx-action-set-nsi-grouping;
}
}
-
+ augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:apply-actions-case/odl-flow-stats:apply-actions/odl-flow-stats:action/odl-flow-stats:action" {
+ case "nx-action-conntrack-notif-flows-statistics-update-apply-actions-case" {
+ uses nx-action-conntrack-grouping;
+ }
+ }
+
augment "/odl-group-stats:group-desc-stats-updated/odl-group-stats:group-desc-stats/odl-group-stats:buckets/odl-group-stats:bucket/odl-group-stats:action/odl-group-stats:action" {
case "nx-action-reg-load-notif-group-desc-stats-updated-case" {
uses nx-action-reg-load-grouping;
uses nx-action-set-nsi-grouping;
}
}
+ augment "/odl-group-stats:group-desc-stats-updated/odl-group-stats:group-desc-stats/odl-group-stats:buckets/odl-group-stats:bucket/odl-group-stats:action/odl-group-stats:action" {
+ case "nx-action-conntrack-notif-group-desc-stats-updated-case" {
+ uses nx-action-conntrack-grouping;
+ }
+ }
}
import ietf-inet-types {prefix inet; revision-date "2010-09-24";}
import ietf-yang-types {prefix yang; revision-date "2010-09-24";}
- description
+ description
"Nicira openflow match extensions.";
revision "2014-07-14" {
description "Initial revision";
}
-
+
identity nxm-nx-reg0-key {
base ext-gen:extension-key;
}
identity nxm-of-udp-dst-key {
base ext-gen:extension-key;
}
+ identity nxm-nx-ct-state-key {
+ base ext-gen:extension-key;
+ }
+ identity nxm-nx-ct-zone-key {
+ base ext-gen:extension-key;
+ }
grouping ipv4-address-grouping {
leaf ipv4-address {
type inet:ipv4-address;
grouping nxm-of-tcp-dst-grouping {
container nxm-of-tcp-dst {
leaf port {
- type inet:port-number;
+ type inet:port-number;
}
leaf mask {
type uint16;
}
}
}
+ grouping nxm-nx-ct-state-grouping {
+ container nxm-nx-ct-state {
+ leaf ct-state {
+ type uint32;
+ }
+ leaf mask {
+ type uint32;
+ }
+ }
+ }
+ grouping nxm-nx-ct-zone-grouping {
+ container nxm-nx-ct-zone {
+ leaf ct-zone {
+ type uint16;
+ }
+ }
+ }
+
-
grouping all-matches-grouping {
uses nxm-nx-reg-grouping;
uses nxm-nx-tun-id-grouping;
uses nxm-of-tcp-dst-grouping;
uses nxm-of-udp-src-grouping;
uses nxm-of-udp-dst-grouping;
+ uses nxm-nx-ct-state-grouping;
+ uses nxm-nx-ct-zone-grouping;
}
// MATCH augmentations
ext:augment-identifier "nx-aug-match-rpc-update-flow-updated";
uses all-matches-grouping;
}
-
+
// DATA
augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:match/ext-gen:extension-list/ext-gen:extension" {
ext:augment-identifier "nx-aug-match-nodes-node-table-flow";
uses all-matches-grouping;
}
-
+
// NOTIFICATIONS
augment "/sal-flow:switch-flow-removed/sal-flow:match/ext-gen:extension-list/ext-gen:extension" {
ext:augment-identifier "nx-aug-match-notif-switch-flow-removed";