1 package org.opendaylight.ovsdb.openstack.netvirt.providers.mdsalopenflow13;
3 import java.math.BigInteger;
5 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
6 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
7 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action;
8 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecNwTtlCaseBuilder;
9 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DropActionCaseBuilder;
10 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlDstActionCaseBuilder;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlSrcActionCaseBuilder;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.nw.ttl._case.DecNwTtlBuilder;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.drop.action._case.DropActionBuilder;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.dst.action._case.SetDlDstActionBuilder;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.src.action._case.SetDlSrcActionBuilder;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.DstChoice;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstNxArpShaCaseBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstNxArpThaCaseBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstNxRegCaseBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstNxTunIdCaseBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstNxTunIpv4DstCaseBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstOfArpOpCaseBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstOfArpSpaCaseBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstOfArpTpaCaseBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstOfEthDstCaseBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionRegLoadNodesNodeGroupBucketsBucketActionsCaseBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionRegMoveNodesNodeGroupBucketsBucketActionsCaseBuilder;
34 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.NxActionOutputRegNodesNodeTableFlowApplyActionsCaseBuilder;
35 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;
36 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;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.output.reg.grouping.NxOutputReg;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.output.reg.grouping.NxOutputRegBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.NxRegLoad;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.NxRegLoadBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.nx.reg.load.DstBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.move.grouping.NxRegMove;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.move.grouping.NxRegMoveBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.move.grouping.nx.reg.move.SrcBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.src.choice.grouping.SrcChoice;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.src.choice.grouping.src.choice.SrcNxArpShaCaseBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.src.choice.grouping.src.choice.SrcNxRegCaseBuilder;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.src.choice.grouping.src.choice.SrcOfArpSpaCaseBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.src.choice.grouping.src.choice.SrcOfEthSrcCaseBuilder;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionResubmitNodesNodeTableFlowApplyActionsCaseBuilder;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.nx.action.resubmit.grouping.NxResubmit;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.nx.action.resubmit.grouping.NxResubmitBuilder;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionSetNspNodesNodeTableFlowApplyActionsCaseBuilder;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.nx.action.set.nsp.grouping.NxSetNsp;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.nx.action.set.nsp.grouping.NxSetNspBuilder;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionSetNsiNodesNodeTableFlowApplyActionsCaseBuilder;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.nx.action.set.nsi.grouping.NxSetNsi;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.nx.action.set.nsi.grouping.NxSetNsiBuilder;
62 import com.google.common.net.InetAddresses;
64 public final class OF13MdSalAction {
65 public static Action dropAction() {
66 return new DropActionCaseBuilder()
67 .setDropAction(new DropActionBuilder()
72 public static Action outputAction(NodeConnectorId id) {
73 return new OutputActionCaseBuilder()
74 .setOutputAction(new OutputActionBuilder()
75 .setOutputNodeConnector(new Uri(id.getValue()))
80 public static Action groupAction(Long id) {
81 return new GroupActionCaseBuilder()
82 .setGroupAction(new GroupActionBuilder()
88 public static Action setDlSrcAction(MacAddress mac) {
89 return new SetDlSrcActionCaseBuilder()
90 .setSetDlSrcAction(new SetDlSrcActionBuilder()
96 public static Action setDlDstAction(MacAddress mac) {
97 return new SetDlDstActionCaseBuilder()
98 .setSetDlDstAction(new SetDlDstActionBuilder()
104 public static Action decNwTtlAction() {
105 return new DecNwTtlCaseBuilder()
106 .setDecNwTtl(new DecNwTtlBuilder()
111 public static Action nxLoadRegAction(DstChoice dstChoice,
114 boolean groupBucket) {
115 NxRegLoad r = new NxRegLoadBuilder()
116 .setDst(new DstBuilder()
117 .setDstChoice(dstChoice)
118 .setStart(Integer.valueOf(0))
119 .setEnd(Integer.valueOf(endOffset))
124 return new NxActionRegLoadNodesNodeGroupBucketsBucketActionsCaseBuilder()
125 .setNxRegLoad(r).build();
127 return new NxActionRegLoadNodesNodeTableFlowApplyActionsCaseBuilder()
128 .setNxRegLoad(r).build();
132 public static Action nxLoadRegAction(DstChoice dstChoice,
134 return nxLoadRegAction(dstChoice, value, 31, false);
137 public static Action nxLoadRegAction(Class<? extends NxmNxReg> reg,
139 return nxLoadRegAction(new DstNxRegCaseBuilder().setNxReg(reg).build(),
143 public static Action nxLoadTunIPv4Action(String ipAddress,
144 boolean groupBucket) {
145 int ip = InetAddresses.coerceToInteger(InetAddresses.forString(ipAddress));
146 long ipl = ip & 0xffffffffL;
147 return nxLoadRegAction(new DstNxTunIpv4DstCaseBuilder()
148 .setNxTunIpv4Dst(Boolean.TRUE).build(),
149 BigInteger.valueOf(ipl),
154 public static Action nxLoadArpOpAction(BigInteger value) {
155 return nxLoadRegAction(new DstOfArpOpCaseBuilder()
156 .setOfArpOp(Boolean.TRUE).build(), value, 15, false);
159 public static Action nxLoadArpShaAction(BigInteger value) {
160 return nxLoadRegAction(new DstNxArpShaCaseBuilder()
161 .setNxArpSha(Boolean.TRUE).build(), value, 47, false);
164 public static Action nxLoadArpSpaAction(BigInteger value) {
165 return nxLoadRegAction(new DstOfArpSpaCaseBuilder()
166 .setOfArpSpa(Boolean.TRUE).build(), value);
169 public static Action nxLoadArpSpaAction(String ipAddress) {
170 int ip = InetAddresses.coerceToInteger(InetAddresses.forString(ipAddress));
171 long ipl = ip & 0xffffffffL;
172 return nxLoadArpSpaAction(BigInteger.valueOf(ipl));
175 public static Action nxMoveRegAction(SrcChoice srcChoice,
178 boolean groupBucket) {
179 NxRegMove r = new NxRegMoveBuilder()
180 .setSrc(new SrcBuilder()
181 .setSrcChoice(srcChoice)
182 .setStart(Integer.valueOf(0))
183 .setEnd(Integer.valueOf(endOffset))
185 .setDst(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.move.grouping.nx.reg.move.DstBuilder()
186 .setDstChoice(dstChoice)
187 .setStart(Integer.valueOf(0))
188 .setEnd(Integer.valueOf(endOffset))
192 return new NxActionRegMoveNodesNodeGroupBucketsBucketActionsCaseBuilder()
193 .setNxRegMove(r).build();
195 return new NxActionRegMoveNodesNodeTableFlowApplyActionsCaseBuilder()
196 .setNxRegMove(r).build();
200 public static Action nxMoveRegAction(SrcChoice srcChoice,
201 DstChoice dstChoice) {
202 return nxMoveRegAction(srcChoice, dstChoice, 31, false);
205 public static Action nxMoveRegTunIdAction(Class<? extends NxmNxReg> src,
206 boolean groupBucket) {
207 return nxMoveRegAction(new SrcNxRegCaseBuilder()
208 .setNxReg(src).build(),
209 new DstNxTunIdCaseBuilder()
210 .setNxTunId(Boolean.TRUE).build(),
215 public static Action nxMoveArpShaToArpThaAction() {
216 return nxMoveRegAction(new SrcNxArpShaCaseBuilder()
217 .setNxArpSha(Boolean.TRUE).build(),
218 new DstNxArpThaCaseBuilder()
219 .setNxArpTha(Boolean.TRUE).build(),
223 public static Action nxMoveEthSrcToEthDstAction() {
224 return nxMoveRegAction(new SrcOfEthSrcCaseBuilder()
225 .setOfEthSrc(Boolean.TRUE).build(),
226 new DstOfEthDstCaseBuilder()
227 .setOfEthDst(Boolean.TRUE).build(),
231 public static Action nxMoveArpSpaToArpTpaAction() {
232 return nxMoveRegAction(new SrcOfArpSpaCaseBuilder()
233 .setOfArpSpa(Boolean.TRUE).build(),
234 new DstOfArpTpaCaseBuilder()
235 .setOfArpTpa(Boolean.TRUE).build());
238 public static Action nxOutputRegAction(SrcChoice srcChoice) {
239 NxOutputReg r = new NxOutputRegBuilder()
240 .setSrc(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.output.reg.grouping.nx.output.reg.SrcBuilder()
241 .setSrcChoice(srcChoice)
242 .setOfsNbits(Integer.valueOf(31))
244 .setMaxLen(Integer.valueOf(0xffff))
246 return new NxActionOutputRegNodesNodeTableFlowApplyActionsCaseBuilder()
247 .setNxOutputReg(r).build();
250 public static Action nxOutputRegAction(Class<? extends NxmNxReg> reg) {
251 return nxOutputRegAction(new SrcNxRegCaseBuilder().setNxReg(reg).build());
254 public static Action nxResubmitAction(Integer inPort, Short table) {
255 NxResubmitBuilder builder = new NxResubmitBuilder();
256 if (inPort != null) {
257 builder.setInPort(inPort);
260 builder.setTable(table);
262 NxResubmit r = builder.build();
263 return new NxActionResubmitNodesNodeTableFlowApplyActionsCaseBuilder().setNxResubmit(r).build();
266 public static Action nxSetNspAction(Long nsp) {
267 NxSetNspBuilder builder = new NxSetNspBuilder();
271 NxSetNsp r = builder.build();
272 return new NxActionSetNspNodesNodeTableFlowApplyActionsCaseBuilder().setNxSetNsp(r).build();
275 public static Action nxSetNsiAction(Short nsp) {
276 NxSetNsiBuilder builder = new NxSetNsiBuilder();
280 NxSetNsi r = builder.build();
281 return new NxActionSetNsiNodesNodeTableFlowApplyActionsCaseBuilder().setNxSetNsi(r).build();