2 * Copyright (c) 2016 Ericsson India Global Services Pvt Ltd. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.genius.mdsalutil;
10 import com.google.common.net.InetAddresses;
11 import java.math.BigInteger;
12 import org.opendaylight.genius.mdsalutil.actions.ActionDrop;
13 import org.opendaylight.genius.mdsalutil.actions.ActionGroup;
14 import org.opendaylight.genius.mdsalutil.actions.ActionLearn;
15 import org.opendaylight.genius.mdsalutil.actions.ActionMoveSourceDestinationEth;
16 import org.opendaylight.genius.mdsalutil.actions.ActionMoveSourceDestinationIp;
17 import org.opendaylight.genius.mdsalutil.actions.ActionNxConntrack;
18 import org.opendaylight.genius.mdsalutil.actions.ActionNxResubmit;
19 import org.opendaylight.genius.mdsalutil.actions.ActionOutput;
20 import org.opendaylight.genius.mdsalutil.actions.ActionPopMpls;
21 import org.opendaylight.genius.mdsalutil.actions.ActionPopPbb;
22 import org.opendaylight.genius.mdsalutil.actions.ActionPopVlan;
23 import org.opendaylight.genius.mdsalutil.actions.ActionPuntToController;
24 import org.opendaylight.genius.mdsalutil.actions.ActionPushMpls;
25 import org.opendaylight.genius.mdsalutil.actions.ActionPushPbb;
26 import org.opendaylight.genius.mdsalutil.actions.ActionPushVlan;
27 import org.opendaylight.genius.mdsalutil.actions.ActionRegLoad;
28 import org.opendaylight.genius.mdsalutil.actions.ActionRegMove;
29 import org.opendaylight.genius.mdsalutil.actions.ActionSetDestinationIp;
30 import org.opendaylight.genius.mdsalutil.actions.ActionSetFieldDscp;
31 import org.opendaylight.genius.mdsalutil.actions.ActionSetFieldEthernetDestination;
32 import org.opendaylight.genius.mdsalutil.actions.ActionSetFieldEthernetSource;
33 import org.opendaylight.genius.mdsalutil.actions.ActionSetFieldMplsLabel;
34 import org.opendaylight.genius.mdsalutil.actions.ActionSetFieldPbbIsid;
35 import org.opendaylight.genius.mdsalutil.actions.ActionSetFieldTunnelId;
36 import org.opendaylight.genius.mdsalutil.actions.ActionSetFieldVlanVid;
37 import org.opendaylight.genius.mdsalutil.actions.ActionSetIcmpType;
38 import org.opendaylight.genius.mdsalutil.actions.ActionSetSourceIp;
39 import org.opendaylight.genius.mdsalutil.actions.ActionSetTcpDestinationPort;
40 import org.opendaylight.genius.mdsalutil.actions.ActionSetTcpSourcePort;
41 import org.opendaylight.genius.mdsalutil.actions.ActionSetTunnelDestinationIp;
42 import org.opendaylight.genius.mdsalutil.actions.ActionSetTunnelSourceIp;
43 import org.opendaylight.genius.mdsalutil.actions.ActionSetUdpDestinationPort;
44 import org.opendaylight.genius.mdsalutil.actions.ActionSetUdpProtocol;
45 import org.opendaylight.genius.mdsalutil.actions.ActionSetUdpSourcePort;
46 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetFieldCaseBuilder;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.field._case.SetFieldBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv4MatchBuilder;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg6;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.DstChoice;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstNxArpShaCaseBuilder;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstNxArpThaCaseBuilder;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstNxOfInPortCaseBuilder;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstOfArpOpCaseBuilder;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstOfArpSpaCaseBuilder;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstOfArpTpaCaseBuilder;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionRegLoadNodesNodeGroupBucketsBucketActionsCaseBuilder;
62 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;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.NxRegLoadBuilder;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.nx.reg.load.DstBuilder;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionRegMoveNodesNodeGroupBucketsBucketActionsCaseBuilder;
66 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;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.NxRegLoad;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.move.grouping.NxRegMove;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.move.grouping.NxRegMoveBuilder;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.move.grouping.nx.reg.move.SrcBuilder;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.src.choice.grouping.SrcChoice;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.src.choice.grouping.src.choice.SrcNxArpShaCaseBuilder;
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.src.choice.grouping.src.choice.SrcOfArpSpaCaseBuilder;
76 public enum ActionType {
80 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
81 if (actionInfo instanceof ActionGroup) {
82 return ((ActionGroup) actionInfo).buildAction(newActionKey);
84 // TODO Migrate all users to ActionGroup
85 return new ActionGroup(actionInfo.getActionValues()).buildAction(newActionKey);
93 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
94 if (actionInfo instanceof ActionOutput) {
95 return ((ActionOutput) actionInfo).buildAction(newActionKey);
97 // TODO Migrate all users to ActionOutput
98 return new ActionOutput(actionInfo.getActionValues()).buildAction(newActionKey);
106 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
107 if (actionInfo instanceof ActionPopMpls) {
108 return ((ActionPopMpls) actionInfo).buildAction(newActionKey);
110 // TODO Migrate all users to ActionPopMpls
111 return new ActionPopMpls().buildAction(newActionKey);
119 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
120 if (actionInfo instanceof ActionPopPbb) {
121 return ((ActionPopPbb) actionInfo).buildAction(newActionKey);
123 // TODO Migrate all users to ActionPopPbb
124 return new ActionPopPbb().buildAction(newActionKey);
132 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
133 if (actionInfo instanceof ActionPopVlan) {
134 return ((ActionPopVlan) actionInfo).buildAction(newActionKey);
136 // TODO Migrate all users to ActionPopVlan
137 return new ActionPopVlan().buildAction(newActionKey);
145 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
146 if (actionInfo instanceof ActionPushMpls) {
147 return ((ActionPushMpls) actionInfo).buildAction(newActionKey);
149 // TODO Migrate all users to ActionPushMpls
150 return new ActionPushMpls().buildAction(newActionKey);
158 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
159 if (actionInfo instanceof ActionPushPbb) {
160 return ((ActionPushPbb) actionInfo).buildAction(newActionKey);
162 // TODO Migrate all users to ActionPushPbb
163 return new ActionPushPbb().buildAction(newActionKey);
171 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
172 if (actionInfo instanceof ActionPushVlan) {
173 return ((ActionPushVlan) actionInfo).buildAction(newActionKey);
175 // TODO Migrate all users to ActionPushVlan
176 return new ActionPushVlan().buildAction(newActionKey);
182 set_field_mpls_label {
184 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
185 if (actionInfo instanceof ActionSetFieldMplsLabel) {
186 return ((ActionSetFieldMplsLabel) actionInfo).buildAction(newActionKey);
188 // TODO Migrate all users to ActionSetFieldMplsLabel
189 return new ActionSetFieldMplsLabel(actionInfo).buildAction(newActionKey);
197 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
198 if (actionInfo instanceof ActionSetFieldPbbIsid) {
199 return ((ActionSetFieldPbbIsid) actionInfo).buildAction(newActionKey);
201 // TODO Migrate all users to ActionSetFieldPbbIsid
202 return new ActionSetFieldPbbIsid(actionInfo).buildAction(newActionKey);
210 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
211 if (actionInfo instanceof ActionSetFieldVlanVid) {
212 return ((ActionSetFieldVlanVid) actionInfo).buildAction(newActionKey);
214 // TODO Migrate all users to ActionSetFieldVlanVid
215 return new ActionSetFieldVlanVid(actionInfo).buildAction(newActionKey);
221 set_field_tunnel_id {
223 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
224 if (actionInfo instanceof ActionSetFieldTunnelId) {
225 return ((ActionSetFieldTunnelId) actionInfo).buildAction(newActionKey);
227 // TODO Migrate all users to ActionSetFieldTunnelId
228 return new ActionSetFieldTunnelId(actionInfo).buildAction(newActionKey);
236 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
237 if (actionInfo instanceof ActionSetTunnelSourceIp) {
238 return ((ActionSetTunnelSourceIp) actionInfo).buildAction(newActionKey);
240 // TODO Migrate all users to ActionSetTunnelSourceIp
241 return new ActionSetTunnelSourceIp(actionInfo).buildAction(newActionKey);
249 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
250 if (actionInfo instanceof ActionSetTunnelDestinationIp) {
251 return ((ActionSetTunnelDestinationIp) actionInfo).buildAction(newActionKey);
253 // TODO Migrate all users to ActionSetTunnelDestinationIp
254 return new ActionSetTunnelDestinationIp(actionInfo).buildAction(newActionKey);
262 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
263 if (actionInfo instanceof ActionSetFieldEthernetDestination) {
264 return ((ActionSetFieldEthernetDestination) actionInfo).buildAction(newActionKey);
266 // TODO Migrate all users to ActionSetFieldEthernetDestination
267 return new ActionSetFieldEthernetDestination(actionInfo).buildAction(newActionKey);
275 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
276 if (actionInfo instanceof ActionSetUdpProtocol) {
277 return ((ActionSetUdpProtocol) actionInfo).buildAction(newActionKey);
279 return new ActionSetUdpProtocol().buildAction(newActionKey);
287 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
288 if (actionInfo instanceof ActionPuntToController) {
289 return ((ActionPuntToController) actionInfo).buildAction(newActionKey);
291 return new ActionPuntToController().buildAction(newActionKey);
299 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
300 if (actionInfo instanceof ActionLearn) {
301 return ((ActionLearn) actionInfo).buildAction(newActionKey);
303 // TODO Migrate all users to ActionLearn
304 return new ActionLearn(actionInfo).buildAction(newActionKey);
310 set_udp_destination_port {
312 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
313 if (actionInfo instanceof ActionSetUdpDestinationPort) {
314 return ((ActionSetUdpDestinationPort) actionInfo).buildAction(newActionKey);
316 return new ActionSetUdpDestinationPort(actionInfo).buildAction(newActionKey);
322 set_udp_source_port {
324 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
325 if (actionInfo instanceof ActionSetUdpSourcePort) {
326 return ((ActionSetUdpSourcePort) actionInfo).buildAction(newActionKey);
328 return new ActionSetUdpSourcePort(actionInfo).buildAction(newActionKey);
334 set_tcp_destination_port {
336 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
337 if (actionInfo instanceof ActionSetTcpDestinationPort) {
338 return ((ActionSetTcpDestinationPort) actionInfo).buildAction(newActionKey);
340 return new ActionSetTcpDestinationPort(actionInfo).buildAction(newActionKey);
346 set_tcp_source_port {
348 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
349 if (actionInfo instanceof ActionSetTcpSourcePort) {
350 return ((ActionSetTcpSourcePort) actionInfo).buildAction(newActionKey);
352 return new ActionSetTcpSourcePort(actionInfo).buildAction(newActionKey);
360 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
361 if (actionInfo instanceof ActionSetSourceIp) {
362 return ((ActionSetSourceIp) actionInfo).buildAction(newActionKey);
364 return new ActionSetSourceIp(actionInfo).buildAction(newActionKey);
372 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
373 if (actionInfo instanceof ActionSetDestinationIp) {
374 return ((ActionSetDestinationIp) actionInfo).buildAction(newActionKey);
376 return new ActionSetDestinationIp(actionInfo).buildAction(newActionKey);
384 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
385 return ((ActionSetFieldDscp) actionInfo).buildAction(newActionKey);
392 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
393 if (actionInfo instanceof ActionSetFieldEthernetSource) {
394 return ((ActionSetFieldEthernetSource) actionInfo).buildAction(newActionKey);
396 // TODO Migrate all users to ActionSetFieldEthernetSource
397 return new ActionSetFieldEthernetSource(actionInfo).buildAction(newActionKey);
405 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
406 if (actionInfo instanceof ActionDrop) {
407 return ((ActionDrop) actionInfo).buildAction(newActionKey);
409 // TODO Migrate all users to ActionDrop
410 return new ActionDrop().buildAction(newActionKey);
418 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
419 if (actionInfo instanceof ActionNxResubmit) {
420 return ((ActionNxResubmit) actionInfo).buildAction(newActionKey);
422 // TODO Migrate all users to ActionNxResubmit
423 return new ActionNxResubmit(actionInfo).buildAction(newActionKey);
431 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
432 // TODO Migrate all users to ActionRegLoad
433 return new ActionRegLoad(NxmNxReg6.class, actionInfo.getActionValues()).buildAction(newActionKey);
440 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
441 if (actionInfo instanceof ActionRegLoad) {
442 return ((ActionRegLoad) actionInfo).buildAction(newActionKey);
444 throw new IllegalStateException(
445 "nx_load_reg with an ActionInfo that's not ActionRegLoad but " + actionInfo.getClass());
450 nx_reg_move_mpls_label {
452 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
453 if (actionInfo instanceof ActionRegMove) {
454 return ((ActionRegMove) actionInfo).buildAction(newActionKey);
456 throw new IllegalStateException(
457 "nx_reg_move_mpls_label with an ActionInfo that's not ActionRegMove but " + actionInfo.getClass());
464 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
472 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
473 if (actionInfo instanceof ActionNxConntrack) {
474 return ((ActionNxConntrack) actionInfo).buildAction(newActionKey);
476 return new ActionNxConntrack(actionInfo.getActionValues()).buildAction(newActionKey);
485 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
486 if (actionInfo instanceof ActionMoveSourceDestinationIp) {
487 return ((ActionMoveSourceDestinationIp) actionInfo).buildAction(newActionKey);
489 return new ActionMoveSourceDestinationIp(actionInfo).buildAction(newActionKey);
497 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
498 if (actionInfo instanceof ActionMoveSourceDestinationEth) {
499 return ((ActionMoveSourceDestinationEth) actionInfo).buildAction(newActionKey);
501 return new ActionMoveSourceDestinationEth(actionInfo).buildAction(newActionKey);
509 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
510 if (actionInfo instanceof ActionSetIcmpType) {
511 return ((ActionSetIcmpType) actionInfo).buildAction(newActionKey);
513 return new ActionSetIcmpType(actionInfo).buildAction(newActionKey);
520 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
521 BigInteger[] actionValues = actionInfo.getBigActionValues();
522 NxRegLoad rb = new NxRegLoadBuilder()
523 .setDst(new DstBuilder()
524 .setDstChoice(new DstNxOfInPortCaseBuilder().setOfInPort(Boolean.TRUE).build())
525 .setStart(0).setEnd(15).build())
526 .setValue(actionValues[0]).build();
527 ActionBuilder ab = new ActionBuilder();
528 ab.setKey(new ActionKey(newActionKey));
529 ab.setOrder(newActionKey);
530 ab.setAction(new NxActionRegLoadNodesNodeTableFlowApplyActionsCaseBuilder().setNxRegLoad(rb).build());
536 * Load macAddress to SHA(Sender Hardware Address)
538 * Media address of the sender. In an ARP request this field is used to
539 * indicate the address of the host sending the request. In an ARP reply
540 * this field is used to indicate the address of the host that the request
547 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
548 final MacAddress mac = new MacAddress(
549 actionInfo.getActionValues()[0]);
550 return new ActionBuilder().setKey(new ActionKey(newActionKey))
551 .setAction(nxLoadRegAction(new DstNxArpShaCaseBuilder()
552 .setNxArpSha(Boolean.TRUE).build(), BigInteger.valueOf(NWUtil.macToLong(mac)), 47, false))
558 * Load IP Address to SPA(Sender Protocol Address)
560 * IP address of the sender. In an ARP request this field is used to
561 * indicate the address of the host sending the request. In an ARP reply
562 * this field is used to indicate the address of the host that the request
568 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
570 final String ipAddress = actionInfo.getActionValues()[0];
571 final long ipl = InetAddresses
572 .coerceToInteger(InetAddresses.forString(ipAddress)) & 0xffffffffL;
573 return new ActionBuilder().setKey(new ActionKey(newActionKey))
574 .setAction(nxLoadRegAction(new DstOfArpSpaCaseBuilder()
575 .setOfArpSpa(Boolean.TRUE).build(), BigInteger.valueOf(ipl))).build();
582 * Move Source Hardware address to Destination address, to where the ARP
583 * response need to be addressed to.
589 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
590 return new ActionBuilder().setKey(new ActionKey(newActionKey))
591 .setAction(nxMoveRegAction(
592 new SrcNxArpShaCaseBuilder()
593 .setNxArpSha(Boolean.TRUE).build(),
594 new DstNxArpThaCaseBuilder()
595 .setNxArpTha(Boolean.TRUE).build(),
596 47, false)) //Length of the SHA is 6Byte, hence the end offset bit is 47
603 * Move Source IP address to Destination IP address, to where the ARP
604 * response need to be addressed to.
610 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
611 return new ActionBuilder().setKey(new ActionKey(newActionKey))
612 .setAction(nxMoveRegAction(
613 new SrcOfArpSpaCaseBuilder()
614 .setOfArpSpa(Boolean.TRUE).build(),
615 new DstOfArpTpaCaseBuilder()
616 .setOfArpTpa(Boolean.TRUE).build()))
622 * Set ARP Operation Type that is Request or Replay.
627 public Action buildAction(int newActionKey, ActionInfo actionInfo) {
629 final int val = Integer.parseInt(actionInfo.getActionValues()[0]);
630 return new ActionBuilder().setKey(new ActionKey(newActionKey))
631 .setAction(nxLoadRegAction(
632 new DstOfArpOpCaseBuilder().setOfArpOp(Boolean.TRUE)
634 BigInteger.valueOf(val), 15, false)) // The length of ARP operation field is 2Byte, hence end offset bit is 15
640 private static final int RADIX_HEX = 16;
642 public abstract Action buildAction(int newActionKey, ActionInfo actionInfo);
644 private static org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action nxLoadRegAction(
645 DstChoice dstChoice, BigInteger value) {
646 return nxLoadRegAction(dstChoice, value, 31, false);
650 private static org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action nxMoveRegAction(
651 final SrcChoice srcChoice, final DstChoice dstChoice,
652 final int endOffset, final boolean groupBucket) {
653 final NxRegMove reg = new NxRegMoveBuilder()
654 .setSrc(new SrcBuilder().setSrcChoice(srcChoice)
656 .setEnd(endOffset).build())
657 .setDst(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.move.grouping.nx.reg.move.DstBuilder()
658 .setDstChoice(dstChoice).setStart(0)
659 .setEnd(endOffset).build())
662 return new NxActionRegMoveNodesNodeGroupBucketsBucketActionsCaseBuilder()
663 .setNxRegMove(reg).build();
665 return new NxActionRegMoveNodesNodeTableFlowApplyActionsCaseBuilder()
666 .setNxRegMove(reg).build();
670 private static org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action nxMoveRegAction(
671 final SrcChoice srcChoice, final DstChoice dstChoice) {
672 return nxMoveRegAction(srcChoice, dstChoice, 31, false);
675 private static org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action nxLoadRegAction(
676 final DstChoice dstChoice, final BigInteger value,
677 final int endOffset, final boolean groupBucket) {
678 final NxRegLoad reg = new NxRegLoadBuilder()
679 .setDst(new DstBuilder().setDstChoice(dstChoice)
681 .setEnd(endOffset).build())
682 .setValue(value).build();
684 return new NxActionRegLoadNodesNodeGroupBucketsBucketActionsCaseBuilder()
685 .setNxRegLoad(reg).build();
687 return new NxActionRegLoadNodesNodeTableFlowApplyActionsCaseBuilder()
688 .setNxRegLoad(reg).build();