2 * Copyright (c) 2013, 2015 Ericsson, Inc. 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
9 package org.opendaylight.openflowplugin.test;
11 import com.google.common.util.concurrent.FutureCallback;
12 import com.google.common.util.concurrent.Futures;
13 import com.google.common.util.concurrent.ListenableFuture;
14 import com.google.common.util.concurrent.MoreExecutors;
15 import java.math.BigInteger;
16 import java.util.ArrayList;
17 import java.util.List;
18 import java.util.concurrent.ExecutorService;
19 import java.util.concurrent.Executors;
20 import java.util.concurrent.TimeUnit;
21 import org.eclipse.osgi.framework.console.CommandInterpreter;
22 import org.eclipse.osgi.framework.console.CommandProvider;
23 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
24 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
25 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
26 import org.opendaylight.controller.sal.binding.api.NotificationService;
27 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Dscp;
28 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
29 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6FlowLabel;
30 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix;
31 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
32 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
33 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.VlanCfi;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.ControllerActionCaseBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlOutCaseBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecMplsTtlCaseBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecNwTtlCaseBuilder;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DropActionCaseBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.FloodActionCaseBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.FloodAllActionCaseBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.HwPathActionCaseBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.LoopbackActionCaseBuilder;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopMplsActionCaseBuilder;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopPbbActionCaseBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCaseBuilder;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushMplsActionCaseBuilder;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushPbbActionCaseBuilder;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionCaseBuilder;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlDstActionCaseBuilder;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlSrcActionCaseBuilder;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlTypeActionCaseBuilder;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetFieldCaseBuilder;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNextHopActionCaseBuilder;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwDstActionCaseBuilder;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwSrcActionCaseBuilder;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTosActionCaseBuilder;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTtlActionCaseBuilder;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetQueueActionCaseBuilder;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetTpDstActionCaseBuilder;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetTpSrcActionCaseBuilder;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanCfiActionCaseBuilder;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanIdActionCaseBuilder;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanPcpActionCaseBuilder;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.StripVlanActionCaseBuilder;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SwPathActionCaseBuilder;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.controller.action._case.ControllerActionBuilder;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlInBuilder;
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.out._case.CopyTtlOutBuilder;
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.mpls.ttl._case.DecMplsTtlBuilder;
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.nw.ttl._case.DecNwTtl;
76 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.nw.ttl._case.DecNwTtlBuilder;
77 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.drop.action._case.DropAction;
78 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.drop.action._case.DropActionBuilder;
79 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.flood.action._case.FloodActionBuilder;
80 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.flood.all.action._case.FloodAllActionBuilder;
81 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder;
82 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.hw.path.action._case.HwPathActionBuilder;
83 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.loopback.action._case.LoopbackActionBuilder;
84 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;
85 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.mpls.action._case.PopMplsActionBuilder;
86 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.pbb.action._case.PopPbbActionBuilder;
87 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.vlan.action._case.PopVlanActionBuilder;
88 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.mpls.action._case.PushMplsActionBuilder;
89 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.pbb.action._case.PushPbbActionBuilder;
90 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.vlan.action._case.PushVlanActionBuilder;
91 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.dst.action._case.SetDlDstActionBuilder;
92 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.src.action._case.SetDlSrcActionBuilder;
93 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.type.action._case.SetDlTypeActionBuilder;
94 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.field._case.SetFieldBuilder;
95 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlActionBuilder;
96 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.next.hop.action._case.SetNextHopActionBuilder;
97 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.dst.action._case.SetNwDstActionBuilder;
98 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.src.action._case.SetNwSrcActionBuilder;
99 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.tos.action._case.SetNwTosActionBuilder;
100 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.ttl.action._case.SetNwTtlActionBuilder;
101 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.queue.action._case.SetQueueActionBuilder;
102 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.tp.dst.action._case.SetTpDstActionBuilder;
103 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.tp.src.action._case.SetTpSrcActionBuilder;
104 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.cfi.action._case.SetVlanCfiActionBuilder;
105 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.id.action._case.SetVlanIdActionBuilder;
106 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.pcp.action._case.SetVlanPcpActionBuilder;
107 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.strip.vlan.action._case.StripVlanActionBuilder;
108 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.sw.path.action._case.SwPathActionBuilder;
109 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
110 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
111 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
112 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.address.Ipv4Builder;
113 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
114 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowId;
115 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table;
116 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.TableKey;
117 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
118 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
119 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowKey;
120 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalFlowListener;
121 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowCookie;
122 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowModFlags;
123 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues;
124 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.InstructionsBuilder;
125 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
126 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ApplyActionsCaseBuilder;
127 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.GoToTableCaseBuilder;
128 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.MeterCaseBuilder;
129 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.WriteMetadataCaseBuilder;
130 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.apply.actions._case.ApplyActionsBuilder;
131 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.go.to.table._case.GoToTableBuilder;
132 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.meter._case.MeterBuilder;
133 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.write.metadata._case.WriteMetadataBuilder;
134 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction;
135 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionBuilder;
136 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionKey;
137 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
138 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
139 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
140 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
141 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
142 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
143 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.EtherType;
144 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
145 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanPcp;
146 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId;
147 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.arp.match.fields.ArpSourceHardwareAddressBuilder;
148 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.arp.match.fields.ArpTargetHardwareAddressBuilder;
149 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetDestinationBuilder;
150 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetSourceBuilder;
151 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetTypeBuilder;
152 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ipv6.match.fields.Ipv6ExtHeaderBuilder;
153 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ipv6.match.fields.Ipv6LabelBuilder;
154 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatchBuilder;
155 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv4MatchBuilder;
156 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv6MatchBuilder;
157 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder;
158 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.MetadataBuilder;
159 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.ProtocolMatchFieldsBuilder;
160 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.TcpFlagsMatchBuilder;
161 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.TunnelBuilder;
162 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder;
163 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.ArpMatchBuilder;
164 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4Match;
165 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchBuilder;
166 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6MatchBuilder;
167 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.TunnelIpv4MatchBuilder;
168 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.SctpMatchBuilder;
169 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.TcpMatchBuilder;
170 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatchBuilder;
171 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.protocol.match.fields.PbbBuilder;
172 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.vlan.match.fields.VlanIdBuilder;
173 import org.opendaylight.yang.gen.v1.urn.opendaylight.node.error.service.rev140410.NodeErrorListener;
174 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
175 import org.osgi.framework.BundleContext;
176 import org.slf4j.Logger;
177 import org.slf4j.LoggerFactory;
179 @SuppressWarnings("checkstyle:MethodName")
180 public class OpenflowpluginTestCommandProvider implements CommandProvider {
182 private static final Logger LOG = LoggerFactory.getLogger(OpenflowpluginTestCommandProvider.class);
184 private final DataBroker dataBroker;
185 private final BundleContext ctx;
186 private static final String ORIGINAL_FLOW_NAME = "Foo";
187 private static final String UPDATED_FLOW_NAME = "Bar";
188 private static final String IPV4_PREFIX = "10.0.0.1/24";
189 private static final String DEST_MAC_ADDRESS = "ff:ff:ff:ff:ff:ff";
190 private static final String SRC_MAC_ADDRESS = "00:00:00:00:23:ae";
191 private final SalFlowListener flowEventListener = new FlowEventListenerLoggingImpl();
192 private final NodeErrorListener nodeErrorListener = new NodeErrorListenerLoggingImpl();
193 private final NotificationService notificationService;
195 public OpenflowpluginTestCommandProvider(final DataBroker dataBroker, final NotificationService notificationService,
196 final BundleContext ctx) {
197 this.dataBroker = dataBroker;
198 this.notificationService = notificationService;
204 notificationService.registerNotificationListener(flowEventListener);
205 notificationService.registerNotificationListener(nodeErrorListener);
206 ctx.registerService(CommandProvider.class.getName(), this, null);
207 createTestFlow(createTestNode(null), null, null);
210 private NodeBuilder createTestNode(final String nodeId) {
213 if (nodeId == null) {
214 localNodeId = OpenflowpluginTestActivator.NODE_ID;
216 localNodeId = nodeId;
219 final NodeBuilder builder = new NodeBuilder();
220 builder.setId(new NodeId(localNodeId));
221 builder.withKey(new NodeKey(builder.getId()));
225 private InstanceIdentifier<Node> nodeBuilderToInstanceId(final NodeBuilder node) {
226 return InstanceIdentifier.create(Nodes.class).child(Node.class, node.key());
229 private FlowBuilder createTestFlow(final NodeBuilder nodeBuilder, final String flowTypeArg, final String tableId) {
230 final long TEST_ID = 123;
232 final FlowBuilder flow = new FlowBuilder();
235 String flowType = flowTypeArg;
236 if (flowType == null) {
245 flow.setMatch(createMatch1().build());
246 flow.setInstructions(createDecNwTtlInstructions().build());
250 flow.setMatch(createMatch2().build());
251 flow.setInstructions(createDropInstructions().build());
255 flow.setMatch(createMatch3().build());
256 flow.setInstructions(createDropInstructions().build());
260 flow.setMatch(createEthernetMatch().build());
261 flow.setInstructions(createDropInstructions().build());
265 flow.setMatch(createMatch1().build());
266 flow.setInstructions(createAppyActionInstruction().build());
270 flow.setMatch(createMatch1().build());
271 flow.setInstructions(createGotoTableInstructions().build());
275 flow.setMatch(createMatch1().build());
276 flow.setInstructions(createMeterInstructions().build());
280 flow.setMatch(createMatch1().build());
281 flow.setInstructions(createAppyActionInstruction1().build());
285 flow.setMatch(createMatch1().build());
286 flow.setInstructions(createAppyActionInstruction2().build());
290 flow.setMatch(createMatch1().build());
291 flow.setInstructions(createAppyActionInstruction3().build());
295 flow.setMatch(createMatch1().build());
296 flow.setInstructions(createAppyActionInstruction4().build());
300 flow.setMatch(createMatch1().build());
301 flow.setInstructions(createAppyActionInstruction5().build());
305 flow.setMatch(createMatch1().build());
306 flow.setInstructions(createAppyActionInstruction6().build());
310 flow.setMatch(createMatch1().build());
311 flow.setInstructions(createAppyActionInstruction7().build());
315 flow.setMatch(createMatch1().build());
316 flow.setInstructions(createAppyActionInstruction8().build());
320 flow.setMatch(createMatch1().build());
321 flow.setInstructions(createAppyActionInstruction9().build());
325 flow.setMatch(createMatch1().build());
326 flow.setInstructions(createAppyActionInstruction10().build());
330 flow.setMatch(createMatch1().build());
331 flow.setInstructions(createAppyActionInstruction11().build());
335 flow.setMatch(createMatch1().build());
336 flow.setInstructions(createAppyActionInstruction12().build());
340 flow.setMatch(createMatch1().build());
341 flow.setInstructions(createAppyActionInstruction13().build());
345 flow.setMatch(createMatch1().build());
346 flow.setInstructions(createAppyActionInstruction14().build());
350 flow.setMatch(createMatch1().build());
351 flow.setInstructions(createAppyActionInstruction15().build());
355 // f23 can be used as test-case for generating error notification
356 // if the particular group is not configured - tested
357 flow.setMatch(createMatch1().build());
358 flow.setInstructions(createAppyActionInstruction16().build());
362 flow.setMatch(createMatch1().build());
363 flow.setInstructions(createAppyActionInstruction17().build());
367 flow.setMatch(createMatch1().build());
368 flow.setInstructions(createAppyActionInstruction18().build());
372 flow.setMatch(createMatch1().build());
373 flow.setInstructions(createAppyActionInstruction19().build());
377 flow.setMatch(createMatch1().build());
378 flow.setInstructions(createMetadataInstructions().build());
382 flow.setMatch(createMatch1().build());
383 flow.setInstructions(createAppyActionInstruction20().build());
387 flow.setMatch(createMatch1().build());
388 flow.setInstructions(createAppyActionInstruction21().build());
392 flow.setMatch(createMatch1().build());
393 flow.setInstructions(createAppyActionInstruction22().build());
397 flow.setMatch(createMatch1().build());
398 flow.setInstructions(createAppyActionInstruction23(nodeBuilder.getId()).build());
402 flow.setMatch(createMatch1().build());
403 flow.setInstructions(createAppyActionInstruction24().build());
407 flow.setMatch(createMatch1().build());
408 flow.setInstructions(createAppyActionInstruction25().build());
412 flow.setMatch(createMatch1().build());
413 flow.setInstructions(createAppyActionInstruction26().build());
417 flow.setMatch(createMatch1().build());
418 flow.setInstructions(createAppyActionInstruction27().build());
422 flow.setMatch(createMatch1().build());
423 flow.setInstructions(createAppyActionInstruction28().build());
427 flow.setMatch(createMatch1().build());
428 flow.setInstructions(createAppyActionInstruction29().build());
432 flow.setMatch(createMatch1().build());
433 flow.setInstructions(createAppyActionInstruction30().build());
437 flow.setMatch(createMatch1().build());
438 flow.setInstructions(createAppyActionInstruction31().build());
442 flow.setMatch(createMatch1().build());
443 flow.setInstructions(createAppyActionInstruction32().build());
447 flow.setMatch(createMatch1().build());
448 flow.setInstructions(createAppyActionInstruction33().build());
452 flow.setMatch(createMatch1().build());
453 flow.setInstructions(createAppyActionInstruction34().build());
457 flow.setMatch(createICMPv6Match().build());
458 flow.setInstructions(createDecNwTtlInstructions().build());
462 flow.setMatch(createInphyportMatch(nodeBuilder.getId()).build());
463 flow.setInstructions(createDropInstructions().build());
467 flow.setMatch(createMetadataMatch().build());
468 flow.setInstructions(createDropInstructions().build());
472 flow.setMatch(createL3IPv6Match().build());
473 flow.setInstructions(createDecNwTtlInstructions().build());
477 flow.setMatch(createL4SCTPMatch().build());
478 flow.setInstructions(createAppyActionInstruction().build());
482 flow.setMatch(createTunnelIDMatch().build());
483 flow.setInstructions(createGotoTableInstructions().build());
487 flow.setMatch(createVlanMatch().build());
488 flow.setInstructions(createMeterInstructions().build());
492 flow.setMatch(createPbbMatch().build());
493 flow.setInstructions(createMeterInstructions().build());
497 flow.setMatch(createVlanMatch().build());
498 flow.setInstructions(createDropInstructions().build());
502 flow.setMatch(createL4TCPMatch().build());
503 flow.setInstructions(createDropInstructions().build());
508 flow.setMatch(createL4UDPMatch().build());
509 flow.setInstructions(createDropInstructions().build());
513 flow.setMatch(new MatchBuilder().build());
514 flow.setInstructions(createSentToControllerInstructions().build());
519 flow.setMatch(createToSMatch().build());
520 flow.setInstructions(createDropInstructions().build());
524 flow.setMatch(createToSMatch().build());
525 flow.setInstructions(createOutputInstructions("INPORT", 10).build());
529 flow.setMatch(createToSMatch().build());
530 flow.setInstructions(createOutputInstructions("FLOOD", 20).build());
534 flow.setMatch(createToSMatch().build());
535 flow.setInstructions(createOutputInstructions("ALL", 30).build());
539 flow.setMatch(createToSMatch().build());
540 flow.setInstructions(createOutputInstructions("NORMAL", 40).build());
544 flow.setMatch(createToSMatch().build());
545 flow.setInstructions(createOutputInstructions("LOCAL", 50).build());
549 flow.setMatch(createToSMatch().build());
550 flow.setInstructions(createOutputInstructions("TABLE", 60).build());
554 flow.setMatch(createToSMatch().build());
555 flow.setInstructions(createOutputInstructions("NONE", 70).build());
559 flow.setMatch(createToSMatch().build());
560 flow.setInstructions(createStripVlanInstructions().build());
561 flow.setBarrier(Boolean.TRUE);
565 flow.setMatch(createMatch1().build());
566 flow.setInstructions(createAppyActionInstruction35().build());
570 flow.setMatch(createMatch1().build());
571 flow.setInstructions(createAppyActionInstruction36().build());
575 flow.setMatch(createMatch1().build());
576 flow.setInstructions(createAppyActionInstruction37().build());
580 flow.setMatch(createMatch1().build());
581 flow.setInstructions(createAppyActionInstruction38().build());
585 flow.setMatch(createL4TCPMatch().build());
586 flow.setInstructions(createAppyActionInstruction39().build());
590 flow.setMatch(createL4UDPMatch().build());
591 flow.setInstructions(createAppyActionInstruction40().build());
595 flow.setMatch(createL4SCTPMatch().build());
596 flow.setInstructions(createAppyActionInstruction41().build());
600 flow.setMatch(createICMPv4Match().build());
601 flow.setInstructions(createAppyActionInstruction42().build());
605 flow.setMatch(createArpMatch().build());
606 flow.setInstructions(createAppyActionInstruction43().build());
610 flow.setMatch(createL3IPv6Match().build());
611 flow.setInstructions(createAppyActionInstruction44().build());
615 flow.setMatch(createICMPv6Match().build());
616 flow.setInstructions(createAppyActionInstruction45().build());
620 flow.setMatch(createMplsMatch().build());
621 flow.setInstructions(createAppyActionInstruction46().build());
625 flow.setMatch(createPbbMatch().build());
626 flow.setInstructions(createAppyActionInstruction47().build());
630 flow.setMatch(createTunnelIDMatch().build());
631 flow.setInstructions(createAppyActionInstruction48().build());
635 flow.setMatch(createMatch33().build());
636 flow.setInstructions(createDropInstructions().build());
640 flow.setMatch(createICMPv6Match1().build());
641 flow.setInstructions(createDecNwTtlInstructions().build());
645 flow.setMatch(createVlanMatch().build());
646 flow.setInstructions(createAppyActionInstruction88().build());
650 flow.setMatch(createLLDPMatch().build());
651 flow.setInstructions(createSentToControllerInstructions().build());
655 flow.setMatch(createToSMatch().build());
656 flow.setInstructions(createOutputInstructions().build());
659 // Test TCP_Flag Match
661 flow.setMatch(createTcpFlagMatch().build());
662 flow.setInstructions(createDropInstructions().build());
666 // match vlan=10,dl_vlan_pcp=3
667 flow.setMatch(createVlanMatch().build());
669 flow.setInstructions(createAppyActionInstruction88().build());
672 // Test Tunnel IPv4 Src (e.g. set_field:172.16.100.200->tun_src)
674 flow.setMatch(createMatch3().build());
675 flow.setInstructions(createTunnelIpv4SrcInstructions().build());
678 // Test Tunnel IPv4 Dst (e.g. set_field:172.16.100.100->tun_dst)
680 flow.setMatch(createMatch1().build());
681 flow.setInstructions(createTunnelIpv4DstInstructions().build());
684 LOG.warn("flow type not understood: {}", flowType);
687 final FlowKey key = new FlowKey(new FlowId(Long.toString(id)));
688 if (null == flow.isBarrier()) {
689 flow.setBarrier(Boolean.FALSE);
691 final BigInteger value = BigInteger.valueOf(10);
692 flow.setCookie(new FlowCookie(value));
693 flow.setCookieMask(new FlowCookie(value));
694 flow.setHardTimeout(0);
695 flow.setIdleTimeout(0);
696 flow.setInstallHw(false);
697 flow.setStrict(false);
698 flow.setContainerName(null);
699 flow.setFlags(new FlowModFlags(false, false, false, false, true));
700 flow.setId(new FlowId("12"));
701 flow.setTableId(getTableId(tableId));
704 flow.setFlowName(ORIGINAL_FLOW_NAME + "X" + flowType);
709 private FlowBuilder createTestFlowPerfTest(final String flowTypeArg, final String tableId, final int id) {
710 final FlowBuilder flow = new FlowBuilder();
711 String flowType = flowTypeArg;
714 if (flowType == null) {
718 flow.setPriority(flowId);
723 flow.setMatch(createMatch1().build());
724 flow.setInstructions(createDecNwTtlInstructions().build());
727 LOG.warn("flow type not understood: {}", flowType);
730 final FlowKey key = new FlowKey(new FlowId(Long.toString(flowId)));
731 if (null == flow.isBarrier()) {
732 flow.setBarrier(Boolean.FALSE);
734 final BigInteger value = BigInteger.valueOf(10);
735 flow.setCookie(new FlowCookie(value));
736 flow.setCookieMask(new FlowCookie(value));
737 flow.setHardTimeout(0);
738 flow.setIdleTimeout(0);
739 flow.setInstallHw(false);
740 flow.setStrict(false);
741 flow.setContainerName(null);
742 flow.setFlags(new FlowModFlags(false, false, false, false, true));
743 flow.setId(new FlowId("12"));
744 flow.setTableId(getTableId(tableId));
747 flow.setFlowName(ORIGINAL_FLOW_NAME + "X" + flowType);
751 private FlowBuilder createtablemiss() {
752 final FlowBuilder flow = new FlowBuilder();
754 final MatchBuilder matchBuilder = new MatchBuilder();
755 flow.setMatch(matchBuilder.build());
756 flow.setInstructions(createSentToControllerInstructions().build());
758 flow.setTableId((short) 0);
759 final FlowKey key = new FlowKey(new FlowId(Long.toString(id)));
764 private short getTableId(final String tableId) {
765 final short TABLE_ID = 2;
766 short table = TABLE_ID;
768 if (tableId == null) {
773 table = Short.parseShort(tableId);
774 } catch (NumberFormatException ex) {
775 LOG.info("Parsing String tableId {} failed. Continuing with default tableId {}.",
781 private static InstructionsBuilder createDecNwTtlInstructions() {
782 final DecNwTtlBuilder ta = new DecNwTtlBuilder();
783 final DecNwTtl decNwTtl = ta.build();
784 final ActionBuilder ab = new ActionBuilder();
785 ab.setAction(new DecNwTtlCaseBuilder().setDecNwTtl(decNwTtl).build());
786 ab.withKey(new ActionKey(0));
787 // Add our drop action to a list
788 final List<Action> actionList = new ArrayList<>();
789 actionList.add(ab.build());
791 // Create an Apply Action
792 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
793 aab.setAction(actionList);
795 // Wrap our Apply Action in an Instruction
796 final InstructionBuilder ib = new InstructionBuilder();
797 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
798 ib.withKey(new InstructionKey(0));
801 // Put our Instruction in a list of Instructions
802 final InstructionsBuilder isb = new InstructionsBuilder();
803 final List<Instruction> instructions = new ArrayList<>();
804 instructions.add(ib.build());
805 ib.withKey(new InstructionKey(0));
806 isb.setInstruction(instructions);
810 private static InstructionsBuilder createMeterInstructions() {
812 final MeterBuilder aab = new MeterBuilder();
813 aab.setMeterId(new MeterId(1L));
815 final InstructionBuilder ib = new InstructionBuilder();
816 ib.setInstruction(new MeterCaseBuilder().setMeter(aab.build()).build());
818 // Put our Instruction in a list of Instructions
819 final InstructionsBuilder isb = new InstructionsBuilder();
820 final List<Instruction> instructions = new ArrayList<>();
821 ib.withKey(new InstructionKey(0));
822 instructions.add(ib.build());
823 isb.setInstruction(instructions);
827 private static InstructionsBuilder createMetadataInstructions() {
829 final WriteMetadataBuilder aab = new WriteMetadataBuilder();
830 aab.setMetadata(BigInteger.valueOf(10));
831 aab.setMetadataMask(BigInteger.valueOf(10));
833 final InstructionBuilder ib = new InstructionBuilder();
834 ib.setInstruction(new WriteMetadataCaseBuilder().setWriteMetadata(aab.build()).build());
836 // Put our Instruction in a list of Instructions
837 final InstructionsBuilder isb = new InstructionsBuilder();
838 final List<Instruction> instructions = new ArrayList<>();
839 ib.withKey(new InstructionKey(0));
840 instructions.add(ib.build());
841 isb.setInstruction(instructions);
845 private static InstructionsBuilder createGotoTableInstructions() {
847 final GoToTableBuilder aab = new GoToTableBuilder();
848 aab.setTableId((short) 5);
850 final InstructionBuilder ib = new InstructionBuilder();
851 ib.setInstruction(new GoToTableCaseBuilder().setGoToTable(aab.build()).build());
853 // Put our Instruction in a list of Instructions
854 final InstructionsBuilder isb = new InstructionsBuilder();
855 final List<Instruction> instructions = new ArrayList<>();
856 ib.withKey(new InstructionKey(0));
857 instructions.add(ib.build());
858 isb.setInstruction(instructions);
862 private static InstructionsBuilder createDropInstructions() {
863 final DropActionBuilder dab = new DropActionBuilder();
864 final DropAction dropAction = dab.build();
865 final ActionBuilder ab = new ActionBuilder();
866 ab.setAction(new DropActionCaseBuilder().setDropAction(dropAction).build());
867 ab.withKey(new ActionKey(0));
868 // Add our drop action to a list
869 final List<Action> actionList = new ArrayList<>();
870 actionList.add(ab.build());
871 ab.withKey(new ActionKey(0));
872 // Create an Apply Action
873 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
874 aab.setAction(actionList);
876 // Wrap our Apply Action in an Instruction
877 final InstructionBuilder ib = new InstructionBuilder();
878 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
880 // Put our Instruction in a list of Instructions
881 final InstructionsBuilder isb = new InstructionsBuilder();
882 final List<Instruction> instructions = new ArrayList<>();
883 ib.withKey(new InstructionKey(0));
884 instructions.add(ib.build());
885 isb.setInstruction(instructions);
889 private static InstructionsBuilder createAppyActionInstruction() {
891 final List<Action> actionList = new ArrayList<>();
892 final ActionBuilder ab = new ActionBuilder();
893 final ControllerActionBuilder controller = new ControllerActionBuilder();
894 controller.setMaxLength(5);
895 ab.setAction(new ControllerActionCaseBuilder().setControllerAction(controller.build()).build());
896 ab.withKey(new ActionKey(0));
897 actionList.add(ab.build());
898 // Create an Apply Action
899 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
900 aab.setAction(actionList);
902 // Wrap our Apply Action in an Instruction
903 final InstructionBuilder ib = new InstructionBuilder();
904 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
906 // Put our Instruction in a list of Instructions
907 final InstructionsBuilder isb = new InstructionsBuilder();
908 final List<Instruction> instructions = new ArrayList<>();
909 ib.withKey(new InstructionKey(0));
910 instructions.add(ib.build());
911 isb.setInstruction(instructions);
915 private static InstructionsBuilder createAppyActionInstruction1() {
917 final List<Action> actionList = new ArrayList<>();
918 final ActionBuilder ab = new ActionBuilder();
920 final OutputActionBuilder output = new OutputActionBuilder();
921 output.setMaxLength(56);
922 final Uri value = new Uri("PCEP");
923 output.setOutputNodeConnector(value);
924 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
925 ab.withKey(new ActionKey(0));
926 actionList.add(ab.build());
927 // Create an Apply Action
928 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
929 aab.setAction(actionList);
931 // Wrap our Apply Action in an Instruction
932 final InstructionBuilder ib = new InstructionBuilder();
933 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
935 // Put our Instruction in a list of Instructions
936 final InstructionsBuilder isb = new InstructionsBuilder();
937 final List<Instruction> instructions = new ArrayList<>();
938 ib.withKey(new InstructionKey(0));
939 instructions.add(ib.build());
940 isb.setInstruction(instructions);
944 private static InstructionsBuilder createOutputInstructions() {
946 // test case for Output Port works if the particular port exists
947 // this particular test-case is for Port : 1
948 // tested as (addMDFlow openflow:<dpid> f82)
949 final List<Action> actionList = new ArrayList<>();
950 final ActionBuilder ab = new ActionBuilder();
951 final OutputActionBuilder output = new OutputActionBuilder();
953 final Uri value = new Uri("1");
954 output.setOutputNodeConnector(value);
955 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
957 ab.withKey(new ActionKey(0));
958 actionList.add(ab.build());
959 // Create an Apply Action
960 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
961 aab.setAction(actionList);
963 // Wrap our Apply Action in an Instruction
964 final InstructionBuilder ib = new InstructionBuilder();
965 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
967 ib.withKey(new InstructionKey(0));
969 // Put our Instruction in a list of Instructions
970 final InstructionsBuilder isb = new InstructionsBuilder();
971 final List<Instruction> instructions = new ArrayList<>();
972 instructions.add(ib.build());
973 isb.setInstruction(instructions);
977 private static InstructionsBuilder createOutputInstructions(final String outputType, final int outputValue) {
978 final List<Action> actionList = new ArrayList<>();
979 final ActionBuilder ab = new ActionBuilder();
981 final OutputActionBuilder output = new OutputActionBuilder();
982 output.setMaxLength(outputValue);
983 final Uri value = new Uri(outputType);
984 output.setOutputNodeConnector(value);
985 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
987 ab.withKey(new ActionKey(0));
988 actionList.add(ab.build());
989 // Create an Apply Action
990 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
991 aab.setAction(actionList);
993 // Wrap our Apply Action in an Instruction
994 final InstructionBuilder ib = new InstructionBuilder();
995 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
997 ib.withKey(new InstructionKey(0));
999 // Put our Instruction in a list of Instructions
1000 final InstructionsBuilder isb = new InstructionsBuilder();
1001 final List<Instruction> instructions = new ArrayList<>();
1002 instructions.add(ib.build());
1003 isb.setInstruction(instructions);
1007 private static InstructionsBuilder createSentToControllerInstructions() {
1008 final List<Action> actionList = new ArrayList<>();
1009 final ActionBuilder ab = new ActionBuilder();
1011 final OutputActionBuilder output = new OutputActionBuilder();
1012 output.setMaxLength(Integer.valueOf(0xffff));
1013 final Uri value = new Uri(OutputPortValues.CONTROLLER.toString());
1014 output.setOutputNodeConnector(value);
1015 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
1017 ab.withKey(new ActionKey(0));
1018 actionList.add(ab.build());
1019 // Create an Apply Action
1020 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1021 aab.setAction(actionList);
1023 // Wrap our Apply Action in an Instruction
1024 final InstructionBuilder ib = new InstructionBuilder();
1025 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1027 ib.withKey(new InstructionKey(0));
1029 // Put our Instruction in a list of Instructions
1030 final InstructionsBuilder isb = new InstructionsBuilder();
1031 final List<Instruction> instructions = new ArrayList<>();
1032 instructions.add(ib.build());
1033 isb.setInstruction(instructions);
1038 private static InstructionsBuilder createStripVlanInstructions() {
1039 final List<Action> actionList = new ArrayList<>();
1040 final ActionBuilder ab = new ActionBuilder();
1042 final StripVlanActionBuilder stripActionBuilder = new StripVlanActionBuilder();
1043 ab.setAction(new StripVlanActionCaseBuilder().setStripVlanAction(stripActionBuilder.build()).build());
1045 ab.withKey(new ActionKey(0));
1046 actionList.add(ab.build());
1047 // Create an Apply Action
1048 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1049 aab.setAction(actionList);
1051 // Wrap our Apply Action in an Instruction
1052 final InstructionBuilder ib = new InstructionBuilder();
1053 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1055 ib.withKey(new InstructionKey(0));
1057 // Put our Instruction in a list of Instructions
1058 final InstructionsBuilder isb = new InstructionsBuilder();
1059 final List<Instruction> instructions = new ArrayList<>();
1060 instructions.add(ib.build());
1061 isb.setInstruction(instructions);
1065 private static InstructionsBuilder createAppyActionInstruction2() {
1067 final List<Action> actionList = new ArrayList<>();
1068 final ActionBuilder ab = new ActionBuilder();
1070 final PushMplsActionBuilder push = new PushMplsActionBuilder();
1071 push.setEthernetType(Integer.valueOf(0x8847));
1072 ab.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build());
1073 ab.withKey(new ActionKey(0));
1074 actionList.add(ab.build());
1075 // Create an Apply Action
1076 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1077 aab.setAction(actionList);
1079 // Wrap our Apply Action in an Instruction
1080 final InstructionBuilder ib = new InstructionBuilder();
1081 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1083 // Put our Instruction in a list of Instructions
1084 final InstructionsBuilder isb = new InstructionsBuilder();
1085 final List<Instruction> instructions = new ArrayList<>();
1086 ib.withKey(new InstructionKey(0));
1087 instructions.add(ib.build());
1088 isb.setInstruction(instructions);
1092 private static InstructionsBuilder createAppyActionInstruction3() {
1094 final List<Action> actionList = new ArrayList<>();
1095 final ActionBuilder ab = new ActionBuilder();
1097 final PushPbbActionBuilder pbb = new PushPbbActionBuilder();
1098 pbb.setEthernetType(Integer.valueOf(0x88E7));
1099 ab.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build());
1100 ab.withKey(new ActionKey(0));
1101 actionList.add(ab.build());
1102 // Create an Apply Action
1103 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1104 aab.setAction(actionList);
1106 // Wrap our Apply Action in an Instruction
1107 final InstructionBuilder ib = new InstructionBuilder();
1108 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1110 // Put our Instruction in a list of Instructions
1111 final InstructionsBuilder isb = new InstructionsBuilder();
1112 final List<Instruction> instructions = new ArrayList<>();
1113 ib.withKey(new InstructionKey(0));
1114 instructions.add(ib.build());
1115 isb.setInstruction(instructions);
1119 private static InstructionsBuilder createAppyActionInstruction4() {
1121 final List<Action> actionList = new ArrayList<>();
1122 final ActionBuilder ab = new ActionBuilder();
1124 final PushVlanActionBuilder vlan = new PushVlanActionBuilder();
1125 vlan.setEthernetType(Integer.valueOf(0x8100));
1126 ab.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(vlan.build()).build());
1127 ab.withKey(new ActionKey(0));
1128 actionList.add(ab.build());
1130 // Create an Apply Action
1131 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1132 aab.setAction(actionList);
1134 // Wrap our Apply Action in an Instruction
1135 final InstructionBuilder ib = new InstructionBuilder();
1136 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1138 // Put our Instruction in a list of Instructions
1139 final InstructionsBuilder isb = new InstructionsBuilder();
1140 final List<Instruction> instructions = new ArrayList<>();
1141 ib.withKey(new InstructionKey(0));
1142 instructions.add(ib.build());
1143 isb.setInstruction(instructions);
1147 private static InstructionsBuilder createAppyActionInstruction5() {
1149 final List<Action> actionList = new ArrayList<>();
1150 final ActionBuilder ab = new ActionBuilder();
1152 final SetDlDstActionBuilder setdl = new SetDlDstActionBuilder();
1153 setdl.setAddress(new MacAddress("00:05:b9:7c:81:5f"));
1154 ab.setAction(new SetDlDstActionCaseBuilder().setSetDlDstAction(setdl.build()).build());
1155 ab.withKey(new ActionKey(0));
1156 actionList.add(ab.build());
1157 // Create an Apply Action
1158 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1159 aab.setAction(actionList);
1161 // Wrap our Apply Action in an Instruction
1162 final InstructionBuilder ib = new InstructionBuilder();
1163 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1165 // Put our Instruction in a list of Instructions
1166 final InstructionsBuilder isb = new InstructionsBuilder();
1167 final List<Instruction> instructions = new ArrayList<>();
1168 ib.withKey(new InstructionKey(0));
1169 instructions.add(ib.build());
1170 isb.setInstruction(instructions);
1174 private static InstructionsBuilder createAppyActionInstruction6() {
1176 final List<Action> actionList = new ArrayList<>();
1177 final ActionBuilder ab = new ActionBuilder();
1179 final SetDlSrcActionBuilder src = new SetDlSrcActionBuilder();
1180 src.setAddress(new MacAddress("00:05:b9:7c:81:5f"));
1181 ab.setAction(new SetDlSrcActionCaseBuilder().setSetDlSrcAction(src.build()).build());
1182 ab.withKey(new ActionKey(0));
1183 actionList.add(ab.build());
1185 // Create an Apply Action
1186 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1187 aab.setAction(actionList);
1189 // Wrap our Apply Action in an Instruction
1190 final InstructionBuilder ib = new InstructionBuilder();
1191 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1193 // Put our Instruction in a list of Instructions
1194 final InstructionsBuilder isb = new InstructionsBuilder();
1195 final List<Instruction> instructions = new ArrayList<>();
1196 ib.withKey(new InstructionKey(0));
1197 instructions.add(ib.build());
1198 isb.setInstruction(instructions);
1202 private static InstructionsBuilder createAppyActionInstruction7() {
1204 final List<Action> actionList = new ArrayList<>();
1205 final ActionBuilder ab = new ActionBuilder();
1207 final SetVlanIdActionBuilder vl = new SetVlanIdActionBuilder();
1208 final VlanId a = new VlanId(4000);
1210 ab.setAction(new SetVlanIdActionCaseBuilder().setSetVlanIdAction(vl.build()).build());
1211 ab.withKey(new ActionKey(0));
1212 actionList.add(ab.build());
1213 // Create an Apply Action
1214 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1215 aab.setAction(actionList);
1217 // Wrap our Apply Action in an Instruction
1218 final InstructionBuilder ib = new InstructionBuilder();
1219 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1221 // Put our Instruction in a list of Instructions
1222 final InstructionsBuilder isb = new InstructionsBuilder();
1223 final List<Instruction> instructions = new ArrayList<>();
1224 ib.withKey(new InstructionKey(0));
1225 instructions.add(ib.build());
1226 isb.setInstruction(instructions);
1230 private static InstructionsBuilder createAppyActionInstruction8() {
1232 final List<Action> actionList = new ArrayList<>();
1233 final ActionBuilder ab = new ActionBuilder();
1235 final SetVlanPcpActionBuilder pcp = new SetVlanPcpActionBuilder();
1236 final VlanPcp pcp1 = new VlanPcp((short) 2);
1237 pcp.setVlanPcp(pcp1);
1238 ab.setAction(new SetVlanPcpActionCaseBuilder().setSetVlanPcpAction(pcp.build()).build());
1239 ab.withKey(new ActionKey(0));
1240 actionList.add(ab.build());
1241 // Create an Apply Action
1242 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1243 aab.setAction(actionList);
1245 // Wrap our Apply Action in an Instruction
1246 final InstructionBuilder ib = new InstructionBuilder();
1247 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1249 // Put our Instruction in a list of Instructions
1250 final InstructionsBuilder isb = new InstructionsBuilder();
1251 final List<Instruction> instructions = new ArrayList<>();
1252 ib.withKey(new InstructionKey(0));
1253 instructions.add(ib.build());
1254 isb.setInstruction(instructions);
1258 private static InstructionsBuilder createAppyActionInstruction88() {
1260 final List<Action> actionList = new ArrayList<>();
1261 final ActionBuilder ab = new ActionBuilder();
1263 final SetVlanPcpActionBuilder pcp = new SetVlanPcpActionBuilder();
1264 // the code point is a 3-bit(0-7) field representing the frame priority level
1265 final VlanPcp pcp1 = new VlanPcp((short) 4);
1266 pcp.setVlanPcp(pcp1);
1267 ab.setAction(new SetVlanPcpActionCaseBuilder().setSetVlanPcpAction(pcp.build()).build());
1268 ab.withKey(new ActionKey(0));
1269 actionList.add(ab.build());
1270 // Create an Apply Action
1271 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1272 aab.setAction(actionList);
1274 // Wrap our Apply Action in an Instruction
1275 final InstructionBuilder ib = new InstructionBuilder();
1276 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1278 // Put our Instruction in a list of Instructions
1279 final InstructionsBuilder isb = new InstructionsBuilder();
1280 final List<Instruction> instructions = new ArrayList<>();
1281 ib.withKey(new InstructionKey(0));
1282 instructions.add(ib.build());
1283 isb.setInstruction(instructions);
1287 private static InstructionsBuilder createAppyActionInstruction9() {
1289 final List<Action> actionList = new ArrayList<>();
1290 final ActionBuilder ab = new ActionBuilder();
1292 final CopyTtlInBuilder ttlin = new CopyTtlInBuilder();
1293 ab.setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(ttlin.build()).build());
1294 ab.withKey(new ActionKey(0));
1295 actionList.add(ab.build());
1296 // Create an Apply Action
1297 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1298 aab.setAction(actionList);
1300 // Wrap our Apply Action in an Instruction
1301 final InstructionBuilder ib = new InstructionBuilder();
1302 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1304 // Put our Instruction in a list of Instructions
1305 final InstructionsBuilder isb = new InstructionsBuilder();
1306 final List<Instruction> instructions = new ArrayList<>();
1307 ib.withKey(new InstructionKey(0));
1308 instructions.add(ib.build());
1309 isb.setInstruction(instructions);
1313 private static InstructionsBuilder createAppyActionInstruction10() {
1315 final List<Action> actionList = new ArrayList<>();
1316 final ActionBuilder ab = new ActionBuilder();
1318 final CopyTtlOutBuilder ttlout = new CopyTtlOutBuilder();
1319 ab.setAction(new CopyTtlOutCaseBuilder().setCopyTtlOut(ttlout.build()).build());
1320 ab.withKey(new ActionKey(0));
1321 actionList.add(ab.build());
1322 // Create an Apply Action
1323 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1324 aab.setAction(actionList);
1326 // Wrap our Apply Action in an Instruction
1327 final InstructionBuilder ib = new InstructionBuilder();
1328 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1330 // Put our Instruction in a list of Instructions
1331 final InstructionsBuilder isb = new InstructionsBuilder();
1332 final List<Instruction> instructions = new ArrayList<>();
1333 ib.withKey(new InstructionKey(0));
1334 instructions.add(ib.build());
1335 isb.setInstruction(instructions);
1339 private static InstructionsBuilder createAppyActionInstruction11() {
1341 final List<Action> actionList = new ArrayList<>();
1342 final ActionBuilder ab = new ActionBuilder();
1344 final DecMplsTtlBuilder mpls = new DecMplsTtlBuilder();
1345 ab.setAction(new DecMplsTtlCaseBuilder().setDecMplsTtl(mpls.build()).build());
1346 ab.withKey(new ActionKey(0));
1347 actionList.add(ab.build());
1348 // Create an Apply Action
1349 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1350 aab.setAction(actionList);
1352 // Wrap our Apply Action in an Instruction
1353 final InstructionBuilder ib = new InstructionBuilder();
1354 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1355 ib.withKey(new InstructionKey(0));
1358 // Put our Instruction in a list of Instruction
1359 final InstructionsBuilder isb = new InstructionsBuilder();
1360 final List<Instruction> instructions = new ArrayList<>();
1361 instructions.add(ib.build());
1362 isb.setInstruction(instructions);
1366 private static InstructionsBuilder createAppyActionInstruction12() {
1368 final List<Action> actionList = new ArrayList<>();
1369 final ActionBuilder ab = new ActionBuilder();
1371 final DecNwTtlBuilder nwttl = new DecNwTtlBuilder();
1372 ab.setAction(new DecNwTtlCaseBuilder().setDecNwTtl(nwttl.build()).build());
1373 ab.withKey(new ActionKey(0));
1374 actionList.add(ab.build());
1376 // Create an Apply Action
1377 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1378 aab.setAction(actionList);
1380 // Wrap our Apply Action in an Instruction
1381 final InstructionBuilder ib = new InstructionBuilder();
1382 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1384 // Put our Instruction in a list of Instructions
1385 final InstructionsBuilder isb = new InstructionsBuilder();
1386 final List<Instruction> instructions = new ArrayList<>();
1387 ib.withKey(new InstructionKey(0));
1388 instructions.add(ib.build());
1389 isb.setInstruction(instructions);
1393 private static InstructionsBuilder createAppyActionInstruction13() {
1395 final List<Action> actionList = new ArrayList<>();
1396 final ActionBuilder ab = new ActionBuilder();
1398 final DropActionBuilder drop = new DropActionBuilder();
1399 ab.setAction(new DropActionCaseBuilder().setDropAction(drop.build()).build());
1400 ab.withKey(new ActionKey(0));
1401 actionList.add(ab.build());
1403 // Create an Apply Action
1404 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1405 aab.setAction(actionList);
1407 // Wrap our Apply Action in an Instruction
1408 final InstructionBuilder ib = new InstructionBuilder();
1409 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1411 // Put our Instruction in a list of Instructions
1412 final InstructionsBuilder isb = new InstructionsBuilder();
1413 final List<Instruction> instructions = new ArrayList<>();
1414 ib.withKey(new InstructionKey(0));
1415 instructions.add(ib.build());
1416 isb.setInstruction(instructions);
1420 private static InstructionsBuilder createAppyActionInstruction14() {
1422 final List<Action> actionList = new ArrayList<>();
1423 final ActionBuilder ab = new ActionBuilder();
1425 final FloodActionBuilder fld = new FloodActionBuilder();
1426 ab.setAction(new FloodActionCaseBuilder().setFloodAction(fld.build()).build());
1427 ab.withKey(new ActionKey(0));
1428 actionList.add(ab.build());
1429 // Create an Apply Action
1430 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1431 aab.setAction(actionList);
1433 // Wrap our Apply Action in an Instruction
1434 final InstructionBuilder ib = new InstructionBuilder();
1435 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1437 // Put our Instruction in a list of Instructions
1438 final InstructionsBuilder isb = new InstructionsBuilder();
1439 final List<Instruction> instructions = new ArrayList<>();
1440 ib.withKey(new InstructionKey(0));
1441 instructions.add(ib.build());
1442 isb.setInstruction(instructions);
1446 private static InstructionsBuilder createAppyActionInstruction15() {
1448 final List<Action> actionList = new ArrayList<>();
1449 final ActionBuilder ab = new ActionBuilder();
1451 final FloodAllActionBuilder fldall = new FloodAllActionBuilder();
1452 ab.setAction(new FloodAllActionCaseBuilder().setFloodAllAction(fldall.build()).build());
1453 ab.withKey(new ActionKey(0));
1454 actionList.add(ab.build());
1455 // Create an Apply Action
1456 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1457 aab.setAction(actionList);
1459 // Wrap our Apply Action in an Instruction
1460 final InstructionBuilder ib = new InstructionBuilder();
1461 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1463 // Put our Instruction in a list of Instructions
1464 final InstructionsBuilder isb = new InstructionsBuilder();
1465 final List<Instruction> instructions = new ArrayList<>();
1466 ib.withKey(new InstructionKey(0));
1467 instructions.add(ib.build());
1468 isb.setInstruction(instructions);
1472 private static InstructionsBuilder createAppyActionInstruction16() {
1474 final List<Action> actionList = new ArrayList<>();
1475 final ActionBuilder ab = new ActionBuilder();
1477 final GroupActionBuilder groupActionB = new GroupActionBuilder();
1478 groupActionB.setGroupId(1L);
1479 groupActionB.setGroup("0");
1480 ab.setAction(new GroupActionCaseBuilder().setGroupAction(groupActionB.build()).build());
1481 ab.withKey(new ActionKey(0));
1482 actionList.add(ab.build());
1484 // Create an Apply Action
1485 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1486 aab.setAction(actionList);
1488 // Wrap our Apply Action in an Instruction
1489 final InstructionBuilder ib = new InstructionBuilder();
1490 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1492 // Put our Instruction in a list of Instructions
1493 final InstructionsBuilder isb = new InstructionsBuilder();
1494 final List<Instruction> instructions = new ArrayList<>();
1495 ib.withKey(new InstructionKey(0));
1496 instructions.add(ib.build());
1497 isb.setInstruction(instructions);
1501 private static InstructionsBuilder createAppyActionInstruction17() {
1503 final List<Action> actionList = new ArrayList<>();
1504 final ActionBuilder ab = new ActionBuilder();
1506 final HwPathActionBuilder hwPathB = new HwPathActionBuilder();
1507 ab.setAction(new HwPathActionCaseBuilder().setHwPathAction(hwPathB.build()).build());
1508 ab.withKey(new ActionKey(0));
1509 actionList.add(ab.build());
1510 // Create an Apply Action
1511 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1512 aab.setAction(actionList);
1514 // Wrap our Apply Action in an Instruction
1515 final InstructionBuilder ib = new InstructionBuilder();
1516 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1518 // Put our Instruction in a list of Instructions
1519 final InstructionsBuilder isb = new InstructionsBuilder();
1520 final List<Instruction> instructions = new ArrayList<>();
1521 ib.withKey(new InstructionKey(0));
1522 instructions.add(ib.build());
1523 isb.setInstruction(instructions);
1527 private static InstructionsBuilder createAppyActionInstruction18() {
1529 final List<Action> actionList = new ArrayList<>();
1530 final ActionBuilder ab = new ActionBuilder();
1532 final LoopbackActionBuilder loopbackActionBuilder = new LoopbackActionBuilder();
1533 ab.setAction(new LoopbackActionCaseBuilder().setLoopbackAction(loopbackActionBuilder.build()).build());
1534 ab.withKey(new ActionKey(0));
1535 actionList.add(ab.build());
1537 // Create an Apply Action
1538 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1539 aab.setAction(actionList);
1541 // Wrap our Apply Action in an Instruction
1542 final InstructionBuilder ib = new InstructionBuilder();
1543 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1545 // Put our Instruction in a list of Instructions
1546 final InstructionsBuilder isb = new InstructionsBuilder();
1547 final List<Instruction> instructions = new ArrayList<>();
1548 ib.withKey(new InstructionKey(0));
1549 instructions.add(ib.build());
1550 isb.setInstruction(instructions);
1554 private static InstructionsBuilder createAppyActionInstruction19() {
1556 final List<Action> actionList = new ArrayList<>();
1557 final ActionBuilder ab = new ActionBuilder();
1559 final PopMplsActionBuilder popMplsActionBuilder = new PopMplsActionBuilder();
1560 popMplsActionBuilder.setEthernetType(0XB);
1561 ab.setAction(new PopMplsActionCaseBuilder().setPopMplsAction(popMplsActionBuilder.build()).build());
1562 ab.withKey(new ActionKey(0));
1563 actionList.add(ab.build());
1564 // Create an Apply Action
1565 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1566 aab.setAction(actionList);
1568 // Wrap our Apply Action in an Instruction
1569 final InstructionBuilder ib = new InstructionBuilder();
1570 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1572 // Put our Instruction in a list of Instructions
1573 final InstructionsBuilder isb = new InstructionsBuilder();
1574 final List<Instruction> instructions = new ArrayList<>();
1575 ib.withKey(new InstructionKey(0));
1576 instructions.add(ib.build());
1577 isb.setInstruction(instructions);
1581 private static InstructionsBuilder createAppyActionInstruction20() {
1583 final List<Action> actionList = new ArrayList<>();
1584 final ActionBuilder ab = new ActionBuilder();
1586 final PopPbbActionBuilder popPbbActionBuilder = new PopPbbActionBuilder();
1587 ab.setAction(new PopPbbActionCaseBuilder().setPopPbbAction(popPbbActionBuilder.build()).build());
1588 ab.withKey(new ActionKey(0));
1589 actionList.add(ab.build());
1590 // Create an Apply Action
1591 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1592 aab.setAction(actionList);
1594 // Wrap our Apply Action in an Instruction
1595 final InstructionBuilder ib = new InstructionBuilder();
1596 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1598 // Put our Instruction in a list of Instructions
1599 final InstructionsBuilder isb = new InstructionsBuilder();
1600 final List<Instruction> instructions = new ArrayList<>();
1601 ib.withKey(new InstructionKey(0));
1602 instructions.add(ib.build());
1603 isb.setInstruction(instructions);
1607 private static InstructionsBuilder createAppyActionInstruction21() {
1609 final List<Action> actionList = new ArrayList<>();
1610 final ActionBuilder ab = new ActionBuilder();
1612 final PopVlanActionBuilder popVlanActionBuilder = new PopVlanActionBuilder();
1613 ab.setAction(new PopVlanActionCaseBuilder().setPopVlanAction(popVlanActionBuilder.build()).build());
1614 ab.withKey(new ActionKey(0));
1615 actionList.add(ab.build());
1617 // Create an Apply Action
1618 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1619 aab.setAction(actionList);
1621 // Wrap our Apply Action in an Instruction
1622 final InstructionBuilder ib = new InstructionBuilder();
1623 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1625 // Put our Instruction in a list of Instructions
1626 final InstructionsBuilder isb = new InstructionsBuilder();
1627 final List<Instruction> instructions = new ArrayList<>();
1628 ib.withKey(new InstructionKey(0));
1629 instructions.add(ib.build());
1630 isb.setInstruction(instructions);
1634 private static InstructionsBuilder createAppyActionInstruction22() {
1636 final List<Action> actionList = new ArrayList<>();
1637 final ActionBuilder ab = new ActionBuilder();
1639 final SetDlTypeActionBuilder setDlTypeActionBuilder = new SetDlTypeActionBuilder();
1640 setDlTypeActionBuilder.setDlType(new EtherType(8L));
1641 ab.setAction(new SetDlTypeActionCaseBuilder().setSetDlTypeAction(setDlTypeActionBuilder.build()).build());
1642 ab.withKey(new ActionKey(0));
1643 actionList.add(ab.build());
1645 // Create an Apply Action
1646 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1647 aab.setAction(actionList);
1649 // Wrap our Apply Action in an Instruction
1650 final InstructionBuilder ib = new InstructionBuilder();
1651 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1653 // Put our Instruction in a list of Instructions
1654 final InstructionsBuilder isb = new InstructionsBuilder();
1655 final List<Instruction> instructions = new ArrayList<>();
1656 ib.withKey(new InstructionKey(0));
1657 instructions.add(ib.build());
1658 isb.setInstruction(instructions);
1662 private static InstructionsBuilder createAppyActionInstruction23(final NodeId nodeId) {
1664 final List<Action> actionList = new ArrayList<>();
1665 final ActionBuilder ab = new ActionBuilder();
1667 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
1668 setFieldBuilder.setInPort(new NodeConnectorId(nodeId + ":2"));
1669 ab.withKey(new ActionKey(0));
1670 actionList.add(ab.build());
1672 // Create an Apply Action
1673 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1674 aab.setAction(actionList);
1676 // Wrap our Apply Action in an Instruction
1677 final InstructionBuilder ib = new InstructionBuilder();
1678 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1680 // Put our Instruction in a list of Instructions
1681 final InstructionsBuilder isb = new InstructionsBuilder();
1682 final List<Instruction> instructions = new ArrayList<>();
1683 ib.withKey(new InstructionKey(0));
1684 instructions.add(ib.build());
1685 isb.setInstruction(instructions);
1689 private static InstructionsBuilder createAppyActionInstruction24() {
1691 final List<Action> actionList = new ArrayList<>();
1692 final ActionBuilder ab = new ActionBuilder();
1694 final SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
1695 setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
1696 ab.setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(setMplsTtlActionBuilder.build()).build());
1697 ab.withKey(new ActionKey(0));
1698 actionList.add(ab.build());
1700 // Create an Apply Action
1701 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1702 aab.setAction(actionList);
1704 // Wrap our Apply Action in an Instruction
1705 final InstructionBuilder ib = new InstructionBuilder();
1706 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1708 // Put our Instruction in a list of Instructions
1709 final InstructionsBuilder isb = new InstructionsBuilder();
1710 final List<Instruction> instructions = new ArrayList<>();
1711 ib.withKey(new InstructionKey(0));
1712 instructions.add(ib.build());
1713 isb.setInstruction(instructions);
1717 private static InstructionsBuilder createAppyActionInstruction25() {
1719 final List<Action> actionList = new ArrayList<>();
1720 final ActionBuilder ab = new ActionBuilder();
1722 final SetNextHopActionBuilder setNextHopActionBuilder = new SetNextHopActionBuilder();
1723 final Ipv4Builder ipnext = new Ipv4Builder();
1724 final Ipv4Prefix prefix = new Ipv4Prefix(IPV4_PREFIX);
1725 ipnext.setIpv4Address(prefix);
1726 setNextHopActionBuilder.setAddress(ipnext.build());
1727 ab.setAction(new SetNextHopActionCaseBuilder().setSetNextHopAction(setNextHopActionBuilder.build()).build());
1728 ab.withKey(new ActionKey(0));
1729 actionList.add(ab.build());
1731 // Create an Apply Action
1732 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1733 aab.setAction(actionList);
1735 // Wrap our Apply Action in an Instruction
1736 final InstructionBuilder ib = new InstructionBuilder();
1737 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1739 // Put our Instruction in a list of Instructions
1740 final InstructionsBuilder isb = new InstructionsBuilder();
1741 final List<Instruction> instructions = new ArrayList<>();
1742 ib.withKey(new InstructionKey(0));
1743 instructions.add(ib.build());
1744 isb.setInstruction(instructions);
1748 private static InstructionsBuilder createAppyActionInstruction26() {
1750 final List<Action> actionList = new ArrayList<>();
1751 final ActionBuilder ab = new ActionBuilder();
1753 final SetNwDstActionBuilder setNwDstActionBuilder = new SetNwDstActionBuilder();
1754 final Ipv4Builder ipdst = new Ipv4Builder();
1755 final Ipv4Prefix prefixdst = new Ipv4Prefix("10.0.0.21/24");
1756 ipdst.setIpv4Address(prefixdst);
1757 setNwDstActionBuilder.setAddress(ipdst.build());
1758 ab.setAction(new SetNwDstActionCaseBuilder().setSetNwDstAction(setNwDstActionBuilder.build()).build());
1759 ab.withKey(new ActionKey(0));
1760 actionList.add(ab.build());
1762 // Create an Apply Action
1763 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1764 aab.setAction(actionList);
1766 // Wrap our Apply Action in an Instruction
1767 final InstructionBuilder ib = new InstructionBuilder();
1768 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1770 // Put our Instruction in a list of Instructions
1771 final InstructionsBuilder isb = new InstructionsBuilder();
1772 final List<Instruction> instructions = new ArrayList<>();
1773 ib.withKey(new InstructionKey(0));
1774 instructions.add(ib.build());
1775 isb.setInstruction(instructions);
1779 private static InstructionsBuilder createAppyActionInstruction27() {
1781 final List<Action> actionList = new ArrayList<>();
1782 final ActionBuilder ab = new ActionBuilder();
1784 final SetNwSrcActionBuilder setNwsrcActionBuilder = new SetNwSrcActionBuilder();
1785 final Ipv4Builder ipsrc = new Ipv4Builder();
1786 final Ipv4Prefix prefixsrc = new Ipv4Prefix("10.0.23.21/24");
1787 ipsrc.setIpv4Address(prefixsrc);
1788 setNwsrcActionBuilder.setAddress(ipsrc.build());
1789 ab.setAction(new SetNwSrcActionCaseBuilder().setSetNwSrcAction(setNwsrcActionBuilder.build()).build());
1790 ab.withKey(new ActionKey(0));
1791 actionList.add(ab.build());
1793 // Create an Apply Action
1794 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1795 aab.setAction(actionList);
1797 // Wrap our Apply Action in an Instruction
1798 final InstructionBuilder ib = new InstructionBuilder();
1799 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1801 // Put our Instruction in a list of Instructions
1802 final InstructionsBuilder isb = new InstructionsBuilder();
1803 final List<Instruction> instructions = new ArrayList<>();
1804 ib.withKey(new InstructionKey(0));
1805 instructions.add(ib.build());
1806 isb.setInstruction(instructions);
1810 private static InstructionsBuilder createAppyActionInstruction28() {
1812 final List<Action> actionList = new ArrayList<>();
1813 final ActionBuilder ab = new ActionBuilder();
1815 final SetNwTosActionBuilder setNwTosActionBuilder = new SetNwTosActionBuilder();
1816 setNwTosActionBuilder.setTos(8);
1817 ab.setAction(new SetNwTosActionCaseBuilder().setSetNwTosAction(setNwTosActionBuilder.build()).build());
1818 ab.withKey(new ActionKey(0));
1819 actionList.add(ab.build());
1820 // Create an Apply Action
1821 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1822 aab.setAction(actionList);
1824 // Wrap our Apply Action in an Instruction
1825 final InstructionBuilder ib = new InstructionBuilder();
1826 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1828 // Put our Instruction in a list of Instructions
1829 final InstructionsBuilder isb = new InstructionsBuilder();
1830 final List<Instruction> instructions = new ArrayList<>();
1831 ib.withKey(new InstructionKey(0));
1832 instructions.add(ib.build());
1833 isb.setInstruction(instructions);
1837 private static InstructionsBuilder createAppyActionInstruction29() {
1839 final List<Action> actionList = new ArrayList<>();
1840 final ActionBuilder ab = new ActionBuilder();
1842 final SetNwTtlActionBuilder setNwTtlActionBuilder = new SetNwTtlActionBuilder();
1843 setNwTtlActionBuilder.setNwTtl((short) 1);
1844 ab.setAction(new SetNwTtlActionCaseBuilder().setSetNwTtlAction(setNwTtlActionBuilder.build()).build());
1845 ab.withKey(new ActionKey(0));
1846 actionList.add(ab.build());
1848 // Create an Apply Action
1849 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1850 aab.setAction(actionList);
1852 // Wrap our Apply Action in an Instruction
1853 final InstructionBuilder ib = new InstructionBuilder();
1854 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1856 // Put our Instruction in a list of Instructions
1857 final InstructionsBuilder isb = new InstructionsBuilder();
1858 final List<Instruction> instructions = new ArrayList<>();
1859 ib.withKey(new InstructionKey(0));
1860 instructions.add(ib.build());
1861 isb.setInstruction(instructions);
1865 private static InstructionsBuilder createAppyActionInstruction30() {
1867 final List<Action> actionList = new ArrayList<>();
1868 final ActionBuilder ab = new ActionBuilder();
1870 final SetQueueActionBuilder setQueueActionBuilder = new SetQueueActionBuilder();
1871 setQueueActionBuilder.setQueueId(1L);
1872 ab.setAction(new SetQueueActionCaseBuilder().setSetQueueAction(setQueueActionBuilder.build()).build());
1873 ab.withKey(new ActionKey(0));
1874 actionList.add(ab.build());
1875 // Create an Apply Action
1876 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1877 aab.setAction(actionList);
1879 // Wrap our Apply Action in an Instruction
1880 final InstructionBuilder ib = new InstructionBuilder();
1881 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1883 // Put our Instruction in a list of Instructions
1884 final InstructionsBuilder isb = new InstructionsBuilder();
1885 final List<Instruction> instructions = new ArrayList<>();
1886 ib.withKey(new InstructionKey(0));
1887 instructions.add(ib.build());
1888 isb.setInstruction(instructions);
1892 private static InstructionsBuilder createAppyActionInstruction31() {
1894 final List<Action> actionList = new ArrayList<>();
1895 final ActionBuilder ab = new ActionBuilder();
1897 final SetTpDstActionBuilder setTpDstActionBuilder = new SetTpDstActionBuilder();
1898 setTpDstActionBuilder.setPort(new PortNumber(109));
1900 ab.setAction(new SetTpDstActionCaseBuilder().setSetTpDstAction(setTpDstActionBuilder.build()).build());
1901 ab.withKey(new ActionKey(0));
1902 actionList.add(ab.build());
1903 // Create an Apply Action
1904 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1905 aab.setAction(actionList);
1907 // Wrap our Apply Action in an Instruction
1908 final InstructionBuilder ib = new InstructionBuilder();
1909 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1911 // Put our Instruction in a list of Instructions
1912 final InstructionsBuilder isb = new InstructionsBuilder();
1913 final List<Instruction> instructions = new ArrayList<>();
1914 ib.withKey(new InstructionKey(0));
1915 instructions.add(ib.build());
1916 isb.setInstruction(instructions);
1920 private static InstructionsBuilder createAppyActionInstruction32() {
1922 final List<Action> actionList = new ArrayList<>();
1923 final ActionBuilder ab = new ActionBuilder();
1925 final SetTpSrcActionBuilder setTpSrcActionBuilder = new SetTpSrcActionBuilder();
1926 setTpSrcActionBuilder.setPort(new PortNumber(109));
1927 ab.setAction(new SetTpSrcActionCaseBuilder().setSetTpSrcAction(setTpSrcActionBuilder.build()).build());
1928 ab.withKey(new ActionKey(0));
1929 actionList.add(ab.build());
1931 // Create an Apply Action
1932 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1933 aab.setAction(actionList);
1935 // Wrap our Apply Action in an Instruction
1936 final InstructionBuilder ib = new InstructionBuilder();
1937 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1939 // Put our Instruction in a list of Instructions
1940 final InstructionsBuilder isb = new InstructionsBuilder();
1941 final List<Instruction> instructions = new ArrayList<>();
1942 ib.withKey(new InstructionKey(0));
1943 instructions.add(ib.build());
1944 isb.setInstruction(instructions);
1948 private static InstructionsBuilder createAppyActionInstruction33() {
1950 final List<Action> actionList = new ArrayList<>();
1951 final ActionBuilder ab = new ActionBuilder();
1953 final SetVlanCfiActionBuilder setVlanCfiActionBuilder = new SetVlanCfiActionBuilder();
1954 setVlanCfiActionBuilder.setVlanCfi(new VlanCfi(2));
1955 ab.setAction(new SetVlanCfiActionCaseBuilder().setSetVlanCfiAction(setVlanCfiActionBuilder.build()).build());
1956 ab.withKey(new ActionKey(0));
1957 actionList.add(ab.build());
1959 // Create an Apply Action
1960 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1961 aab.setAction(actionList);
1963 // Wrap our Apply Action in an Instruction
1964 final InstructionBuilder ib = new InstructionBuilder();
1965 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1967 // Put our Instruction in a list of Instructions
1968 final InstructionsBuilder isb = new InstructionsBuilder();
1969 final List<Instruction> instructions = new ArrayList<>();
1970 ib.withKey(new InstructionKey(0));
1971 instructions.add(ib.build());
1972 isb.setInstruction(instructions);
1976 private static InstructionsBuilder createAppyActionInstruction34() {
1978 final List<Action> actionList = new ArrayList<>();
1979 final ActionBuilder ab = new ActionBuilder();
1981 final SwPathActionBuilder swPathAction = new SwPathActionBuilder();
1982 ab.setAction(new SwPathActionCaseBuilder().setSwPathAction(swPathAction.build()).build());
1983 ab.withKey(new ActionKey(0));
1984 actionList.add(ab.build());
1986 // Create an Apply Action
1987 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1988 aab.setAction(actionList);
1990 // Wrap our Apply Action in an Instruction
1991 final InstructionBuilder ib = new InstructionBuilder();
1992 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1994 // Put our Instruction in a list of Instructions
1995 final InstructionsBuilder isb = new InstructionsBuilder();
1996 final List<Instruction> instructions = new ArrayList<>();
1997 ib.withKey(new InstructionKey(0));
1998 instructions.add(ib.build());
1999 isb.setInstruction(instructions);
2003 private static InstructionsBuilder createAppyActionInstruction35() {
2005 final List<Action> actionList = new ArrayList<>();
2006 final ActionBuilder ab = new ActionBuilder();
2007 final ActionBuilder ab1 = new ActionBuilder();
2008 final ActionBuilder ab2 = new ActionBuilder();
2010 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2011 final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
2012 final SetFieldBuilder setFieldBuilder2 = new SetFieldBuilder();
2015 final EthernetMatchBuilder ethernetMatch = new EthernetMatchBuilder();
2016 final EthernetSourceBuilder ethSourceBuilder = new EthernetSourceBuilder();
2017 ethSourceBuilder.setAddress(new MacAddress("00:00:00:00:00:01"));
2018 final EthernetMatchBuilder ethernetMatch1 = new EthernetMatchBuilder();
2019 final EthernetDestinationBuilder ethDestBuilder = new EthernetDestinationBuilder();
2020 ethDestBuilder.setAddress(new MacAddress("00:00:00:00:00:02"));
2021 final EthernetMatchBuilder ethernetMatch2 = new EthernetMatchBuilder();
2022 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
2023 ethTypeBuilder.setType(new EtherType(0x86ddL));
2025 ethernetMatch.setEthernetSource(ethSourceBuilder.build());
2026 ethernetMatch1.setEthernetDestination(ethDestBuilder.build());
2027 ethernetMatch2.setEthernetType(ethTypeBuilder.build());
2028 setFieldBuilder.setEthernetMatch(ethernetMatch.build());
2029 setFieldBuilder1.setEthernetMatch(ethernetMatch1.build());
2030 setFieldBuilder2.setEthernetMatch(ethernetMatch2.build());
2031 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2032 ab.withKey(new ActionKey(0));
2033 actionList.add(ab.build());
2035 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
2036 ab1.withKey(new ActionKey(1));
2037 actionList.add(ab1.build());
2039 ab2.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder2.build()).build());
2040 ab2.withKey(new ActionKey(2));
2041 actionList.add(ab2.build());
2043 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2044 aab.setAction(actionList);
2046 final InstructionBuilder ib = new InstructionBuilder();
2047 ib.withKey(new InstructionKey(0));
2048 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2050 // Put our Instruction in a list of Instructions
2051 final InstructionsBuilder isb = new InstructionsBuilder();
2052 final List<Instruction> instructions = new ArrayList<>();
2053 ib.withKey(new InstructionKey(0));
2054 instructions.add(ib.build());
2055 isb.setInstruction(instructions);
2059 private static InstructionsBuilder createAppyActionInstruction36() {
2061 final List<Action> actionList = new ArrayList<>();
2062 final ActionBuilder ab = new ActionBuilder();
2063 final ActionBuilder ab1 = new ActionBuilder();
2065 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2066 final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
2069 final VlanMatchBuilder vlanBuilder = new VlanMatchBuilder();
2070 final VlanMatchBuilder vlanBuilder1 = new VlanMatchBuilder();
2071 final VlanIdBuilder vlanIdBuilder = new VlanIdBuilder();
2072 final VlanId vlanId = new VlanId(10);
2073 final VlanPcp vpcp = new VlanPcp((short) 3);
2074 vlanBuilder.setVlanPcp(vpcp);
2075 vlanBuilder1.setVlanId(vlanIdBuilder.setVlanId(vlanId).setVlanIdPresent(true).build());
2076 setFieldBuilder.setVlanMatch(vlanBuilder.build());
2077 setFieldBuilder1.setVlanMatch(vlanBuilder1.build());
2078 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2079 ab.withKey(new ActionKey(0));
2080 actionList.add(ab.build());
2081 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
2082 ab1.withKey(new ActionKey(1));
2083 actionList.add(ab1.build());
2085 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2086 aab.setAction(actionList);
2088 final InstructionBuilder ib = new InstructionBuilder();
2089 ib.withKey(new InstructionKey(0));
2090 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2092 // Put our Instruction in a list of Instructions
2093 final InstructionsBuilder isb = new InstructionsBuilder();
2094 final List<Instruction> instructions = new ArrayList<>();
2095 instructions.add(ib.build());
2096 isb.setInstruction(instructions);
2100 private static InstructionsBuilder createAppyActionInstruction37() {
2102 final List<Action> actionList = new ArrayList<>();
2103 final ActionBuilder ab = new ActionBuilder();
2104 final ActionBuilder ab1 = new ActionBuilder();
2105 final ActionBuilder ab2 = new ActionBuilder();
2107 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2108 final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
2109 final SetFieldBuilder setFieldBuilder2 = new SetFieldBuilder();
2111 final IpMatchBuilder ipmatch = new IpMatchBuilder();
2112 final IpMatchBuilder ipmatch1 = new IpMatchBuilder();
2113 final IpMatchBuilder ipmatch2 = new IpMatchBuilder();
2114 final Dscp dscp = new Dscp((short) 3);
2115 ipmatch.setIpDscp(dscp);
2116 ipmatch1.setIpEcn((short) 2);
2117 ipmatch2.setIpProtocol((short) 120);
2118 setFieldBuilder.setIpMatch(ipmatch.build());
2119 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2120 ab.withKey(new ActionKey(0));
2121 actionList.add(ab.build());
2123 setFieldBuilder1.setIpMatch(ipmatch1.build());
2124 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
2125 ab1.withKey(new ActionKey(1));
2126 actionList.add(ab1.build());
2128 setFieldBuilder2.setIpMatch(ipmatch2.build());
2129 ab2.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder2.build()).build());
2130 ab2.withKey(new ActionKey(2));
2131 actionList.add(ab2.build());
2133 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2134 aab.setAction(actionList);
2136 final InstructionBuilder ib = new InstructionBuilder();
2137 ib.withKey(new InstructionKey(0));
2138 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2140 // Put our Instruction in a list of Instructions
2141 final InstructionsBuilder isb = new InstructionsBuilder();
2142 final List<Instruction> instructions = new ArrayList<>();
2143 instructions.add(ib.build());
2144 isb.setInstruction(instructions);
2148 private static InstructionsBuilder createAppyActionInstruction38() {
2150 final List<Action> actionList = new ArrayList<>();
2151 final ActionBuilder ab = new ActionBuilder();
2152 final ActionBuilder ab1 = new ActionBuilder();
2154 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2155 final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
2157 final Ipv4MatchBuilder ipv4Match = new Ipv4MatchBuilder();
2158 final Ipv4MatchBuilder ipv4Match1 = new Ipv4MatchBuilder();
2159 final Ipv4Prefix dstip = new Ipv4Prefix("200.71.9.5210");
2160 final Ipv4Prefix srcip = new Ipv4Prefix("100.1.1.1");
2161 ipv4Match1.setIpv4Destination(dstip);
2162 ipv4Match.setIpv4Source(srcip);
2163 setFieldBuilder.setLayer3Match(ipv4Match.build());
2164 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2165 ab.withKey(new ActionKey(0));
2166 actionList.add(ab.build());
2168 setFieldBuilder1.setLayer3Match(ipv4Match1.build());
2169 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
2170 ab1.withKey(new ActionKey(1));
2171 actionList.add(ab1.build());
2173 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2174 aab.setAction(actionList);
2176 final InstructionBuilder ib = new InstructionBuilder();
2177 ib.withKey(new InstructionKey(0));
2178 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2180 // Put our Instruction in a list of Instructions
2181 final InstructionsBuilder isb = new InstructionsBuilder();
2182 final List<Instruction> instructions = new ArrayList<>();
2183 instructions.add(ib.build());
2184 isb.setInstruction(instructions);
2188 private static InstructionsBuilder createAppyActionInstruction39() {
2190 final List<Action> actionList = new ArrayList<>();
2191 final ActionBuilder ab = new ActionBuilder();
2192 final ActionBuilder ab1 = new ActionBuilder();
2194 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2195 final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
2198 final PortNumber tcpsrcport = new PortNumber(1213);
2199 final PortNumber tcpdstport = new PortNumber(646);
2200 final TcpMatchBuilder tcpmatch = new TcpMatchBuilder();
2201 final TcpMatchBuilder tcpmatch1 = new TcpMatchBuilder();
2202 tcpmatch.setTcpSourcePort(tcpsrcport);
2203 tcpmatch1.setTcpDestinationPort(tcpdstport);
2204 setFieldBuilder.setLayer4Match(tcpmatch.build());
2205 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2206 ab.withKey(new ActionKey(0));
2207 actionList.add(ab.build());
2209 setFieldBuilder1.setLayer4Match(tcpmatch1.build());
2210 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
2211 ab1.withKey(new ActionKey(1));
2212 actionList.add(ab.build());
2214 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2215 aab.setAction(actionList);
2217 final InstructionBuilder ib = new InstructionBuilder();
2218 ib.withKey(new InstructionKey(0));
2219 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2221 // Put our Instruction in a list of Instructions
2222 final InstructionsBuilder isb = new InstructionsBuilder();
2223 final List<Instruction> instructions = new ArrayList<>();
2224 instructions.add(ib.build());
2225 isb.setInstruction(instructions);
2229 private static InstructionsBuilder createAppyActionInstruction40() {
2231 final List<Action> actionList = new ArrayList<>();
2232 final ActionBuilder ab = new ActionBuilder();
2233 final ActionBuilder ab1 = new ActionBuilder();
2235 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2236 final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
2239 final PortNumber udpsrcport = new PortNumber(1325);
2240 final PortNumber udpdstport = new PortNumber(42);
2241 final UdpMatchBuilder udpmatch = new UdpMatchBuilder();
2242 final UdpMatchBuilder udpmatch1 = new UdpMatchBuilder();
2243 udpmatch.setUdpDestinationPort(udpdstport);
2244 udpmatch1.setUdpSourcePort(udpsrcport);
2245 setFieldBuilder.setLayer4Match(udpmatch.build());
2246 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2247 ab.withKey(new ActionKey(0));
2248 actionList.add(ab.build());
2250 setFieldBuilder1.setLayer4Match(udpmatch1.build());
2251 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
2252 ab1.withKey(new ActionKey(1));
2253 actionList.add(ab1.build());
2255 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2256 aab.setAction(actionList);
2258 final InstructionBuilder ib = new InstructionBuilder();
2259 ib.withKey(new InstructionKey(0));
2260 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2262 // Put our Instruction in a list of Instructions
2263 final InstructionsBuilder isb = new InstructionsBuilder();
2264 final List<Instruction> instructions = new ArrayList<>();
2265 instructions.add(ib.build());
2266 isb.setInstruction(instructions);
2270 private static InstructionsBuilder createAppyActionInstruction41() {
2272 final List<Action> actionList = new ArrayList<>();
2273 final ActionBuilder ab = new ActionBuilder();
2274 final ActionBuilder ab1 = new ActionBuilder();
2276 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2277 final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
2280 final SctpMatchBuilder sctpmatch = new SctpMatchBuilder();
2281 final SctpMatchBuilder sctpmatch1 = new SctpMatchBuilder();
2282 final PortNumber srcport = new PortNumber(1435);
2283 final PortNumber dstport = new PortNumber(22);
2284 sctpmatch.setSctpSourcePort(srcport);
2285 sctpmatch1.setSctpDestinationPort(dstport);
2286 setFieldBuilder.setLayer4Match(sctpmatch.build());
2287 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2288 ab.withKey(new ActionKey(0));
2289 actionList.add(ab.build());
2291 setFieldBuilder1.setLayer4Match(sctpmatch1.build());
2292 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
2293 ab1.withKey(new ActionKey(1));
2294 actionList.add(ab1.build());
2296 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2297 aab.setAction(actionList);
2299 final InstructionBuilder ib = new InstructionBuilder();
2300 ib.withKey(new InstructionKey(0));
2301 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2303 // Put our Instruction in a list of Instructions
2304 final InstructionsBuilder isb = new InstructionsBuilder();
2305 final List<Instruction> instructions = new ArrayList<>();
2306 instructions.add(ib.build());
2307 isb.setInstruction(instructions);
2311 private static InstructionsBuilder createAppyActionInstruction42() {
2313 final List<Action> actionList = new ArrayList<>();
2314 final ActionBuilder ab = new ActionBuilder();
2315 final ActionBuilder ab1 = new ActionBuilder();
2316 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2317 final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
2320 final Icmpv4MatchBuilder icmpv4match = new Icmpv4MatchBuilder();
2321 final Icmpv4MatchBuilder icmpv4match1 = new Icmpv4MatchBuilder();
2322 icmpv4match.setIcmpv4Type((short) 8);
2323 icmpv4match1.setIcmpv4Code((short) 0);
2324 setFieldBuilder.setIcmpv4Match(icmpv4match.build());
2325 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2326 ab.withKey(new ActionKey(0));
2327 actionList.add(ab.build());
2329 setFieldBuilder1.setIcmpv4Match(icmpv4match1.build());
2330 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
2331 ab1.withKey(new ActionKey(1));
2332 actionList.add(ab1.build());
2334 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2335 aab.setAction(actionList);
2337 final InstructionBuilder ib = new InstructionBuilder();
2338 ib.withKey(new InstructionKey(0));
2339 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2341 // Put our Instruction in a list of Instructions
2342 final InstructionsBuilder isb = new InstructionsBuilder();
2343 final List<Instruction> instructions = new ArrayList<>();
2344 instructions.add(ib.build());
2345 isb.setInstruction(instructions);
2349 private static InstructionsBuilder createAppyActionInstruction43() {
2351 final List<Action> actionList = new ArrayList<>();
2352 final ActionBuilder ab = new ActionBuilder();
2353 final ActionBuilder ab1 = new ActionBuilder();
2354 final ActionBuilder ab2 = new ActionBuilder();
2355 final ActionBuilder ab3 = new ActionBuilder();
2356 final ActionBuilder ab4 = new ActionBuilder();
2358 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2359 final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
2360 final SetFieldBuilder setFieldBuilder2 = new SetFieldBuilder();
2361 final SetFieldBuilder setFieldBuilder3 = new SetFieldBuilder();
2362 final SetFieldBuilder setFieldBuilder4 = new SetFieldBuilder();
2364 // setting the values of ARP
2365 final MacAddress macdest = new MacAddress(DEST_MAC_ADDRESS);
2366 final MacAddress macsrc = new MacAddress(SRC_MAC_ADDRESS);
2367 final Ipv4Prefix dstiparp = new Ipv4Prefix("200.71.9.52");
2368 final Ipv4Prefix srciparp = new Ipv4Prefix("100.1.1.1");
2369 // create ARP match action
2370 final ArpMatchBuilder arpmatch = new ArpMatchBuilder();
2371 final ArpMatchBuilder arpmatch1 = new ArpMatchBuilder();
2372 final ArpMatchBuilder arpmatch2 = new ArpMatchBuilder();
2373 final ArpMatchBuilder arpmatch3 = new ArpMatchBuilder();
2374 final ArpMatchBuilder arpmatch4 = new ArpMatchBuilder();
2375 final ArpSourceHardwareAddressBuilder arpsrc = new ArpSourceHardwareAddressBuilder();
2376 arpsrc.setAddress(macsrc);
2377 final ArpTargetHardwareAddressBuilder arpdst = new ArpTargetHardwareAddressBuilder();
2378 arpdst.setAddress(macdest);
2379 arpmatch.setArpOp(2);
2380 arpmatch1.setArpSourceHardwareAddress(arpsrc.build());
2381 arpmatch2.setArpTargetHardwareAddress(arpdst.build());
2382 arpmatch3.setArpSourceTransportAddress(srciparp);
2383 arpmatch4.setArpTargetTransportAddress(dstiparp);
2384 setFieldBuilder.setLayer3Match(arpmatch.build());
2385 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2386 ab.withKey(new ActionKey(0));
2387 actionList.add(ab.build());
2389 setFieldBuilder1.setLayer3Match(arpmatch1.build());
2390 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
2391 ab1.withKey(new ActionKey(1));
2392 actionList.add(ab1.build());
2394 setFieldBuilder2.setLayer3Match(arpmatch2.build());
2395 ab2.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder2.build()).build());
2396 ab2.withKey(new ActionKey(2));
2397 actionList.add(ab2.build());
2399 setFieldBuilder3.setLayer3Match(arpmatch3.build());
2400 ab3.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder3.build()).build());
2401 ab3.withKey(new ActionKey(3));
2402 actionList.add(ab3.build());
2404 setFieldBuilder4.setLayer3Match(arpmatch4.build());
2405 ab4.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder4.build()).build());
2406 ab4.withKey(new ActionKey(4));
2407 actionList.add(ab4.build());
2409 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2410 aab.setAction(actionList);
2412 final InstructionBuilder ib = new InstructionBuilder();
2413 ib.withKey(new InstructionKey(0));
2414 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2416 // Put our Instruction in a list of Instructions
2417 final InstructionsBuilder isb = new InstructionsBuilder();
2418 final List<Instruction> instructions = new ArrayList<>();
2419 instructions.add(ib.build());
2420 isb.setInstruction(instructions);
2424 private static InstructionsBuilder createAppyActionInstruction44() {
2426 final List<Action> actionLists = new ArrayList<>();
2427 final ActionBuilder ab = new ActionBuilder();
2428 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2429 final ActionBuilder ab1 = new ActionBuilder();
2430 final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
2431 final ActionBuilder ab5 = new ActionBuilder();
2432 final SetFieldBuilder setFieldBuilder5 = new SetFieldBuilder();
2433 final ActionBuilder ab6 = new ActionBuilder();
2434 final SetFieldBuilder setFieldBuilder6 = new SetFieldBuilder();
2437 final Ipv6MatchBuilder ipv6Builder = new Ipv6MatchBuilder();
2438 final Ipv6MatchBuilder ipv6Builder1 = new Ipv6MatchBuilder();
2439 final Ipv6MatchBuilder ipv6Builder5 = new Ipv6MatchBuilder();
2440 final Ipv6MatchBuilder ipv6Builder6 = new Ipv6MatchBuilder();
2442 final Ipv6Prefix dstip6 = new Ipv6Prefix("2002::2/128");
2443 final Ipv6Prefix srcip6 = new Ipv6Prefix("2001:0:0:0:0:0:0:1/128");
2444 final Ipv6ExtHeaderBuilder nextheader = new Ipv6ExtHeaderBuilder();
2445 nextheader.setIpv6Exthdr(58);
2446 final Ipv6LabelBuilder ipv6label = new Ipv6LabelBuilder();
2447 final Ipv6FlowLabel label = new Ipv6FlowLabel(10028L);
2448 ipv6label.setIpv6Flabel(label);
2450 ipv6Builder.setIpv6Source(srcip6);
2451 ipv6Builder1.setIpv6Destination(dstip6);
2452 ipv6Builder5.setIpv6ExtHeader(nextheader.build());
2453 ipv6Builder6.setIpv6Label(ipv6label.build());
2455 setFieldBuilder.setLayer3Match(ipv6Builder.build());
2456 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2457 ab.withKey(new ActionKey(0));
2458 actionLists.add(ab.build());
2460 setFieldBuilder1.setLayer3Match(ipv6Builder1.build());
2461 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
2462 ab1.withKey(new ActionKey(1));
2463 actionLists.add(ab1.build());
2465 setFieldBuilder5.setLayer3Match(ipv6Builder5.build());
2466 ab5.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder5.build()).build());
2467 ab5.withKey(new ActionKey(5));
2468 actionLists.add(ab5.build());
2470 setFieldBuilder6.setLayer3Match(ipv6Builder6.build());
2471 ab6.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder6.build()).build());
2472 ab6.withKey(new ActionKey(6));
2473 actionLists.add(ab6.build());
2475 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2476 aab.setAction(actionLists);
2478 final InstructionBuilder ib = new InstructionBuilder();
2479 ib.withKey(new InstructionKey(0));
2480 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2482 // Put our Instruction in a list of Instructions
2483 final InstructionsBuilder isb = new InstructionsBuilder();
2484 final List<Instruction> instructions = new ArrayList<>();
2485 instructions.add(ib.build());
2486 isb.setInstruction(instructions);
2490 private static InstructionsBuilder createAppyActionInstruction45() {
2492 final List<Action> actionList = new ArrayList<>();
2493 final ActionBuilder ab = new ActionBuilder();
2494 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2495 final ActionBuilder ab1 = new ActionBuilder();
2496 final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
2499 final Icmpv6MatchBuilder icmpv6match = new Icmpv6MatchBuilder();
2500 final Icmpv6MatchBuilder icmpv6match1 = new Icmpv6MatchBuilder();
2501 icmpv6match.setIcmpv6Type((short) 135);
2502 icmpv6match1.setIcmpv6Code((short) 0);
2503 setFieldBuilder.setIcmpv6Match(icmpv6match.build());
2504 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2505 ab.withKey(new ActionKey(0));
2506 actionList.add(ab.build());
2508 setFieldBuilder1.setIcmpv6Match(icmpv6match1.build());
2509 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
2510 ab1.withKey(new ActionKey(1));
2511 actionList.add(ab1.build());
2513 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2514 aab.setAction(actionList);
2516 final InstructionBuilder ib = new InstructionBuilder();
2517 ib.withKey(new InstructionKey(0));
2518 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2520 // Put our Instruction in a list of Instructions
2521 final InstructionsBuilder isb = new InstructionsBuilder();
2522 final List<Instruction> instructions = new ArrayList<>();
2523 instructions.add(ib.build());
2524 isb.setInstruction(instructions);
2528 private static InstructionsBuilder createAppyActionInstruction46() {
2530 final List<Action> actionList = new ArrayList<>();
2531 final ActionBuilder ab = new ActionBuilder();
2532 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2533 final ActionBuilder ab1 = new ActionBuilder();
2534 final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
2535 final ActionBuilder ab2 = new ActionBuilder();
2536 final SetFieldBuilder setFieldBuilder2 = new SetFieldBuilder();
2539 final ProtocolMatchFieldsBuilder protomatch = new ProtocolMatchFieldsBuilder();
2540 final ProtocolMatchFieldsBuilder protomatch1 = new ProtocolMatchFieldsBuilder();
2541 final ProtocolMatchFieldsBuilder protomatch2 = new ProtocolMatchFieldsBuilder();
2542 protomatch.setMplsLabel((long) 36008);
2543 protomatch1.setMplsTc((short) 4);
2544 protomatch2.setMplsBos((short) 1);
2545 setFieldBuilder.setProtocolMatchFields(protomatch.build());
2546 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2547 ab.withKey(new ActionKey(0));
2548 actionList.add(ab.build());
2550 setFieldBuilder1.setProtocolMatchFields(protomatch1.build());
2551 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
2552 ab1.withKey(new ActionKey(1));
2553 actionList.add(ab1.build());
2555 setFieldBuilder2.setProtocolMatchFields(protomatch2.build());
2556 ab2.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder2.build()).build());
2557 ab2.withKey(new ActionKey(2));
2558 actionList.add(ab2.build());
2560 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2561 aab.setAction(actionList);
2563 final InstructionBuilder ib = new InstructionBuilder();
2564 ib.withKey(new InstructionKey(0));
2565 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2567 // Put our Instruction in a list of Instructions
2568 final InstructionsBuilder isb = new InstructionsBuilder();
2569 final List<Instruction> instructions = new ArrayList<>();
2570 instructions.add(ib.build());
2571 isb.setInstruction(instructions);
2575 private static InstructionsBuilder createAppyActionInstruction47() {
2577 final List<Action> actionList = new ArrayList<>();
2578 final ActionBuilder ab = new ActionBuilder();
2579 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2581 final ProtocolMatchFieldsBuilder protomatch = new ProtocolMatchFieldsBuilder();
2582 protomatch.setPbb(new PbbBuilder().setPbbIsid(4L).setPbbMask(
2583 new BigInteger(new byte[]{0, 1, 0, 0}).longValue()).build());
2584 setFieldBuilder.setProtocolMatchFields(protomatch.build());
2585 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2586 actionList.add(ab.build());
2588 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2589 aab.setAction(actionList);
2591 final InstructionBuilder ib = new InstructionBuilder();
2592 ib.withKey(new InstructionKey(0));
2593 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2595 // Put our Instruction in a list of Instructions
2596 final InstructionsBuilder isb = new InstructionsBuilder();
2597 final List<Instruction> instructions = new ArrayList<>();
2598 instructions.add(ib.build());
2599 isb.setInstruction(instructions);
2603 private static InstructionsBuilder createAppyActionInstruction48() {
2605 final List<Action> actionList = new ArrayList<>();
2606 final ActionBuilder ab = new ActionBuilder();
2607 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2609 final TunnelBuilder tunnel = new TunnelBuilder();
2610 tunnel.setTunnelId(BigInteger.valueOf(10668));
2611 setFieldBuilder.setTunnel(tunnel.build());
2612 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2613 ab.withKey(new ActionKey(0));
2614 actionList.add(ab.build());
2616 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2617 aab.setAction(actionList);
2619 final InstructionBuilder ib = new InstructionBuilder();
2620 ib.withKey(new InstructionKey(0));
2621 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2623 // Put our Instruction in a list of Instructions
2624 final InstructionsBuilder isb = new InstructionsBuilder();
2625 final List<Instruction> instructions = new ArrayList<>();
2626 instructions.add(ib.build());
2627 isb.setInstruction(instructions);
2631 private static InstructionsBuilder createTunnelIpv4DstInstructions() {
2633 final List<Action> actionList = new ArrayList<>();
2634 final ActionBuilder ab = new ActionBuilder();
2635 // Build the tunnel endpoint destination IPv4 address
2636 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2637 final Ipv4Prefix dstIp = new Ipv4Prefix("172.16.100.100");
2638 // Add the mew IPv4 object as the tunnel destination
2639 final TunnelIpv4MatchBuilder tunnelIpv4DstMatchBuilder = new TunnelIpv4MatchBuilder();
2640 tunnelIpv4DstMatchBuilder.setTunnelIpv4Destination(dstIp);
2641 setFieldBuilder.setLayer3Match(tunnelIpv4DstMatchBuilder.build());
2642 // Add the IPv4 tunnel dst to the set_field value
2643 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2645 ab.withKey(new ActionKey(0));
2646 actionList.add(ab.build());
2647 // Resulting action is a per/flow src TEP (set_field:172.16.100.100->tun_dst)
2648 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2649 aab.setAction(actionList);
2650 // Add the action to the ordered list of Instructions
2651 final InstructionBuilder ib = new InstructionBuilder();
2653 ib.withKey(new InstructionKey(0));
2654 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2655 // Add the Instruction in a list of Instructions
2656 final InstructionsBuilder isb = new InstructionsBuilder();
2657 final List<Instruction> instructions = new ArrayList<>();
2658 instructions.add(ib.build());
2659 isb.setInstruction(instructions);
2663 private static InstructionsBuilder createTunnelIpv4SrcInstructions() {
2665 final List<Action> actionList = new ArrayList<>();
2666 final ActionBuilder ab = new ActionBuilder();
2667 // Build the tunnel endpoint source IPv4 address
2668 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2669 final Ipv4Prefix dstIp = new Ipv4Prefix("172.16.100.200");
2670 // Add the new IPv4 object as the tunnel destination
2671 final TunnelIpv4MatchBuilder tunnelIpv4MatchBuilder = new TunnelIpv4MatchBuilder();
2672 tunnelIpv4MatchBuilder.setTunnelIpv4Source(dstIp);
2673 setFieldBuilder.setLayer3Match(tunnelIpv4MatchBuilder.build());
2674 // Add the IPv4 tunnel src to the set_field value
2675 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2677 ab.withKey(new ActionKey(0));
2678 actionList.add(ab.build());
2679 // Resulting action is a per/flow src TEP (set_field:172.16.100.100->tun_src)
2680 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2681 aab.setAction(actionList);
2682 // Add the action to the ordered list of Instructions
2683 final InstructionBuilder ib = new InstructionBuilder();
2685 ib.withKey(new InstructionKey(0));
2686 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2687 // Put our Instruction in a list of Instructions
2688 final InstructionsBuilder isb = new InstructionsBuilder();
2689 final List<Instruction> instructions = new ArrayList<>();
2690 instructions.add(ib.build());
2691 isb.setInstruction(instructions);
2695 private static MatchBuilder createLLDPMatch() {
2696 final MatchBuilder match = new MatchBuilder();
2697 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
2698 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
2699 ethTypeBuilder.setType(new EtherType(0x88ccL));
2700 eth.setEthernetType(ethTypeBuilder.build());
2701 match.setEthernetMatch(eth.build());
2705 private static MatchBuilder createMatch1() {
2706 final MatchBuilder match = new MatchBuilder();
2707 final Ipv4MatchBuilder ipv4Match = new Ipv4MatchBuilder();
2708 final Ipv4Prefix prefix = new Ipv4Prefix(IPV4_PREFIX);
2709 ipv4Match.setIpv4Destination(prefix);
2710 final Ipv4Match i4m = ipv4Match.build();
2711 match.setLayer3Match(i4m);
2713 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
2714 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
2715 ethTypeBuilder.setType(new EtherType(0x0800L));
2716 eth.setEthernetType(ethTypeBuilder.build());
2717 match.setEthernetMatch(eth.build());
2721 private static MatchBuilder createMatch2() {
2722 final MatchBuilder match = new MatchBuilder();
2723 final Ipv4MatchBuilder ipv4Match = new Ipv4MatchBuilder();
2724 final Ipv4Prefix prefix = new Ipv4Prefix("10.0.0.1");
2725 ipv4Match.setIpv4Source(prefix);
2726 final Ipv4Match i4m = ipv4Match.build();
2727 match.setLayer3Match(i4m);
2729 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
2730 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
2731 ethTypeBuilder.setType(new EtherType(0x0800L));
2732 eth.setEthernetType(ethTypeBuilder.build());
2733 match.setEthernetMatch(eth.build());
2737 private static MatchBuilder createMatch3() {
2738 final MatchBuilder match = new MatchBuilder();
2739 final EthernetMatchBuilder ethernetMatch = new EthernetMatchBuilder();
2740 final EthernetSourceBuilder ethSourceBuilder = new EthernetSourceBuilder();
2741 ethSourceBuilder.setAddress(new MacAddress("00:00:00:00:00:01"));
2742 ethernetMatch.setEthernetSource(ethSourceBuilder.build());
2743 match.setEthernetMatch(ethernetMatch.build());
2748 private static MatchBuilder createICMPv6Match1() {
2750 final MatchBuilder match = new MatchBuilder();
2751 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
2752 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
2753 ethTypeBuilder.setType(new EtherType(0x86ddL));
2754 eth.setEthernetType(ethTypeBuilder.build());
2755 match.setEthernetMatch(eth.build());
2758 final IpMatchBuilder ipmatch = new IpMatchBuilder();
2759 ipmatch.setIpProtocol((short) 256);
2760 match.setIpMatch(ipmatch.build());
2763 final Icmpv6MatchBuilder icmpv6match = new Icmpv6MatchBuilder();
2766 icmpv6match.setIcmpv6Type((short) 135);
2767 icmpv6match.setIcmpv6Code((short) 1);
2768 match.setIcmpv6Match(icmpv6match.build());
2773 private static MatchBuilder createMatch33() {
2775 final MatchBuilder match = new MatchBuilder();
2776 final Ipv4MatchBuilder ipv4Match = new Ipv4MatchBuilder();
2777 final Ipv4Prefix prefix = new Ipv4Prefix("10.0.0.10");
2778 ipv4Match.setIpv4Source(prefix);
2779 final Ipv4Match i4m = ipv4Match.build();
2780 match.setLayer3Match(i4m);
2782 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
2783 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
2784 ethTypeBuilder.setType(new EtherType(0xfffeL));
2785 eth.setEthernetType(ethTypeBuilder.build());
2786 match.setEthernetMatch(eth.build());
2790 private static MatchBuilder createInphyportMatch(final NodeId nodeId) {
2791 final MatchBuilder match = new MatchBuilder();
2792 match.setInPort(new NodeConnectorId(nodeId + ":202"));
2793 match.setInPhyPort(new NodeConnectorId(nodeId + ":10122"));
2797 private static MatchBuilder createEthernetMatch() {
2798 final MatchBuilder match = new MatchBuilder();
2799 final EthernetMatchBuilder ethmatch = new EthernetMatchBuilder(); // ethernettype
2801 final EthernetTypeBuilder ethtype = new EthernetTypeBuilder();
2802 final EtherType type = new EtherType(0x0800L);
2803 ethmatch.setEthernetType(ethtype.setType(type).build());
2805 final EthernetDestinationBuilder ethdest = new EthernetDestinationBuilder(); // ethernet
2808 final MacAddress macdest = new MacAddress(DEST_MAC_ADDRESS);
2809 ethdest.setAddress(macdest);
2810 ethdest.setMask(new MacAddress("ff:ff:ff:00:00:00"));
2812 ethmatch.setEthernetDestination(ethdest.build());
2814 final EthernetSourceBuilder ethsrc = new EthernetSourceBuilder();
2815 final MacAddress macsrc = new MacAddress(SRC_MAC_ADDRESS);
2816 ethsrc.setAddress(macsrc);
2817 ethsrc.setMask(new MacAddress("ff:ff:00:00:00:00"));
2819 ethmatch.setEthernetSource(ethsrc.build());
2820 match.setEthernetMatch(ethmatch.build());
2825 private static MatchBuilder createVlanMatch() {
2826 final MatchBuilder match = new MatchBuilder();
2828 final VlanMatchBuilder vlanBuilder = new VlanMatchBuilder();
2829 final VlanIdBuilder vlanIdBuilder = new VlanIdBuilder();
2830 final VlanId vlanId = new VlanId(10);
2831 final VlanPcp vpcp = new VlanPcp((short) 3);
2832 vlanBuilder.setVlanPcp(vpcp);
2833 vlanIdBuilder.setVlanId(vlanId);
2834 vlanIdBuilder.setVlanIdPresent(true);
2835 vlanBuilder.setVlanId(vlanIdBuilder.build());
2836 match.setVlanMatch(vlanBuilder.build());
2840 private static MatchBuilder createArpMatch() {
2841 final MatchBuilder match = new MatchBuilder();
2843 final EthernetMatchBuilder ethmatch = new EthernetMatchBuilder();
2844 final MacAddress macdest = new MacAddress(DEST_MAC_ADDRESS);
2845 final MacAddress macsrc = new MacAddress(SRC_MAC_ADDRESS);
2847 final EthernetTypeBuilder ethtype = new EthernetTypeBuilder();
2848 final EtherType type = new EtherType(0x0806L);
2849 ethmatch.setEthernetType(ethtype.setType(type).build());
2852 final Ipv4Prefix dstip = new Ipv4Prefix("200.71.9.52/10");
2853 final Ipv4Prefix srcip = new Ipv4Prefix("100.1.1.1/8");
2856 final ArpMatchBuilder arpmatch = new ArpMatchBuilder();
2857 final ArpSourceHardwareAddressBuilder arpsrc = new ArpSourceHardwareAddressBuilder();
2858 arpsrc.setAddress(macsrc);
2859 arpsrc.setMask(new MacAddress("ff:ff:ff:00:00:00"));
2860 final ArpTargetHardwareAddressBuilder arpdst = new ArpTargetHardwareAddressBuilder();
2861 arpdst.setAddress(macdest);
2862 arpdst.setMask(new MacAddress("ff:ff:00:00:00:00"));
2863 arpmatch.setArpOp(2);
2864 arpmatch.setArpSourceHardwareAddress(arpsrc.build());
2865 arpmatch.setArpTargetHardwareAddress(arpdst.build());
2866 arpmatch.setArpSourceTransportAddress(srcip);
2867 arpmatch.setArpTargetTransportAddress(dstip);
2869 match.setEthernetMatch(ethmatch.build());
2870 match.setLayer3Match(arpmatch.build());
2875 private static MatchBuilder createL3IPv6Match() {
2876 final MatchBuilder match = new MatchBuilder();
2878 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
2879 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
2880 ethTypeBuilder.setType(new EtherType(0x86ddL));
2881 eth.setEthernetType(ethTypeBuilder.build());
2882 match.setEthernetMatch(eth.build());
2884 final MacAddress ndsll = new MacAddress("c2:00:54:f5:00:00");
2885 final MacAddress ndtll = new MacAddress("00:0c:29:0e:4c:67");
2886 final Ipv6ExtHeaderBuilder nextheader = new Ipv6ExtHeaderBuilder();
2887 nextheader.setIpv6Exthdr(58);
2888 final Ipv6LabelBuilder ipv6label = new Ipv6LabelBuilder();
2889 final Ipv6FlowLabel label = new Ipv6FlowLabel(10028L);
2890 ipv6label.setIpv6Flabel(label);
2891 ipv6label.setFlabelMask(new Ipv6FlowLabel(1L));
2893 final Icmpv6MatchBuilder icmpv6match = new Icmpv6MatchBuilder(); // icmpv6
2895 icmpv6match.setIcmpv6Type((short) 135);
2896 icmpv6match.setIcmpv6Code((short) 0);
2897 match.setIcmpv6Match(icmpv6match.build());
2899 final Ipv6MatchBuilder ipv6match = new Ipv6MatchBuilder();
2900 // ipv6match.setIpv6Source(srcip6);
2901 // ipv6match.setIpv6Destination(dstip6);
2902 // ipv6match.setIpv6ExtHeader(nextheader.build());
2903 ipv6match.setIpv6NdSll(ndsll);
2904 ipv6match.setIpv6NdTll(ndtll);
2905 // ipv6match.setIpv6NdTarget(ndtarget);
2906 ipv6match.setIpv6Label(ipv6label.build());
2908 match.setLayer3Match(ipv6match.build());
2913 private static MatchBuilder createICMPv4Match() {
2914 final MatchBuilder match = new MatchBuilder();
2915 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
2916 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
2917 ethTypeBuilder.setType(new EtherType(0x0800L));
2918 eth.setEthernetType(ethTypeBuilder.build());
2919 match.setEthernetMatch(eth.build());
2921 final IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version
2922 ipmatch.setIpProtocol((short) 1);
2923 match.setIpMatch(ipmatch.build());
2925 final Icmpv4MatchBuilder icmpv4match = new Icmpv4MatchBuilder(); // icmpv4
2927 icmpv4match.setIcmpv4Type((short) 8);
2928 icmpv4match.setIcmpv4Code((short) 0);
2929 match.setIcmpv4Match(icmpv4match.build());
2933 private static MatchBuilder createICMPv6Match() {
2935 final MatchBuilder match = new MatchBuilder();
2936 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
2937 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
2938 ethTypeBuilder.setType(new EtherType(0x86ddL));
2939 eth.setEthernetType(ethTypeBuilder.build());
2940 match.setEthernetMatch(eth.build());
2942 final IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version
2943 ipmatch.setIpProtocol((short) 58);
2944 match.setIpMatch(ipmatch.build());
2946 final Icmpv6MatchBuilder icmpv6match = new Icmpv6MatchBuilder(); // icmpv6
2948 icmpv6match.setIcmpv6Type((short) 135);
2949 icmpv6match.setIcmpv6Code((short) 1);
2950 match.setIcmpv6Match(icmpv6match.build());
2955 private static MatchBuilder createToSMatch() {
2956 final MatchBuilder match = new MatchBuilder();
2957 final EthernetMatchBuilder ethmatch = new EthernetMatchBuilder();
2958 final EthernetTypeBuilder ethtype = new EthernetTypeBuilder();
2959 final EtherType type = new EtherType(0x0800L);
2960 ethmatch.setEthernetType(ethtype.setType(type).build());
2961 match.setEthernetMatch(ethmatch.build());
2963 final IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version
2964 ipmatch.setIpProtocol((short) 6);
2965 final Dscp dscp = new Dscp((short) 8);
2966 ipmatch.setIpDscp(dscp);
2967 match.setIpMatch(ipmatch.build());
2971 private static MatchBuilder createL4TCPMatch() {
2972 final MatchBuilder match = new MatchBuilder();
2974 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
2975 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
2976 ethTypeBuilder.setType(new EtherType(0x0800L));
2977 eth.setEthernetType(ethTypeBuilder.build());
2978 match.setEthernetMatch(eth.build());
2980 final IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version
2981 ipmatch.setIpProtocol((short) 6);
2982 match.setIpMatch(ipmatch.build());
2984 final PortNumber srcport = new PortNumber(1213);
2985 final PortNumber dstport = new PortNumber(646);
2986 final TcpMatchBuilder tcpmatch = new TcpMatchBuilder(); // tcp match
2987 tcpmatch.setTcpSourcePort(srcport);
2988 tcpmatch.setTcpDestinationPort(dstport);
2989 match.setLayer4Match(tcpmatch.build());
2994 private static MatchBuilder createL4UDPMatch() {
2995 final MatchBuilder match = new MatchBuilder();
2997 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
2998 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
2999 ethTypeBuilder.setType(new EtherType(0x0800L));
3000 eth.setEthernetType(ethTypeBuilder.build());
3001 match.setEthernetMatch(eth.build());
3003 final IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version
3004 ipmatch.setIpProtocol((short) 17);
3005 match.setIpMatch(ipmatch.build());
3007 final PortNumber srcport = new PortNumber(1325);
3008 final PortNumber dstport = new PortNumber(42);
3009 final UdpMatchBuilder udpmatch = new UdpMatchBuilder(); // udp match
3010 udpmatch.setUdpDestinationPort(dstport);
3011 udpmatch.setUdpSourcePort(srcport);
3012 match.setLayer4Match(udpmatch.build());
3017 private static MatchBuilder createL4SCTPMatch() {
3018 final MatchBuilder match = new MatchBuilder();
3020 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
3021 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
3022 ethTypeBuilder.setType(new EtherType(0x0800L));
3023 eth.setEthernetType(ethTypeBuilder.build());
3024 match.setEthernetMatch(eth.build());
3026 final IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version
3027 ipmatch.setIpProtocol((short) 132);
3028 match.setIpMatch(ipmatch.build());
3030 final SctpMatchBuilder sctpmatch = new SctpMatchBuilder();
3031 final PortNumber srcport = new PortNumber(1435);
3032 final PortNumber dstport = new PortNumber(22);
3033 sctpmatch.setSctpSourcePort(srcport);
3034 sctpmatch.setSctpDestinationPort(dstport);
3035 match.setLayer4Match(sctpmatch.build());
3040 private static MatchBuilder createMetadataMatch() {
3041 final MatchBuilder match = new MatchBuilder();
3042 final byte[] metamask = new byte[]{(byte) -1, (byte) -1, (byte) -1, 0, 0, 0, (byte) 1, (byte) 1};
3043 final MetadataBuilder metadata = new MetadataBuilder(); // metadata match
3044 metadata.setMetadata(BigInteger.valueOf(500L));
3045 metadata.setMetadataMask(new BigInteger(1, metamask));
3046 match.setMetadata(metadata.build());
3051 private static MatchBuilder createMplsMatch() {
3052 final MatchBuilder match = new MatchBuilder();
3054 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
3055 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
3056 ethTypeBuilder.setType(new EtherType(0x8847L));
3057 eth.setEthernetType(ethTypeBuilder.build());
3058 match.setEthernetMatch(eth.build());
3060 final ProtocolMatchFieldsBuilder protomatch = new ProtocolMatchFieldsBuilder(); // mpls
3062 protomatch.setMplsLabel((long) 36008);
3063 protomatch.setMplsTc((short) 4);
3064 protomatch.setMplsBos((short) 1);
3065 match.setProtocolMatchFields(protomatch.build());
3071 private static MatchBuilder createPbbMatch() {
3072 final MatchBuilder match = new MatchBuilder();
3074 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
3075 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
3076 ethTypeBuilder.setType(new EtherType(0x88E7L));
3077 eth.setEthernetType(ethTypeBuilder.build());
3078 match.setEthernetMatch(eth.build());
3080 final ProtocolMatchFieldsBuilder protomatch = new ProtocolMatchFieldsBuilder(); // mpls
3082 protomatch.setPbb(new PbbBuilder().setPbbIsid(4L).setPbbMask(
3083 new BigInteger(new byte[]{0, 1, 0, 0}).longValue()).build());
3084 match.setProtocolMatchFields(protomatch.build());
3090 private static MatchBuilder createTunnelIDMatch() {
3091 final MatchBuilder match = new MatchBuilder();
3092 final TunnelBuilder tunnel = new TunnelBuilder(); // tunnel id match
3093 tunnel.setTunnelId(BigInteger.valueOf(10668));
3094 final byte[] mask = new byte[]{(byte) -1, (byte) -1, (byte) -1, 0, 0, 0, (byte) 1, (byte) 1};
3095 tunnel.setTunnelMask(new BigInteger(1, mask));
3096 match.setTunnel(tunnel.build());
3102 * Test match for TCP_Flags.
3104 * @return match containing Ethertype (0x0800), IP Protocol (TCP), TCP_Flag (SYN)
3106 //FIXME: move to extensible support
3107 private static MatchBuilder createTcpFlagMatch() {
3108 final MatchBuilder match = new MatchBuilder();
3111 final EthernetMatchBuilder ethernetType = new EthernetMatchBuilder();
3112 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
3113 ethTypeBuilder.setType(new EtherType(0x0800L));
3114 ethernetType.setEthernetType(ethTypeBuilder.build());
3115 match.setEthernetMatch(ethernetType.build());
3117 // TCP Protocol Match
3118 final IpMatchBuilder ipMatch = new IpMatchBuilder(); // ipv4 version
3119 ipMatch.setIpProtocol((short) 6);
3120 match.setIpMatch(ipMatch.build());
3123 final PortNumber dstPort = new PortNumber(80);
3124 final TcpMatchBuilder tcpMatch = new TcpMatchBuilder();
3125 tcpMatch.setTcpDestinationPort(dstPort);
3126 match.setLayer4Match(tcpMatch.build());
3128 * Defined TCP Flag values in OVS v2.1+
3129 * TCP_FIN 0x001 / TCP_SYN 0x002 / TCP_RST 0x004
3130 * TCP_PSH 0x008 / TCP_ACK 0x010 / TCP_URG 0x020
3131 * TCP_ECE 0x040 / TCP_CWR 0x080 / TCP_NS 0x100
3133 final TcpFlagsMatchBuilder tcpFlagsMatch = new TcpFlagsMatchBuilder();
3134 tcpFlagsMatch.setTcpFlags(0x002);
3135 match.setTcpFlagsMatch(tcpFlagsMatch.build());
3140 public void _removeMDFlow(final CommandInterpreter ci) {
3141 final ReadWriteTransaction modification = dataBroker.newReadWriteTransaction();
3142 final NodeBuilder tn = createTestNode(ci.nextArgument());
3143 final String flowtype = ci.nextArgument();
3145 if (flowtype.equals("fTM")) {
3146 tf = createtablemiss();
3148 tf = createTestFlow(tn, flowtype, ci.nextArgument());
3150 final InstanceIdentifier<Flow> path1 = InstanceIdentifier.create(Nodes.class).child(Node.class, tn.key())
3151 .augmentation(FlowCapableNode.class).child(Table.class, new TableKey(tf.getTableId()))
3152 .child(Flow.class, tf.key());
3153 modification.delete(LogicalDatastoreType.CONFIGURATION, path1);
3154 final ListenableFuture<Void> commitFuture = modification.submit();
3155 Futures.addCallback(commitFuture, new FutureCallback<Void>() {
3157 public void onSuccess(final Void notUsed) {
3158 ci.println("Status of Group Data Loaded Transaction: success.");
3162 public void onFailure(final Throwable throwable) {
3163 LOG.error("Status of Group Data Loaded Transaction : failure. Reason : {}", throwable);
3164 ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable));
3166 }, MoreExecutors.directExecutor());
3172 * @param ci arguments: switchId flowType tableNum, e.g.: addMDFlow openflow:1 f1 42
3174 public void _addMDFlow(final CommandInterpreter ci) {
3175 final NodeBuilder tn = createTestNode(ci.nextArgument());
3176 final String flowtype = ci.nextArgument();
3178 if (flowtype.equals("fTM")) {
3179 tf = createtablemiss();
3181 tf = createTestFlow(tn, flowtype, ci.nextArgument());
3183 writeFlow(ci, tf, tn);
3186 private void writeFlow(final CommandInterpreter ci, final FlowBuilder flow, final NodeBuilder nodeBuilder) {
3187 final ReadWriteTransaction modification = dataBroker.newReadWriteTransaction();
3188 final InstanceIdentifier<Flow> path1 = InstanceIdentifier.create(Nodes.class)
3189 .child(Node.class, nodeBuilder.key()).augmentation(FlowCapableNode.class)
3190 .child(Table.class, new TableKey(flow.getTableId())).child(Flow.class, flow.key());
3191 modification.merge(LogicalDatastoreType.CONFIGURATION,
3192 nodeBuilderToInstanceId(nodeBuilder), nodeBuilder.build(), true);
3193 modification.merge(LogicalDatastoreType.CONFIGURATION, path1, flow.build(), true);
3194 final ListenableFuture<Void> commitFuture = modification.submit();
3195 Futures.addCallback(commitFuture, new FutureCallback<Void>() {
3197 public void onSuccess(final Void notUsed) {
3198 ci.println("Status of Group Data Loaded Transaction: success.");
3202 public void onFailure(final Throwable throwable) {
3203 LOG.error("Status of Group Data Loaded Transaction : failure. Reason : {}", throwable);
3204 ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable));
3206 }, MoreExecutors.directExecutor());
3209 public void _modifyMDFlow(final CommandInterpreter ci) {
3210 final NodeBuilder tn = createTestNode(ci.nextArgument());
3211 final FlowBuilder tf = createTestFlow(tn, ci.nextArgument(), ci.nextArgument());
3212 tf.setFlowName(UPDATED_FLOW_NAME);
3213 writeFlow(ci, tf, tn);
3214 tf.setFlowName(ORIGINAL_FLOW_NAME);
3215 writeFlow(ci, tf, tn);
3219 public String getHelp() {
3224 * usage testSwitchFlows <numberOfSwitches> <numberOfFlows> <warmup iterations> <Number Of Threads>
3225 * ex: _perfFlowTest 10 5 1 2
3227 public void _perfFlowTest(final CommandInterpreter ci) {
3229 final String numberOfSwtichesStr = ci.nextArgument();
3230 final String numberOfFlowsStr = ci.nextArgument();
3231 final String warmupIterationsStr = ci.nextArgument();
3232 final String threadCountStr = ci.nextArgument();
3233 final String warmUpStr = ci.nextArgument();
3235 int numberOfSwtiches = 0;
3236 int numberOfFlows = 0;
3237 int warmupIterations = 0;
3238 boolean warmUpIterations = false;
3240 int threadCount = 0;
3241 if (numberOfSwtichesStr != null && !numberOfSwtichesStr.trim().equals("")) {
3242 numberOfSwtiches = Integer.parseInt(numberOfSwtichesStr);
3244 numberOfSwtiches = 2;
3247 if (numberOfFlowsStr != null && !numberOfFlowsStr.trim().equals("")) {
3248 numberOfFlows = Integer.parseInt(numberOfFlowsStr);
3253 if (warmupIterationsStr != null && !warmupIterationsStr.trim().equals("")) {
3254 warmupIterations = Integer.parseInt(warmupIterationsStr);
3256 warmupIterations = 2;
3259 if (threadCountStr != null && !threadCountStr.trim().equals("")) {
3260 threadCount = Integer.parseInt(threadCountStr);
3264 if (warmUpStr != null && !warmUpStr.trim().equals("") && warmUpStr.trim().equals("true")) {
3265 warmUpIterations = true;
3267 warmUpIterations = false;
3269 ci.println("* Test Configurations*");
3270 ci.println("* numberOfSwtiches:::" + numberOfSwtiches + "");
3271 ci.println("* numberOfFlows:::" + numberOfFlows + "");
3272 ci.println("* warmupIterations:::" + warmupIterations + "");
3273 ci.println("* Number of Threads :::" + threadCount + "");
3274 ci.println("* Warmup Required? :::" + warmUpIterations + "");
3276 String dataPath = "openflow:1";
3279 final String tableId = "0";
3280 if (warmUpIterations) {
3281 ci.println("----Warmup Started-----");
3282 for (int j = 1; j <= warmupIterations; j++) {
3283 for (int i = 1; i <= numberOfSwtiches; i++) {
3284 dataPath = "openflow:" + i;
3285 tn = createTestNode(dataPath);
3286 for (int flow = 1; flow < numberOfFlows; flow++) {
3287 tf = createTestFlowPerfTest("f1", tableId, flow);
3288 writeFlow(ci, tf, tn);
3293 ci.println("----Warmup Done-----");
3296 final ExecutorService executor = Executors.newFixedThreadPool(threadCount);
3298 for (int t = 0; t < threadCount; t++) {
3300 final Runnable tRunnable = new TestFlowThread(numberOfSwtiches, numberOfFlows, ci, t, tableID);
3301 executor.execute(tRunnable);
3303 executor.shutdown();
3304 executor.awaitTermination(1, TimeUnit.SECONDS);
3305 } catch (InterruptedException e) {
3306 ci.println("Exception:" + e.getMessage());
3310 public class TestFlowThread implements Runnable {
3312 int numberOfSwitches;
3314 CommandInterpreter ci;
3318 TestFlowThread(final int numberOfSwtiches, final int numberOfFlows, final CommandInterpreter ci,
3319 final int threadNumber, final int tableID) {
3320 this.numberOfSwitches = numberOfSwtiches;
3321 this.numberOfFlows = numberOfFlows;
3323 this.theadNumber = threadNumber;
3324 this.tableID = tableID;
3332 public void executeFlow() {
3334 String dataPath = "openflow:1";
3337 //String tableId = "0";
3339 ci.println("New Thread started with id: ID_"
3340 + this.theadNumber);
3341 int totalNumberOfFlows = 0;
3342 final long startTime = System.currentTimeMillis();
3344 for (int i = 1; i <= this.numberOfSwitches; i++) {
3345 dataPath = "openflow:" + i;
3346 tn = createTestNode(dataPath);
3347 for (int flow2 = 1; flow2 <= this.numberOfFlows; flow2++) {
3348 tf = createTestFlowPerfTest("f1", "" + this.tableID, flow2);
3349 writeFlow(this.ci, tf, tn);
3350 totalNumberOfFlows++;
3353 final long endTime = System.currentTimeMillis();
3354 final long timeInSeconds = Math.round((endTime - startTime) / 1000.0F);
3355 if (timeInSeconds > 0) {
3356 ci.println("Total flows added in Thread:" + this.theadNumber + ": Flows/Sec::"
3357 + Math.round((float)totalNumberOfFlows / timeInSeconds));
3359 ci.println("Total flows added in Thread:" + this.theadNumber + ": Flows/Sec::" + totalNumberOfFlows);
3366 * usage testAllFlows <dp>
3367 * ex: _perfFlowTest 1
3369 @SuppressWarnings("checkstyle:IllegalCatch")
3370 public void _testAllFlows(final CommandInterpreter ci) {
3371 String dataPathID = ci.nextArgument();
3372 final int numberOfFlows = 82;
3373 if (dataPathID == null || dataPathID.trim().equals("")) {
3376 ci.println("* Test All Flows *");
3377 ci.println("* dataPathID:::" + dataPathID + "");
3378 final String dataPath = "openflow:" + dataPathID;
3379 final String tableId = "0";
3380 final NodeBuilder tn = createTestNode(dataPath);
3382 for (int flow = 1; flow < numberOfFlows; flow++) {
3383 final String flowID = "f" + flow;
3385 tf = createTestFlow(tn, flowID, tableId);
3386 writeFlow(ci, tf, tn);
3387 } catch (RuntimeException e) {
3388 ci.println("--Test Failed--Issue found while adding flow" + flow);