import org.opendaylight.openflowjava.nx.api.NiciraExtensionCodecRegistrator;
import org.opendaylight.openflowjava.nx.codec.action.NiciraActionCodecs;
+import org.opendaylight.openflowjava.nx.codec.action.OutputRegCodec;
import org.opendaylight.openflowjava.nx.codec.action.RegLoadCodec;
import org.opendaylight.openflowjava.nx.codec.action.RegMoveCodec;
import org.opendaylight.openflowjava.nx.codec.match.ArpOpCodec;
registrator.registerActionSerializer(RegLoadCodec.SERIALIZER_KEY, NiciraActionCodecs.REG_LOAD_CODEC);
registrator.registerActionDeserializer(RegMoveCodec.DESERIALIZER_KEY, NiciraActionCodecs.REG_MOVE_CODEC);
registrator.registerActionSerializer(RegMoveCodec.SERIALIZER_KEY, NiciraActionCodecs.REG_MOVE_CODEC);
+ registrator.registerActionDeserializer(OutputRegCodec.DESERIALIZER_KEY, NiciraActionCodecs.OUTPUT_REG_CODEC);
+ registrator.registerActionSerializer(OutputRegCodec.SERIALIZER_KEY, NiciraActionCodecs.OUTPUT_REG_CODEC);
registrator.registerMatchEntrySerializer(Reg0Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG0_CODEC);
registrator.registerMatchEntryDeserializer(Reg0Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG0_CODEC);
registrator.registerMatchEntrySerializer(Reg1Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG1_CODEC);
registrator.unregisterActionSerializer(RegLoadCodec.SERIALIZER_KEY);
registrator.unregisterActionDeserializer(RegMoveCodec.DESERIALIZER_KEY);
registrator.unregisterActionSerializer(RegMoveCodec.SERIALIZER_KEY);
+ registrator.unregisterActionDeserializer(OutputRegCodec.DESERIALIZER_KEY);
+ registrator.unregisterActionSerializer(OutputRegCodec.SERIALIZER_KEY);
registrator.unregisterMatchEntrySerializer(Reg0Codec.SERIALIZER_KEY);
registrator.unregisterMatchEntryDeserializer(Reg0Codec.DESERIALIZER_KEY);
registrator.unregisterMatchEntrySerializer(Reg1Codec.SERIALIZER_KEY);
public static final RegMoveCodec REG_MOVE_CODEC = new RegMoveCodec();
public static final RegLoadCodec REG_LOAD_CODEC = new RegLoadCodec();
+ public static final OutputRegCodec OUTPUT_REG_CODEC = new OutputRegCodec();
}
--- /dev/null
+/**
+ * Copyright (c) 2014 Cisco Systems, 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
+ */
+
+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.augments.rev131002.ExperimenterIdAction;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.NxmNxOutputReg;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.OfjAugNxAction;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.OfjAugNxActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.nx.action.output.reg.grouping.ActionOutputReg;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.nx.action.output.reg.grouping.ActionOutputRegBuilder;
+
+/**
+ * Codec for the Nicira OutputRegAction
+ * @author readams
+ */
+public class OutputRegCodec extends AbstractActionCodec {
+ public static final int LENGTH = 24;
+ public static final byte SUBTYPE = 15; // NXAST_OUTPUT_REG
+ public static final NiciraActionSerializerKey SERIALIZER_KEY =
+ new NiciraActionSerializerKey(EncodeConstants.OF13_VERSION_ID, NxmNxOutputReg.class);
+ public static final NiciraActionDeserializerKey DESERIALIZER_KEY =
+ new NiciraActionDeserializerKey(EncodeConstants.OF13_VERSION_ID, SUBTYPE);
+
+ @Override
+ public void serialize(Action input, ByteBuf outBuffer) {
+ ActionOutputReg action = input.getAugmentation(OfjAugNxAction.class).getActionOutputReg();
+ serializeHeader(LENGTH, SUBTYPE, outBuffer);
+ outBuffer.writeShort(action.getNBits().shortValue());
+ outBuffer.writeInt(action.getSrc().intValue());
+ outBuffer.writeShort(action.getMaxLen().shortValue());
+ outBuffer.writeZero(6);
+ }
+
+ @Override
+ public Action deserialize(ByteBuf message) {
+ ActionBuilder actionBuilder = deserializeHeader(message);
+ ActionOutputRegBuilder builder = new ActionOutputRegBuilder();
+ builder.setNBits(message.readUnsignedShort());
+ builder.setSrc(message.readUnsignedInt());
+ builder.setMaxLen(message.readUnsignedShort());
+ OfjAugNxActionBuilder augNxActionBuilder = new OfjAugNxActionBuilder();
+ augNxActionBuilder.setActionOutputReg(builder.build());
+ actionBuilder.addAugmentation(ExperimenterIdAction.class,
+ createExperimenterIdAction(NxmNxOutputReg.class));
+ actionBuilder.addAugmentation(OfjAugNxAction.class, augNxActionBuilder.build());
+ return actionBuilder.build();
+ }
+
+}
identity nxm-nx-reg-move {
base ofaction:experimenter-action-sub-type;
}
+ identity nxm-nx-output-reg {
+ base ofaction:experimenter-action-sub-type;
+ }
grouping ofj-nx-action-reg-load-grouping {
container action-reg-load {
}
}
}
+ grouping ofj-nx-action-output-reg-grouping {
+ container action-output-reg {
+ leaf n_bits {
+ type uint16;
+ }
+ leaf src {
+ type uint32;
+ }
+ leaf max_len {
+ type uint16;
+ }
+ }
+ }
augment "/ofaction:actions-container/ofaction:action" {
ext:augment-identifier "ofj-aug-nx-action";
uses ofj-nx-action-reg-load-grouping;
uses ofj-nx-action-reg-move-grouping;
+ uses ofj-nx-action-output-reg-grouping;
}
}
\ No newline at end of file
import java.util.Set;
import org.opendaylight.openflowjava.nx.api.NiciraUtil;
+import org.opendaylight.openflowjava.nx.codec.action.OutputRegCodec;
import org.opendaylight.openflowjava.nx.codec.action.RegLoadCodec;
import org.opendaylight.openflowjava.nx.codec.action.RegMoveCodec;
import org.opendaylight.openflowjava.nx.codec.match.ArpOpCodec;
import org.opendaylight.openflowplugin.extension.api.ConvertorActionToOFJava;
import org.opendaylight.openflowplugin.extension.api.ExtensionConverterRegistrator;
import org.opendaylight.openflowplugin.extension.api.TypeVersionKey;
+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.action.RegMoveConvertor;
import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.ArpOpConvertor;
import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.TunIpv4DstConvertor;
import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.TunIpv4SrcConvertor;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action;
+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.NxActionRegMoveRpcAddFlowApplyActionsCase;
+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.NxActionRegMoveRpcAddFlowWriteActionsCase;
+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.NxActionRegMoveNodesNodeTableFlowApplyActionsCase;
+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.NxActionRegMoveNodesNodeTableFlowWriteActionsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxArpShaKey;
private final static TunIpv4SrcConvertor TUN_IPV4_SRC_CONVERTOR = new TunIpv4SrcConvertor();
private final static RegLoadConvertor REG_LOAD_CONVERTOR = new RegLoadConvertor();
private final static RegMoveConvertor REG_MOVE_CONVERTOR = new RegMoveConvertor();
+ private final static OutputRegConvertor OUTPUT_REG_CONVERTOR = new OutputRegConvertor();
private final static EthTypeConvertor ETH_TYPE_CONVERTOR = new EthTypeConvertor();
@Override
// src=dataStore/config
registerAction13(NxActionRegLoadNodesNodeTableFlowApplyActionsCase.class, REG_LOAD_CONVERTOR);
registerAction13(NxActionRegMoveNodesNodeTableFlowApplyActionsCase.class, REG_MOVE_CONVERTOR);
+ registerAction13(NxActionOutputRegNodesNodeTableFlowApplyActionsCase.class, OUTPUT_REG_CONVERTOR);
registerAction13(NxActionRegLoadNodesNodeTableFlowWriteActionsCase.class, REG_LOAD_CONVERTOR);
registerAction13(NxActionRegMoveNodesNodeTableFlowWriteActionsCase.class, REG_MOVE_CONVERTOR);
+ registerAction13(NxActionOutputRegNodesNodeTableFlowWriteActionsCase.class, OUTPUT_REG_CONVERTOR);
// src=rpc-addFlow
registerAction13(NxActionRegLoadRpcAddFlowApplyActionsCase.class, REG_LOAD_CONVERTOR);
registerAction13(NxActionRegMoveRpcAddFlowApplyActionsCase.class, REG_MOVE_CONVERTOR);
+ registerAction13(NxActionOutputRegRpcAddFlowApplyActionsCase.class, OUTPUT_REG_CONVERTOR);
registerAction13(NxActionRegLoadRpcAddFlowWriteActionsCase.class, REG_LOAD_CONVERTOR);
registerAction13(NxActionRegMoveRpcAddFlowWriteActionsCase.class, REG_MOVE_CONVERTOR);
+ registerAction13(NxActionOutputRegRpcAddFlowWriteActionsCase.class, OUTPUT_REG_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(OutputRegCodec.SERIALIZER_KEY), OUTPUT_REG_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));
--- /dev/null
+/**
+ * Copyright (c) 2014 Cisco Systems, 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
+ */
+
+package org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action;
+
+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.rev130731.actions.grouping.Action;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.NxmNxOutputReg;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.OfjAugNxAction;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.OfjAugNxActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.nx.action.output.reg.grouping.ActionOutputReg;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.nx.action.output.reg.grouping.ActionOutputRegBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.NxActionOutputRegGrouping;
+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.NxActionOutputRegNotifFlowsStatisticsUpdateApplyActionsCaseBuilder;
+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.NxActionOutputRegNotifFlowsStatisticsUpdateWriteActionsCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.group.desc.stats.updated.group.desc.stats.buckets.bucket.action.action.NxActionOutputRegNotifGroupDescStatsUpdatedCaseBuilder;
+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.NxActionOutputRegNodesNodeTableFlowWriteActionsCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.output.reg.grouping.NxOutputReg;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.output.reg.grouping.NxOutputRegBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.output.reg.grouping.nx.output.reg.Src;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.output.reg.grouping.nx.output.reg.SrcBuilder;
+
+import com.google.common.base.Preconditions;
+
+/**
+ * Convert to/from openflowplugin model to openflowjava model for
+ * OutputReg action
+ * @author readams
+ */
+public class OutputRegConvertor 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(Action input, ActionPath path) {
+ ActionOutputReg action = input.getAugmentation(OfjAugNxAction.class).getActionOutputReg();
+ SrcBuilder srcBuilder = new SrcBuilder();
+ srcBuilder.setSrcChoice(RegMoveConvertor.resolveSrc(action.getSrc()));
+ srcBuilder.setOfsNbits(action.getNBits());
+ NxOutputRegBuilder builder = new NxOutputRegBuilder();
+ builder.setSrc(srcBuilder.build());
+ builder.setMaxLen(action.getMaxLen());
+ return resolveAction(builder.build(), path);
+ }
+
+ private static org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action resolveAction(NxOutputReg value, ActionPath path) {
+ switch (path) {
+ case NODES_NODE_TABLE_FLOW_INSTRUCTIONS_INSTRUCTION_WRITEACTIONSCASE_WRITEACTIONS_ACTION_ACTION_EXTENSIONLIST_EXTENSION:
+ return new NxActionOutputRegNodesNodeTableFlowWriteActionsCaseBuilder().setNxOutputReg(value).build();
+ case FLOWSSTATISTICSUPDATE_FLOWANDSTATISTICSMAPLIST_INSTRUCTIONS_INSTRUCTION_INSTRUCTION_WRITEACTIONSCASE_WRITEACTIONS_ACTION_ACTION:
+ return new NxActionOutputRegNotifFlowsStatisticsUpdateWriteActionsCaseBuilder().setNxOutputReg(value).build();
+ case FLOWSSTATISTICSUPDATE_FLOWANDSTATISTICSMAPLIST_INSTRUCTIONS_INSTRUCTION_INSTRUCTION_APPLYACTIONSCASE_APPLYACTIONS_ACTION_ACTION:
+ return new NxActionOutputRegNotifFlowsStatisticsUpdateApplyActionsCaseBuilder().setNxOutputReg(value).build();
+ case GROUPDESCSTATSUPDATED_GROUPDESCSTATS_BUCKETS_BUCKET_ACTION:
+ return new NxActionOutputRegNotifGroupDescStatsUpdatedCaseBuilder().setNxOutputReg(value).build();
+ default:
+ throw new CodecPreconditionException(path);
+ }
+ }
+
+ @Override
+ public Action convert(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action nxActionArg) {
+ Preconditions.checkArgument(nxActionArg instanceof NxActionOutputRegGrouping);
+ NxActionOutputRegGrouping nxAction = (NxActionOutputRegGrouping) nxActionArg;
+ Src src = nxAction.getNxOutputReg().getSrc();
+ ActionOutputRegBuilder builder = new ActionOutputRegBuilder();
+ builder.setSrc(RegMoveConvertor.resolveSrc(src.getSrcChoice()));
+ builder.setNBits(src.getOfsNbits());
+ builder.setMaxLen(nxAction.getNxOutputReg().getMaxLen());
+ OfjAugNxActionBuilder augNxActionBuilder = new OfjAugNxActionBuilder();
+ augNxActionBuilder.setActionOutputReg(builder.build());
+ return ActionUtil.createNiciraAction(augNxActionBuilder.build(), NxmNxOutputReg.class);
+ }
+
+}
\ No newline at end of file
throw new CodecPreconditionException("Missing codec for " + new NxmHeader(dstValue));
}
- private static SrcChoice resolveSrc(long srcValue) {
+ static SrcChoice resolveSrc(long srcValue) {
Class<? extends NxmNxReg> potentialSrc = resolveReg(srcValue);
if (potentialSrc != null) {
return new SrcNxRegCaseBuilder().setNxReg(potentialSrc).build();
throw new CodecPreconditionException("Missing implementation of a case in dst-choice? " + dstChoice.getClass());
}
- private static long resolveSrc(SrcChoice srcChoice) {
+ static long resolveSrc(SrcChoice srcChoice) {
if (srcChoice instanceof SrcNxRegCase) {
return resolveReg(((SrcNxRegCase) srcChoice).getNxReg());
}
}
}
}
-
+ 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
+bits specified from the register.";
+ uses src-choice-grouping;
+ leaf ofs_nbits {
+ type uint16;
+ }
+ }
+ leaf max_len {
+ description "The number of bytes to send when the chosen port is OFPP_CONTROLLER";
+ type uint16;
+ }
+ }
+ }
// 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-reg-move-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-output-reg-rpc-add-flow-write-actions-case {
+ uses nx-action-output-reg-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-reg-load-grouping;
uses nx-action-reg-move-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-output-reg-rpc-add-flow-apply-actions-case {
+ uses nx-action-output-reg-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-move-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-output-reg-rpc-remove-flow-write-actions-case" {
+ uses nx-action-output-reg-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-reg-load-grouping;
uses nx-action-reg-move-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-output-reg-rpc-remove-flow-apply-actions-case" {
+ uses nx-action-output-reg-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-move-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-output-reg-rpc-update-flow-original-write-actions-case" {
+ uses nx-action-output-reg-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-reg-load-grouping;
uses nx-action-reg-move-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-output-reg-rpc-update-flow-original-apply-actions-case" {
+ uses nx-action-output-reg-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-reg-load-grouping;
uses nx-action-reg-move-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-output-reg-rpc-update-flow-updated-write-actions-case" {
+ uses nx-action-output-reg-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-reg-load-grouping;
uses nx-action-reg-move-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-output-reg-rpc-update-flow-updated-apply-actions-case" {
+ uses nx-action-output-reg-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-move-grouping;
}
}
+ augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
+ case "nx-action-output-reg-rpc-add-group-case" {
+ uses nx-action-output-reg-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-move-grouping;
}
}
+ augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
+ case "nx-action-output-reg-rpc-remove-group-case" {
+ uses nx-action-output-reg-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-move-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-output-reg-rpc-update-group-original-case" {
+ uses nx-action-output-reg-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-reg-load-grouping;
uses nx-action-reg-move-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-output-reg-rpc-update-group-updated-case" {
+ uses nx-action-output-reg-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-move-grouping;
}
}
+ augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
+ case "nx-action-output-reg-rpc-transmit-packet-case" {
+ uses nx-action-output-reg-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" {
uses nx-action-reg-move-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-output-reg-nodes-node-table-flow-write-actions-case" {
+ uses nx-action-output-reg-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-reg-load-grouping;
uses nx-action-reg-move-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-output-reg-nodes-node-table-flow-apply-actions-case" {
+ uses nx-action-output-reg-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-move-grouping;
}
}
+ augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
+ case "nx-action-output-reg-nodes-node-group-buckets-bucket-actions-case" {
+ uses nx-action-output-reg-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" {
uses nx-action-reg-move-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-output-reg-notif-flows-statistics-update-write-actions-case" {
+ uses nx-action-output-reg-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-reg-load-grouping;
uses nx-action-reg-move-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-output-reg-notif-flows-statistics-update-apply-actions-case" {
+ uses nx-action-output-reg-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-move-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-output-reg-notif-group-desc-stats-updated-case" {
+ uses nx-action-output-reg-grouping;
+ }
+ }
}
\ No newline at end of file