import org.opendaylight.genius.mdsalutil.actions.ActionRegLoad;
import org.opendaylight.genius.mdsalutil.actions.ActionSetFieldTunnelId;
import org.opendaylight.genius.mdsalutil.actions.ActionSetFieldVlanVid;
+import org.opendaylight.genius.mdsalutil.actions.ActionSetTunnelDestinationIp;
+import org.opendaylight.genius.mdsalutil.actions.ActionSetTunnelSourceIp;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev140508.L2vlan;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev140508.Tunnel;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
IfTunnel ifTunnel = interfaceInfo.getAugmentation(IfTunnel.class);
if(BooleanUtils.isTrue(ifTunnel.isTunnelRemoteIpFlow())) {
- BigInteger destIp = MDSALUtil.getBigIntIpFromIpAddress(ifTunnel.getTunnelDestination());
- result.add(new ActionInfo(ActionType.set_tunnel_dest_ip, new BigInteger[]{destIp},
- actionKeyStart++));
+ result.add(new ActionSetTunnelDestinationIp(actionKeyStart++, ifTunnel.getTunnelDestination()));
}
if(BooleanUtils.isTrue(ifTunnel.isTunnelSourceIpFlow())) {
- BigInteger sourceIp = MDSALUtil.getBigIntIpFromIpAddress(ifTunnel.getTunnelSource());
- result.add(new ActionInfo(ActionType.set_tunnel_src_ip, new BigInteger[]{sourceIp},
- actionKeyStart++));
+ result.add(new ActionSetTunnelSourceIp(actionKeyStart++, ifTunnel.getTunnelSource()));
}
result.add(new ActionOutput(actionKeyStart++, new Uri(portNo)));
break;
import org.opendaylight.genius.mdsalutil.actions.ActionSetFieldPbbIsid;
import org.opendaylight.genius.mdsalutil.actions.ActionSetFieldTunnelId;
import org.opendaylight.genius.mdsalutil.actions.ActionSetFieldVlanVid;
+import org.opendaylight.genius.mdsalutil.actions.ActionSetTunnelDestinationIp;
+import org.opendaylight.genius.mdsalutil.actions.ActionSetTunnelSourceIp;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstNxArpShaCaseBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstNxArpThaCaseBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstNxOfInPortCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstNxTunIpv4DstCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstNxTunIpv4SrcCaseBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstOfArpOpCaseBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstOfArpSpaCaseBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstOfArpTpaCaseBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionRegLoadNodesNodeGroupBucketsBucketActionsCaseBuilder;
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.NxActionRegLoadNodesNodeTableFlowApplyActionsCaseBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.NxRegLoadBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.nx.reg.load.Dst;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.nx.reg.load.DstBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionRegMoveNodesNodeGroupBucketsBucketActionsCaseBuilder;
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.NxActionRegMoveNodesNodeTableFlowApplyActionsCaseBuilder;
return new ActionSetFieldTunnelId(actionInfo).buildAction(newActionKey);
}
}
-
},
+ @Deprecated
set_tunnel_src_ip {
@Override
public Action buildAction(int newActionKey, ActionInfo actionInfo) {
- BigInteger[] actionValues = actionInfo.getBigActionValues();
- NxRegLoadBuilder nxRegLoadBuilder = new NxRegLoadBuilder();
- Dst dst = new DstBuilder()
- .setDstChoice(new DstNxTunIpv4SrcCaseBuilder().setNxTunIpv4Src(Boolean.TRUE).build())
- .setStart(0)
- .setEnd(31)
- .build();
- nxRegLoadBuilder.setDst(dst);
- nxRegLoadBuilder.setValue(actionValues[0]);
- ActionBuilder ab = new ActionBuilder();
-
- boolean groupBucket = (actionValues.length > 1);
- if (groupBucket) {
- ab.setAction(new NxActionRegLoadNodesNodeGroupBucketsBucketActionsCaseBuilder()
- .setNxRegLoad(nxRegLoadBuilder.build()).build());
+ if (actionInfo instanceof ActionSetTunnelSourceIp) {
+ return ((ActionSetTunnelSourceIp) actionInfo).buildAction(newActionKey);
} else {
- ab.setAction(new NxActionRegLoadNodesNodeTableFlowApplyActionsCaseBuilder()
- .setNxRegLoad(nxRegLoadBuilder.build()).build());
+ // TODO Migrate all users to ActionSetTunnelSourceIp
+ return new ActionSetTunnelSourceIp(actionInfo).buildAction(newActionKey);
}
- ab.setKey(new ActionKey(actionInfo.getActionKey()));
- return ab.build();
}
-
},
+ @Deprecated
set_tunnel_dest_ip {
@Override
public Action buildAction(int newActionKey, ActionInfo actionInfo) {
- BigInteger[] actionValues = actionInfo.getBigActionValues();
- NxRegLoadBuilder nxRegLoadBuilder = new NxRegLoadBuilder();
- Dst dst = new DstBuilder()
- .setDstChoice(new DstNxTunIpv4DstCaseBuilder().setNxTunIpv4Dst(Boolean.TRUE).build())
- .setStart(0)
- .setEnd(31)
- .build();
- nxRegLoadBuilder.setDst(dst);
- nxRegLoadBuilder.setValue(actionValues[0]);
- ActionBuilder ab = new ActionBuilder();
-
- boolean groupBucket = (actionValues.length > 1);
- if (groupBucket) {
- ab.setAction(new NxActionRegLoadNodesNodeGroupBucketsBucketActionsCaseBuilder()
- .setNxRegLoad(nxRegLoadBuilder.build()).build());
+ if (actionInfo instanceof ActionSetTunnelDestinationIp) {
+ return ((ActionSetTunnelDestinationIp) actionInfo).buildAction(newActionKey);
} else {
- ab.setAction(new NxActionRegLoadNodesNodeTableFlowApplyActionsCaseBuilder()
- .setNxRegLoad(nxRegLoadBuilder.build()).build());
+ // TODO Migrate all users to ActionSetTunnelDestinationIp
+ return new ActionSetTunnelDestinationIp(actionInfo).buildAction(newActionKey);
}
- ab.setKey(new ActionKey(actionInfo.getActionKey()));
- return ab.build();
}
-
},
set_field_eth_dest {
--- /dev/null
+/*
+ * Copyright © 2016 Red Hat, Inc. and others.
+ *
+ * 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.genius.mdsalutil.actions;
+
+import java.math.BigInteger;
+import org.opendaylight.genius.mdsalutil.ActionInfo;
+import org.opendaylight.genius.mdsalutil.ActionType;
+import org.opendaylight.genius.mdsalutil.MDSALUtil;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstNxTunIpv4DstCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionRegLoadNodesNodeGroupBucketsBucketActionsCaseBuilder;
+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.NxActionRegLoadNodesNodeTableFlowApplyActionsCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.NxRegLoadBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.nx.reg.load.Dst;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.nx.reg.load.DstBuilder;
+
+/**
+ * Set tunnel destination IP action.
+ */
+public class ActionSetTunnelDestinationIp extends ActionInfo {
+ private final BigInteger destIp;
+ private final boolean groupBucket;
+
+ public ActionSetTunnelDestinationIp(BigInteger destIp) {
+ this(0, destIp);
+ }
+
+ public ActionSetTunnelDestinationIp(IpAddress destIp) {
+ this(0, destIp);
+ }
+
+ public ActionSetTunnelDestinationIp(int actionKey, BigInteger destIp) {
+ super(ActionType.set_tunnel_dest_ip, new BigInteger[] {destIp}, actionKey);
+ this.destIp = destIp;
+ this.groupBucket = false;
+ }
+
+ public ActionSetTunnelDestinationIp(int actionKey, IpAddress destIp) {
+ this(actionKey, MDSALUtil.getBigIntIpFromIpAddress(destIp));
+ }
+
+ @Deprecated
+ public ActionSetTunnelDestinationIp(ActionInfo actionInfo) {
+ super(ActionType.set_tunnel_dest_ip, actionInfo.getBigActionValues(), actionInfo.getActionKey());
+ BigInteger[] bigActionValues = actionInfo.getBigActionValues();
+ this.destIp = bigActionValues[0];
+ this.groupBucket = bigActionValues.length > 1;
+ }
+
+ @Override
+ public Action buildAction() {
+ return buildAction(getActionKey());
+ }
+
+ public Action buildAction(int newActionKey) {
+ NxRegLoadBuilder nxRegLoadBuilder = new NxRegLoadBuilder();
+ Dst dst = new DstBuilder()
+ .setDstChoice(new DstNxTunIpv4DstCaseBuilder().setNxTunIpv4Dst(Boolean.TRUE).build())
+ .setStart(0)
+ .setEnd(31)
+ .build();
+ nxRegLoadBuilder.setDst(dst);
+ nxRegLoadBuilder.setValue(destIp);
+ ActionBuilder ab = new ActionBuilder();
+
+ if (groupBucket) {
+ ab.setAction(new NxActionRegLoadNodesNodeGroupBucketsBucketActionsCaseBuilder()
+ .setNxRegLoad(nxRegLoadBuilder.build()).build());
+ } else {
+ ab.setAction(new NxActionRegLoadNodesNodeTableFlowApplyActionsCaseBuilder()
+ .setNxRegLoad(nxRegLoadBuilder.build()).build());
+ }
+ ab.setKey(new ActionKey(newActionKey));
+ return ab.build();
+ }
+}
--- /dev/null
+/*
+ * Copyright © 2016 Red Hat, Inc. and others.
+ *
+ * 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.genius.mdsalutil.actions;
+
+import java.math.BigInteger;
+import org.opendaylight.genius.mdsalutil.ActionInfo;
+import org.opendaylight.genius.mdsalutil.ActionType;
+import org.opendaylight.genius.mdsalutil.MDSALUtil;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstNxTunIpv4SrcCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionRegLoadNodesNodeGroupBucketsBucketActionsCaseBuilder;
+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.NxActionRegLoadNodesNodeTableFlowApplyActionsCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.NxRegLoadBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.nx.reg.load.Dst;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.nx.reg.load.DstBuilder;
+
+/**
+ * Set tunnel source IP action.
+ */
+public class ActionSetTunnelSourceIp extends ActionInfo {
+ private final BigInteger sourceIp;
+ private final boolean groupBucket;
+
+ public ActionSetTunnelSourceIp(BigInteger sourceIp) {
+ this(0, sourceIp);
+ }
+
+ public ActionSetTunnelSourceIp(IpAddress sourceIp) {
+ this(0, sourceIp);
+ }
+
+ public ActionSetTunnelSourceIp(int actionKey, BigInteger sourceIp) {
+ super(ActionType.set_tunnel_src_ip, new BigInteger[] {sourceIp}, actionKey);
+ this.sourceIp = sourceIp;
+ this.groupBucket = false;
+ }
+
+ public ActionSetTunnelSourceIp(int actionKey, IpAddress sourceIp) {
+ this(actionKey, MDSALUtil.getBigIntIpFromIpAddress(sourceIp));
+ }
+
+ @Deprecated
+ public ActionSetTunnelSourceIp(ActionInfo actionInfo) {
+ super(ActionType.set_tunnel_src_ip, actionInfo.getBigActionValues(), actionInfo.getActionKey());
+ BigInteger[] bigActionValues = actionInfo.getBigActionValues();
+ this.sourceIp = bigActionValues[0];
+ this.groupBucket = bigActionValues.length > 1;
+ }
+
+ @Override
+ public Action buildAction() {
+ return buildAction(getActionKey());
+ }
+
+ public Action buildAction(int newActionKey) {
+ NxRegLoadBuilder nxRegLoadBuilder = new NxRegLoadBuilder();
+ Dst dst = new DstBuilder()
+ .setDstChoice(new DstNxTunIpv4SrcCaseBuilder().setNxTunIpv4Src(Boolean.TRUE).build())
+ .setStart(0)
+ .setEnd(31)
+ .build();
+ nxRegLoadBuilder.setDst(dst);
+ nxRegLoadBuilder.setValue(sourceIp);
+ ActionBuilder ab = new ActionBuilder();
+
+ if (groupBucket) {
+ ab.setAction(new NxActionRegLoadNodesNodeGroupBucketsBucketActionsCaseBuilder()
+ .setNxRegLoad(nxRegLoadBuilder.build()).build());
+ } else {
+ ab.setAction(new NxActionRegLoadNodesNodeTableFlowApplyActionsCaseBuilder()
+ .setNxRegLoad(nxRegLoadBuilder.build()).build());
+ }
+ ab.setKey(new ActionKey(newActionKey));
+ return ab.build();
+ }
+}