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
8 package org.opendaylight.openflowplugin.test;
10 import com.google.common.util.concurrent.FutureCallback;
11 import com.google.common.util.concurrent.MoreExecutors;
12 import java.math.BigInteger;
13 import java.util.ArrayList;
14 import java.util.List;
15 import java.util.concurrent.ExecutorService;
16 import java.util.concurrent.Executors;
17 import java.util.concurrent.TimeUnit;
18 import org.eclipse.osgi.framework.console.CommandInterpreter;
19 import org.eclipse.osgi.framework.console.CommandProvider;
20 import org.opendaylight.mdsal.binding.api.DataBroker;
21 import org.opendaylight.mdsal.binding.api.NotificationService;
22 import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
23 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Dscp;
25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
26 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6FlowLabel;
27 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix;
28 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
29 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
30 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.VlanCfi;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.ControllerActionCaseBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlOutCaseBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecMplsTtlCaseBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecNwTtlCaseBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DropActionCaseBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.FloodActionCaseBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.FloodAllActionCaseBuilder;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.HwPathActionCaseBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.LoopbackActionCaseBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopMplsActionCaseBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopPbbActionCaseBuilder;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCaseBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushMplsActionCaseBuilder;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushPbbActionCaseBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionCaseBuilder;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlDstActionCaseBuilder;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlSrcActionCaseBuilder;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlTypeActionCaseBuilder;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetFieldCaseBuilder;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNextHopActionCaseBuilder;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwDstActionCaseBuilder;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwSrcActionCaseBuilder;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTosActionCaseBuilder;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTtlActionCaseBuilder;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetQueueActionCaseBuilder;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetTpDstActionCaseBuilder;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetTpSrcActionCaseBuilder;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanCfiActionCaseBuilder;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanIdActionCaseBuilder;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanPcpActionCaseBuilder;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.StripVlanActionCaseBuilder;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SwPathActionCaseBuilder;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.controller.action._case.ControllerActionBuilder;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlInBuilder;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.out._case.CopyTtlOutBuilder;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.mpls.ttl._case.DecMplsTtlBuilder;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.nw.ttl._case.DecNwTtl;
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.nw.ttl._case.DecNwTtlBuilder;
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.drop.action._case.DropAction;
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.drop.action._case.DropActionBuilder;
76 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.flood.action._case.FloodActionBuilder;
77 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.flood.all.action._case.FloodAllActionBuilder;
78 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder;
79 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.hw.path.action._case.HwPathActionBuilder;
80 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.loopback.action._case.LoopbackActionBuilder;
81 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;
82 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.mpls.action._case.PopMplsActionBuilder;
83 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.pbb.action._case.PopPbbActionBuilder;
84 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.vlan.action._case.PopVlanActionBuilder;
85 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.mpls.action._case.PushMplsActionBuilder;
86 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.pbb.action._case.PushPbbActionBuilder;
87 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.vlan.action._case.PushVlanActionBuilder;
88 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.dst.action._case.SetDlDstActionBuilder;
89 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.src.action._case.SetDlSrcActionBuilder;
90 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.type.action._case.SetDlTypeActionBuilder;
91 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.field._case.SetFieldBuilder;
92 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlActionBuilder;
93 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.next.hop.action._case.SetNextHopActionBuilder;
94 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.dst.action._case.SetNwDstActionBuilder;
95 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.src.action._case.SetNwSrcActionBuilder;
96 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.tos.action._case.SetNwTosActionBuilder;
97 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.ttl.action._case.SetNwTtlActionBuilder;
98 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.queue.action._case.SetQueueActionBuilder;
99 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.tp.dst.action._case.SetTpDstActionBuilder;
100 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.tp.src.action._case.SetTpSrcActionBuilder;
101 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.cfi.action._case.SetVlanCfiActionBuilder;
102 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.id.action._case.SetVlanIdActionBuilder;
103 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.pcp.action._case.SetVlanPcpActionBuilder;
104 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.strip.vlan.action._case.StripVlanActionBuilder;
105 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.sw.path.action._case.SwPathActionBuilder;
106 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
107 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
108 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
109 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.address.Ipv4Builder;
110 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
111 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowId;
112 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table;
113 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.TableKey;
114 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
115 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
116 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowKey;
117 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalFlowListener;
118 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowCookie;
119 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowModFlags;
120 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues;
121 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.InstructionsBuilder;
122 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
123 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ApplyActionsCaseBuilder;
124 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.GoToTableCaseBuilder;
125 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.MeterCaseBuilder;
126 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.WriteMetadataCaseBuilder;
127 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.apply.actions._case.ApplyActionsBuilder;
128 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.go.to.table._case.GoToTableBuilder;
129 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.meter._case.MeterBuilder;
130 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.write.metadata._case.WriteMetadataBuilder;
131 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction;
132 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionBuilder;
133 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionKey;
134 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
135 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
136 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
137 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
138 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
139 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
140 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.EtherType;
141 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
142 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanPcp;
143 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId;
144 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.arp.match.fields.ArpSourceHardwareAddressBuilder;
145 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.arp.match.fields.ArpTargetHardwareAddressBuilder;
146 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetDestinationBuilder;
147 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetSourceBuilder;
148 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetTypeBuilder;
149 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ipv6.match.fields.Ipv6ExtHeaderBuilder;
150 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ipv6.match.fields.Ipv6LabelBuilder;
151 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatchBuilder;
152 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv4MatchBuilder;
153 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv6MatchBuilder;
154 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder;
155 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.MetadataBuilder;
156 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.ProtocolMatchFieldsBuilder;
157 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.TcpFlagsMatchBuilder;
158 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.TunnelBuilder;
159 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder;
160 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.ArpMatchBuilder;
161 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4Match;
162 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchBuilder;
163 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6MatchBuilder;
164 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.TunnelIpv4MatchBuilder;
165 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.SctpMatchBuilder;
166 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.TcpMatchBuilder;
167 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatchBuilder;
168 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.protocol.match.fields.PbbBuilder;
169 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.vlan.match.fields.VlanIdBuilder;
170 import org.opendaylight.yang.gen.v1.urn.opendaylight.node.error.service.rev140410.NodeErrorListener;
171 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
172 import org.osgi.framework.BundleContext;
173 import org.slf4j.Logger;
174 import org.slf4j.LoggerFactory;
176 @SuppressWarnings("checkstyle:MethodName")
177 public class OpenflowpluginTestCommandProvider implements CommandProvider {
179 private static final Logger LOG = LoggerFactory.getLogger(OpenflowpluginTestCommandProvider.class);
181 private final DataBroker dataBroker;
182 private final BundleContext ctx;
183 private static final String ORIGINAL_FLOW_NAME = "Foo";
184 private static final String UPDATED_FLOW_NAME = "Bar";
185 private static final String IPV4_PREFIX = "10.0.0.1/24";
186 private static final String DEST_MAC_ADDRESS = "ff:ff:ff:ff:ff:ff";
187 private static final String SRC_MAC_ADDRESS = "00:00:00:00:23:ae";
188 private final SalFlowListener flowEventListener = new FlowEventListenerLoggingImpl();
189 private final NodeErrorListener nodeErrorListener = new NodeErrorListenerLoggingImpl();
190 private final NotificationService notificationService;
192 public OpenflowpluginTestCommandProvider(final DataBroker dataBroker, final NotificationService notificationService,
193 final BundleContext ctx) {
194 this.dataBroker = dataBroker;
195 this.notificationService = notificationService;
201 notificationService.registerNotificationListener(flowEventListener);
202 notificationService.registerNotificationListener(nodeErrorListener);
203 ctx.registerService(CommandProvider.class.getName(), this, null);
204 createTestFlow(createTestNode(null), null, null);
207 private NodeBuilder createTestNode(final String nodeId) {
210 if (nodeId == null) {
211 localNodeId = OpenflowpluginTestActivator.NODE_ID;
213 localNodeId = nodeId;
216 final NodeBuilder builder = new NodeBuilder();
217 builder.setId(new NodeId(localNodeId));
218 builder.withKey(new NodeKey(builder.getId()));
222 private InstanceIdentifier<Node> nodeBuilderToInstanceId(final NodeBuilder node) {
223 return InstanceIdentifier.create(Nodes.class).child(Node.class, node.key());
226 private FlowBuilder createTestFlow(final NodeBuilder nodeBuilder, final String flowTypeArg, final String tableId) {
227 final long TEST_ID = 123;
229 final FlowBuilder flow = new FlowBuilder();
232 String flowType = flowTypeArg;
233 if (flowType == null) {
242 flow.setMatch(createMatch1().build());
243 flow.setInstructions(createDecNwTtlInstructions().build());
247 flow.setMatch(createMatch2().build());
248 flow.setInstructions(createDropInstructions().build());
252 flow.setMatch(createMatch3().build());
253 flow.setInstructions(createDropInstructions().build());
257 flow.setMatch(createEthernetMatch().build());
258 flow.setInstructions(createDropInstructions().build());
262 flow.setMatch(createMatch1().build());
263 flow.setInstructions(createAppyActionInstruction().build());
267 flow.setMatch(createMatch1().build());
268 flow.setInstructions(createGotoTableInstructions().build());
272 flow.setMatch(createMatch1().build());
273 flow.setInstructions(createMeterInstructions().build());
277 flow.setMatch(createMatch1().build());
278 flow.setInstructions(createAppyActionInstruction1().build());
282 flow.setMatch(createMatch1().build());
283 flow.setInstructions(createAppyActionInstruction2().build());
287 flow.setMatch(createMatch1().build());
288 flow.setInstructions(createAppyActionInstruction3().build());
292 flow.setMatch(createMatch1().build());
293 flow.setInstructions(createAppyActionInstruction4().build());
297 flow.setMatch(createMatch1().build());
298 flow.setInstructions(createAppyActionInstruction5().build());
302 flow.setMatch(createMatch1().build());
303 flow.setInstructions(createAppyActionInstruction6().build());
307 flow.setMatch(createMatch1().build());
308 flow.setInstructions(createAppyActionInstruction7().build());
312 flow.setMatch(createMatch1().build());
313 flow.setInstructions(createAppyActionInstruction8().build());
317 flow.setMatch(createMatch1().build());
318 flow.setInstructions(createAppyActionInstruction9().build());
322 flow.setMatch(createMatch1().build());
323 flow.setInstructions(createAppyActionInstruction10().build());
327 flow.setMatch(createMatch1().build());
328 flow.setInstructions(createAppyActionInstruction11().build());
332 flow.setMatch(createMatch1().build());
333 flow.setInstructions(createAppyActionInstruction12().build());
337 flow.setMatch(createMatch1().build());
338 flow.setInstructions(createAppyActionInstruction13().build());
342 flow.setMatch(createMatch1().build());
343 flow.setInstructions(createAppyActionInstruction14().build());
347 flow.setMatch(createMatch1().build());
348 flow.setInstructions(createAppyActionInstruction15().build());
352 // f23 can be used as test-case for generating error notification
353 // if the particular group is not configured - tested
354 flow.setMatch(createMatch1().build());
355 flow.setInstructions(createAppyActionInstruction16().build());
359 flow.setMatch(createMatch1().build());
360 flow.setInstructions(createAppyActionInstruction17().build());
364 flow.setMatch(createMatch1().build());
365 flow.setInstructions(createAppyActionInstruction18().build());
369 flow.setMatch(createMatch1().build());
370 flow.setInstructions(createAppyActionInstruction19().build());
374 flow.setMatch(createMatch1().build());
375 flow.setInstructions(createMetadataInstructions().build());
379 flow.setMatch(createMatch1().build());
380 flow.setInstructions(createAppyActionInstruction20().build());
384 flow.setMatch(createMatch1().build());
385 flow.setInstructions(createAppyActionInstruction21().build());
389 flow.setMatch(createMatch1().build());
390 flow.setInstructions(createAppyActionInstruction22().build());
394 flow.setMatch(createMatch1().build());
395 flow.setInstructions(createAppyActionInstruction23(nodeBuilder.getId()).build());
399 flow.setMatch(createMatch1().build());
400 flow.setInstructions(createAppyActionInstruction24().build());
404 flow.setMatch(createMatch1().build());
405 flow.setInstructions(createAppyActionInstruction25().build());
409 flow.setMatch(createMatch1().build());
410 flow.setInstructions(createAppyActionInstruction26().build());
414 flow.setMatch(createMatch1().build());
415 flow.setInstructions(createAppyActionInstruction27().build());
419 flow.setMatch(createMatch1().build());
420 flow.setInstructions(createAppyActionInstruction28().build());
424 flow.setMatch(createMatch1().build());
425 flow.setInstructions(createAppyActionInstruction29().build());
429 flow.setMatch(createMatch1().build());
430 flow.setInstructions(createAppyActionInstruction30().build());
434 flow.setMatch(createMatch1().build());
435 flow.setInstructions(createAppyActionInstruction31().build());
439 flow.setMatch(createMatch1().build());
440 flow.setInstructions(createAppyActionInstruction32().build());
444 flow.setMatch(createMatch1().build());
445 flow.setInstructions(createAppyActionInstruction33().build());
449 flow.setMatch(createMatch1().build());
450 flow.setInstructions(createAppyActionInstruction34().build());
454 flow.setMatch(createICMPv6Match().build());
455 flow.setInstructions(createDecNwTtlInstructions().build());
459 flow.setMatch(createInphyportMatch(nodeBuilder.getId()).build());
460 flow.setInstructions(createDropInstructions().build());
464 flow.setMatch(createMetadataMatch().build());
465 flow.setInstructions(createDropInstructions().build());
469 flow.setMatch(createL3IPv6Match().build());
470 flow.setInstructions(createDecNwTtlInstructions().build());
474 flow.setMatch(createL4SCTPMatch().build());
475 flow.setInstructions(createAppyActionInstruction().build());
479 flow.setMatch(createTunnelIDMatch().build());
480 flow.setInstructions(createGotoTableInstructions().build());
484 flow.setMatch(createVlanMatch().build());
485 flow.setInstructions(createMeterInstructions().build());
489 flow.setMatch(createPbbMatch().build());
490 flow.setInstructions(createMeterInstructions().build());
494 flow.setMatch(createVlanMatch().build());
495 flow.setInstructions(createDropInstructions().build());
499 flow.setMatch(createL4TCPMatch().build());
500 flow.setInstructions(createDropInstructions().build());
505 flow.setMatch(createL4UDPMatch().build());
506 flow.setInstructions(createDropInstructions().build());
510 flow.setMatch(new MatchBuilder().build());
511 flow.setInstructions(createSentToControllerInstructions().build());
516 flow.setMatch(createToSMatch().build());
517 flow.setInstructions(createDropInstructions().build());
521 flow.setMatch(createToSMatch().build());
522 flow.setInstructions(createOutputInstructions("INPORT", 10).build());
526 flow.setMatch(createToSMatch().build());
527 flow.setInstructions(createOutputInstructions("FLOOD", 20).build());
531 flow.setMatch(createToSMatch().build());
532 flow.setInstructions(createOutputInstructions("ALL", 30).build());
536 flow.setMatch(createToSMatch().build());
537 flow.setInstructions(createOutputInstructions("NORMAL", 40).build());
541 flow.setMatch(createToSMatch().build());
542 flow.setInstructions(createOutputInstructions("LOCAL", 50).build());
546 flow.setMatch(createToSMatch().build());
547 flow.setInstructions(createOutputInstructions("TABLE", 60).build());
551 flow.setMatch(createToSMatch().build());
552 flow.setInstructions(createOutputInstructions("NONE", 70).build());
556 flow.setMatch(createToSMatch().build());
557 flow.setInstructions(createStripVlanInstructions().build());
558 flow.setBarrier(Boolean.TRUE);
562 flow.setMatch(createMatch1().build());
563 flow.setInstructions(createAppyActionInstruction35().build());
567 flow.setMatch(createMatch1().build());
568 flow.setInstructions(createAppyActionInstruction36().build());
572 flow.setMatch(createMatch1().build());
573 flow.setInstructions(createAppyActionInstruction37().build());
577 flow.setMatch(createMatch1().build());
578 flow.setInstructions(createAppyActionInstruction38().build());
582 flow.setMatch(createL4TCPMatch().build());
583 flow.setInstructions(createAppyActionInstruction39().build());
587 flow.setMatch(createL4UDPMatch().build());
588 flow.setInstructions(createAppyActionInstruction40().build());
592 flow.setMatch(createL4SCTPMatch().build());
593 flow.setInstructions(createAppyActionInstruction41().build());
597 flow.setMatch(createICMPv4Match().build());
598 flow.setInstructions(createAppyActionInstruction42().build());
602 flow.setMatch(createArpMatch().build());
603 flow.setInstructions(createAppyActionInstruction43().build());
607 flow.setMatch(createL3IPv6Match().build());
608 flow.setInstructions(createAppyActionInstruction44().build());
612 flow.setMatch(createICMPv6Match().build());
613 flow.setInstructions(createAppyActionInstruction45().build());
617 flow.setMatch(createMplsMatch().build());
618 flow.setInstructions(createAppyActionInstruction46().build());
622 flow.setMatch(createPbbMatch().build());
623 flow.setInstructions(createAppyActionInstruction47().build());
627 flow.setMatch(createTunnelIDMatch().build());
628 flow.setInstructions(createAppyActionInstruction48().build());
632 flow.setMatch(createMatch33().build());
633 flow.setInstructions(createDropInstructions().build());
637 flow.setMatch(createICMPv6Match1().build());
638 flow.setInstructions(createDecNwTtlInstructions().build());
642 flow.setMatch(createVlanMatch().build());
643 flow.setInstructions(createAppyActionInstruction88().build());
647 flow.setMatch(createLLDPMatch().build());
648 flow.setInstructions(createSentToControllerInstructions().build());
652 flow.setMatch(createToSMatch().build());
653 flow.setInstructions(createOutputInstructions().build());
656 // Test TCP_Flag Match
658 flow.setMatch(createTcpFlagMatch().build());
659 flow.setInstructions(createDropInstructions().build());
663 // match vlan=10,dl_vlan_pcp=3
664 flow.setMatch(createVlanMatch().build());
666 flow.setInstructions(createAppyActionInstruction88().build());
669 // Test Tunnel IPv4 Src (e.g. set_field:172.16.100.200->tun_src)
671 flow.setMatch(createMatch3().build());
672 flow.setInstructions(createTunnelIpv4SrcInstructions().build());
675 // Test Tunnel IPv4 Dst (e.g. set_field:172.16.100.100->tun_dst)
677 flow.setMatch(createMatch1().build());
678 flow.setInstructions(createTunnelIpv4DstInstructions().build());
681 LOG.warn("flow type not understood: {}", flowType);
684 final FlowKey key = new FlowKey(new FlowId(Long.toString(id)));
685 if (null == flow.isBarrier()) {
686 flow.setBarrier(Boolean.FALSE);
688 final BigInteger value = BigInteger.valueOf(10);
689 flow.setCookie(new FlowCookie(value));
690 flow.setCookieMask(new FlowCookie(value));
691 flow.setHardTimeout(0);
692 flow.setIdleTimeout(0);
693 flow.setInstallHw(false);
694 flow.setStrict(false);
695 flow.setContainerName(null);
696 flow.setFlags(new FlowModFlags(false, false, false, false, true));
697 flow.setId(new FlowId("12"));
698 flow.setTableId(getTableId(tableId));
701 flow.setFlowName(ORIGINAL_FLOW_NAME + "X" + flowType);
706 private FlowBuilder createTestFlowPerfTest(final String flowTypeArg, final String tableId, final int id) {
707 final FlowBuilder flow = new FlowBuilder();
708 String flowType = flowTypeArg;
711 if (flowType == null) {
715 flow.setPriority(flowId);
720 flow.setMatch(createMatch1().build());
721 flow.setInstructions(createDecNwTtlInstructions().build());
724 LOG.warn("flow type not understood: {}", flowType);
727 final FlowKey key = new FlowKey(new FlowId(Long.toString(flowId)));
728 if (null == flow.isBarrier()) {
729 flow.setBarrier(Boolean.FALSE);
731 final BigInteger value = BigInteger.valueOf(10);
732 flow.setCookie(new FlowCookie(value));
733 flow.setCookieMask(new FlowCookie(value));
734 flow.setHardTimeout(0);
735 flow.setIdleTimeout(0);
736 flow.setInstallHw(false);
737 flow.setStrict(false);
738 flow.setContainerName(null);
739 flow.setFlags(new FlowModFlags(false, false, false, false, true));
740 flow.setId(new FlowId("12"));
741 flow.setTableId(getTableId(tableId));
744 flow.setFlowName(ORIGINAL_FLOW_NAME + "X" + flowType);
748 private FlowBuilder createtablemiss() {
749 final FlowBuilder flow = new FlowBuilder();
751 final MatchBuilder matchBuilder = new MatchBuilder();
752 flow.setMatch(matchBuilder.build());
753 flow.setInstructions(createSentToControllerInstructions().build());
755 flow.setTableId((short) 0);
756 final FlowKey key = new FlowKey(new FlowId(Long.toString(id)));
761 private short getTableId(final String tableId) {
762 final short TABLE_ID = 2;
763 short table = TABLE_ID;
765 if (tableId == null) {
770 table = Short.parseShort(tableId);
771 } catch (NumberFormatException ex) {
772 LOG.info("Parsing String tableId {} failed. Continuing with default tableId {}.",
778 private static InstructionsBuilder createDecNwTtlInstructions() {
779 final DecNwTtlBuilder ta = new DecNwTtlBuilder();
780 final DecNwTtl decNwTtl = ta.build();
781 final ActionBuilder ab = new ActionBuilder();
782 ab.setAction(new DecNwTtlCaseBuilder().setDecNwTtl(decNwTtl).build());
783 ab.withKey(new ActionKey(0));
784 // Add our drop action to a list
785 final List<Action> actionList = new ArrayList<>();
786 actionList.add(ab.build());
788 // Create an Apply Action
789 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
790 aab.setAction(actionList);
792 // Wrap our Apply Action in an Instruction
793 final InstructionBuilder ib = new InstructionBuilder();
794 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
795 ib.withKey(new InstructionKey(0));
798 // Put our Instruction in a list of Instructions
799 final InstructionsBuilder isb = new InstructionsBuilder();
800 final List<Instruction> instructions = new ArrayList<>();
801 instructions.add(ib.build());
802 ib.withKey(new InstructionKey(0));
803 isb.setInstruction(instructions);
807 private static InstructionsBuilder createMeterInstructions() {
809 final MeterBuilder aab = new MeterBuilder();
810 aab.setMeterId(new MeterId(1L));
812 final InstructionBuilder ib = new InstructionBuilder();
813 ib.setInstruction(new MeterCaseBuilder().setMeter(aab.build()).build());
815 // Put our Instruction in a list of Instructions
816 final InstructionsBuilder isb = new InstructionsBuilder();
817 final List<Instruction> instructions = new ArrayList<>();
818 ib.withKey(new InstructionKey(0));
819 instructions.add(ib.build());
820 isb.setInstruction(instructions);
824 private static InstructionsBuilder createMetadataInstructions() {
826 final WriteMetadataBuilder aab = new WriteMetadataBuilder();
827 aab.setMetadata(BigInteger.valueOf(10));
828 aab.setMetadataMask(BigInteger.valueOf(10));
830 final InstructionBuilder ib = new InstructionBuilder();
831 ib.setInstruction(new WriteMetadataCaseBuilder().setWriteMetadata(aab.build()).build());
833 // Put our Instruction in a list of Instructions
834 final InstructionsBuilder isb = new InstructionsBuilder();
835 final List<Instruction> instructions = new ArrayList<>();
836 ib.withKey(new InstructionKey(0));
837 instructions.add(ib.build());
838 isb.setInstruction(instructions);
842 private static InstructionsBuilder createGotoTableInstructions() {
844 final GoToTableBuilder aab = new GoToTableBuilder();
845 aab.setTableId((short) 5);
847 final InstructionBuilder ib = new InstructionBuilder();
848 ib.setInstruction(new GoToTableCaseBuilder().setGoToTable(aab.build()).build());
850 // Put our Instruction in a list of Instructions
851 final InstructionsBuilder isb = new InstructionsBuilder();
852 final List<Instruction> instructions = new ArrayList<>();
853 ib.withKey(new InstructionKey(0));
854 instructions.add(ib.build());
855 isb.setInstruction(instructions);
859 private static InstructionsBuilder createDropInstructions() {
860 final DropActionBuilder dab = new DropActionBuilder();
861 final DropAction dropAction = dab.build();
862 final ActionBuilder ab = new ActionBuilder();
863 ab.setAction(new DropActionCaseBuilder().setDropAction(dropAction).build());
864 ab.withKey(new ActionKey(0));
865 // Add our drop action to a list
866 final List<Action> actionList = new ArrayList<>();
867 actionList.add(ab.build());
868 ab.withKey(new ActionKey(0));
869 // Create an Apply Action
870 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
871 aab.setAction(actionList);
873 // Wrap our Apply Action in an Instruction
874 final InstructionBuilder ib = new InstructionBuilder();
875 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
877 // Put our Instruction in a list of Instructions
878 final InstructionsBuilder isb = new InstructionsBuilder();
879 final List<Instruction> instructions = new ArrayList<>();
880 ib.withKey(new InstructionKey(0));
881 instructions.add(ib.build());
882 isb.setInstruction(instructions);
886 private static InstructionsBuilder createAppyActionInstruction() {
888 final List<Action> actionList = new ArrayList<>();
889 final ActionBuilder ab = new ActionBuilder();
890 final ControllerActionBuilder controller = new ControllerActionBuilder();
891 controller.setMaxLength(5);
892 ab.setAction(new ControllerActionCaseBuilder().setControllerAction(controller.build()).build());
893 ab.withKey(new ActionKey(0));
894 actionList.add(ab.build());
895 // Create an Apply Action
896 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
897 aab.setAction(actionList);
899 // Wrap our Apply Action in an Instruction
900 final InstructionBuilder ib = new InstructionBuilder();
901 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
903 // Put our Instruction in a list of Instructions
904 final InstructionsBuilder isb = new InstructionsBuilder();
905 final List<Instruction> instructions = new ArrayList<>();
906 ib.withKey(new InstructionKey(0));
907 instructions.add(ib.build());
908 isb.setInstruction(instructions);
912 private static InstructionsBuilder createAppyActionInstruction1() {
914 final List<Action> actionList = new ArrayList<>();
915 final ActionBuilder ab = new ActionBuilder();
917 final OutputActionBuilder output = new OutputActionBuilder();
918 output.setMaxLength(56);
919 final Uri value = new Uri("PCEP");
920 output.setOutputNodeConnector(value);
921 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
922 ab.withKey(new ActionKey(0));
923 actionList.add(ab.build());
924 // Create an Apply Action
925 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
926 aab.setAction(actionList);
928 // Wrap our Apply Action in an Instruction
929 final InstructionBuilder ib = new InstructionBuilder();
930 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
932 // Put our Instruction in a list of Instructions
933 final InstructionsBuilder isb = new InstructionsBuilder();
934 final List<Instruction> instructions = new ArrayList<>();
935 ib.withKey(new InstructionKey(0));
936 instructions.add(ib.build());
937 isb.setInstruction(instructions);
941 private static InstructionsBuilder createOutputInstructions() {
943 // test case for Output Port works if the particular port exists
944 // this particular test-case is for Port : 1
945 // tested as (addMDFlow openflow:<dpid> f82)
946 final List<Action> actionList = new ArrayList<>();
947 final ActionBuilder ab = new ActionBuilder();
948 final OutputActionBuilder output = new OutputActionBuilder();
950 final Uri value = new Uri("1");
951 output.setOutputNodeConnector(value);
952 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
954 ab.withKey(new ActionKey(0));
955 actionList.add(ab.build());
956 // Create an Apply Action
957 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
958 aab.setAction(actionList);
960 // Wrap our Apply Action in an Instruction
961 final InstructionBuilder ib = new InstructionBuilder();
962 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
964 ib.withKey(new InstructionKey(0));
966 // Put our Instruction in a list of Instructions
967 final InstructionsBuilder isb = new InstructionsBuilder();
968 final List<Instruction> instructions = new ArrayList<>();
969 instructions.add(ib.build());
970 isb.setInstruction(instructions);
974 private static InstructionsBuilder createOutputInstructions(final String outputType, final int outputValue) {
975 final List<Action> actionList = new ArrayList<>();
976 final ActionBuilder ab = new ActionBuilder();
978 final OutputActionBuilder output = new OutputActionBuilder();
979 output.setMaxLength(outputValue);
980 final Uri value = new Uri(outputType);
981 output.setOutputNodeConnector(value);
982 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
984 ab.withKey(new ActionKey(0));
985 actionList.add(ab.build());
986 // Create an Apply Action
987 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
988 aab.setAction(actionList);
990 // Wrap our Apply Action in an Instruction
991 final InstructionBuilder ib = new InstructionBuilder();
992 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
994 ib.withKey(new InstructionKey(0));
996 // Put our Instruction in a list of Instructions
997 final InstructionsBuilder isb = new InstructionsBuilder();
998 final List<Instruction> instructions = new ArrayList<>();
999 instructions.add(ib.build());
1000 isb.setInstruction(instructions);
1004 private static InstructionsBuilder createSentToControllerInstructions() {
1005 final List<Action> actionList = new ArrayList<>();
1006 final ActionBuilder ab = new ActionBuilder();
1008 final OutputActionBuilder output = new OutputActionBuilder();
1009 output.setMaxLength(Integer.valueOf(0xffff));
1010 final Uri value = new Uri(OutputPortValues.CONTROLLER.toString());
1011 output.setOutputNodeConnector(value);
1012 ab.setAction(new OutputActionCaseBuilder().setOutputAction(output.build()).build());
1014 ab.withKey(new ActionKey(0));
1015 actionList.add(ab.build());
1016 // Create an Apply Action
1017 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1018 aab.setAction(actionList);
1020 // Wrap our Apply Action in an Instruction
1021 final InstructionBuilder ib = new InstructionBuilder();
1022 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1024 ib.withKey(new InstructionKey(0));
1026 // Put our Instruction in a list of Instructions
1027 final InstructionsBuilder isb = new InstructionsBuilder();
1028 final List<Instruction> instructions = new ArrayList<>();
1029 instructions.add(ib.build());
1030 isb.setInstruction(instructions);
1035 private static InstructionsBuilder createStripVlanInstructions() {
1036 final List<Action> actionList = new ArrayList<>();
1037 final ActionBuilder ab = new ActionBuilder();
1039 final StripVlanActionBuilder stripActionBuilder = new StripVlanActionBuilder();
1040 ab.setAction(new StripVlanActionCaseBuilder().setStripVlanAction(stripActionBuilder.build()).build());
1042 ab.withKey(new ActionKey(0));
1043 actionList.add(ab.build());
1044 // Create an Apply Action
1045 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1046 aab.setAction(actionList);
1048 // Wrap our Apply Action in an Instruction
1049 final InstructionBuilder ib = new InstructionBuilder();
1050 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1052 ib.withKey(new InstructionKey(0));
1054 // Put our Instruction in a list of Instructions
1055 final InstructionsBuilder isb = new InstructionsBuilder();
1056 final List<Instruction> instructions = new ArrayList<>();
1057 instructions.add(ib.build());
1058 isb.setInstruction(instructions);
1062 private static InstructionsBuilder createAppyActionInstruction2() {
1064 final List<Action> actionList = new ArrayList<>();
1065 final ActionBuilder ab = new ActionBuilder();
1067 final PushMplsActionBuilder push = new PushMplsActionBuilder();
1068 push.setEthernetType(Integer.valueOf(0x8847));
1069 ab.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(push.build()).build());
1070 ab.withKey(new ActionKey(0));
1071 actionList.add(ab.build());
1072 // Create an Apply Action
1073 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1074 aab.setAction(actionList);
1076 // Wrap our Apply Action in an Instruction
1077 final InstructionBuilder ib = new InstructionBuilder();
1078 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1080 // Put our Instruction in a list of Instructions
1081 final InstructionsBuilder isb = new InstructionsBuilder();
1082 final List<Instruction> instructions = new ArrayList<>();
1083 ib.withKey(new InstructionKey(0));
1084 instructions.add(ib.build());
1085 isb.setInstruction(instructions);
1089 private static InstructionsBuilder createAppyActionInstruction3() {
1091 final List<Action> actionList = new ArrayList<>();
1092 final ActionBuilder ab = new ActionBuilder();
1094 final PushPbbActionBuilder pbb = new PushPbbActionBuilder();
1095 pbb.setEthernetType(Integer.valueOf(0x88E7));
1096 ab.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pbb.build()).build());
1097 ab.withKey(new ActionKey(0));
1098 actionList.add(ab.build());
1099 // Create an Apply Action
1100 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1101 aab.setAction(actionList);
1103 // Wrap our Apply Action in an Instruction
1104 final InstructionBuilder ib = new InstructionBuilder();
1105 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1107 // Put our Instruction in a list of Instructions
1108 final InstructionsBuilder isb = new InstructionsBuilder();
1109 final List<Instruction> instructions = new ArrayList<>();
1110 ib.withKey(new InstructionKey(0));
1111 instructions.add(ib.build());
1112 isb.setInstruction(instructions);
1116 private static InstructionsBuilder createAppyActionInstruction4() {
1118 final List<Action> actionList = new ArrayList<>();
1119 final ActionBuilder ab = new ActionBuilder();
1121 final PushVlanActionBuilder vlan = new PushVlanActionBuilder();
1122 vlan.setEthernetType(Integer.valueOf(0x8100));
1123 ab.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(vlan.build()).build());
1124 ab.withKey(new ActionKey(0));
1125 actionList.add(ab.build());
1127 // Create an Apply Action
1128 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1129 aab.setAction(actionList);
1131 // Wrap our Apply Action in an Instruction
1132 final InstructionBuilder ib = new InstructionBuilder();
1133 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1135 // Put our Instruction in a list of Instructions
1136 final InstructionsBuilder isb = new InstructionsBuilder();
1137 final List<Instruction> instructions = new ArrayList<>();
1138 ib.withKey(new InstructionKey(0));
1139 instructions.add(ib.build());
1140 isb.setInstruction(instructions);
1144 private static InstructionsBuilder createAppyActionInstruction5() {
1146 final List<Action> actionList = new ArrayList<>();
1147 final ActionBuilder ab = new ActionBuilder();
1149 final SetDlDstActionBuilder setdl = new SetDlDstActionBuilder();
1150 setdl.setAddress(new MacAddress("00:05:b9:7c:81:5f"));
1151 ab.setAction(new SetDlDstActionCaseBuilder().setSetDlDstAction(setdl.build()).build());
1152 ab.withKey(new ActionKey(0));
1153 actionList.add(ab.build());
1154 // Create an Apply Action
1155 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1156 aab.setAction(actionList);
1158 // Wrap our Apply Action in an Instruction
1159 final InstructionBuilder ib = new InstructionBuilder();
1160 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1162 // Put our Instruction in a list of Instructions
1163 final InstructionsBuilder isb = new InstructionsBuilder();
1164 final List<Instruction> instructions = new ArrayList<>();
1165 ib.withKey(new InstructionKey(0));
1166 instructions.add(ib.build());
1167 isb.setInstruction(instructions);
1171 private static InstructionsBuilder createAppyActionInstruction6() {
1173 final List<Action> actionList = new ArrayList<>();
1174 final ActionBuilder ab = new ActionBuilder();
1176 final SetDlSrcActionBuilder src = new SetDlSrcActionBuilder();
1177 src.setAddress(new MacAddress("00:05:b9:7c:81:5f"));
1178 ab.setAction(new SetDlSrcActionCaseBuilder().setSetDlSrcAction(src.build()).build());
1179 ab.withKey(new ActionKey(0));
1180 actionList.add(ab.build());
1182 // Create an Apply Action
1183 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1184 aab.setAction(actionList);
1186 // Wrap our Apply Action in an Instruction
1187 final InstructionBuilder ib = new InstructionBuilder();
1188 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1190 // Put our Instruction in a list of Instructions
1191 final InstructionsBuilder isb = new InstructionsBuilder();
1192 final List<Instruction> instructions = new ArrayList<>();
1193 ib.withKey(new InstructionKey(0));
1194 instructions.add(ib.build());
1195 isb.setInstruction(instructions);
1199 private static InstructionsBuilder createAppyActionInstruction7() {
1201 final List<Action> actionList = new ArrayList<>();
1202 final ActionBuilder ab = new ActionBuilder();
1204 final SetVlanIdActionBuilder vl = new SetVlanIdActionBuilder();
1205 final VlanId a = new VlanId(4000);
1207 ab.setAction(new SetVlanIdActionCaseBuilder().setSetVlanIdAction(vl.build()).build());
1208 ab.withKey(new ActionKey(0));
1209 actionList.add(ab.build());
1210 // Create an Apply Action
1211 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1212 aab.setAction(actionList);
1214 // Wrap our Apply Action in an Instruction
1215 final InstructionBuilder ib = new InstructionBuilder();
1216 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1218 // Put our Instruction in a list of Instructions
1219 final InstructionsBuilder isb = new InstructionsBuilder();
1220 final List<Instruction> instructions = new ArrayList<>();
1221 ib.withKey(new InstructionKey(0));
1222 instructions.add(ib.build());
1223 isb.setInstruction(instructions);
1227 private static InstructionsBuilder createAppyActionInstruction8() {
1229 final List<Action> actionList = new ArrayList<>();
1230 final ActionBuilder ab = new ActionBuilder();
1232 final SetVlanPcpActionBuilder pcp = new SetVlanPcpActionBuilder();
1233 final VlanPcp pcp1 = new VlanPcp((short) 2);
1234 pcp.setVlanPcp(pcp1);
1235 ab.setAction(new SetVlanPcpActionCaseBuilder().setSetVlanPcpAction(pcp.build()).build());
1236 ab.withKey(new ActionKey(0));
1237 actionList.add(ab.build());
1238 // Create an Apply Action
1239 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1240 aab.setAction(actionList);
1242 // Wrap our Apply Action in an Instruction
1243 final InstructionBuilder ib = new InstructionBuilder();
1244 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1246 // Put our Instruction in a list of Instructions
1247 final InstructionsBuilder isb = new InstructionsBuilder();
1248 final List<Instruction> instructions = new ArrayList<>();
1249 ib.withKey(new InstructionKey(0));
1250 instructions.add(ib.build());
1251 isb.setInstruction(instructions);
1255 private static InstructionsBuilder createAppyActionInstruction88() {
1257 final List<Action> actionList = new ArrayList<>();
1258 final ActionBuilder ab = new ActionBuilder();
1260 final SetVlanPcpActionBuilder pcp = new SetVlanPcpActionBuilder();
1261 // the code point is a 3-bit(0-7) field representing the frame priority level
1262 final VlanPcp pcp1 = new VlanPcp((short) 4);
1263 pcp.setVlanPcp(pcp1);
1264 ab.setAction(new SetVlanPcpActionCaseBuilder().setSetVlanPcpAction(pcp.build()).build());
1265 ab.withKey(new ActionKey(0));
1266 actionList.add(ab.build());
1267 // Create an Apply Action
1268 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1269 aab.setAction(actionList);
1271 // Wrap our Apply Action in an Instruction
1272 final InstructionBuilder ib = new InstructionBuilder();
1273 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1275 // Put our Instruction in a list of Instructions
1276 final InstructionsBuilder isb = new InstructionsBuilder();
1277 final List<Instruction> instructions = new ArrayList<>();
1278 ib.withKey(new InstructionKey(0));
1279 instructions.add(ib.build());
1280 isb.setInstruction(instructions);
1284 private static InstructionsBuilder createAppyActionInstruction9() {
1286 final List<Action> actionList = new ArrayList<>();
1287 final ActionBuilder ab = new ActionBuilder();
1289 final CopyTtlInBuilder ttlin = new CopyTtlInBuilder();
1290 ab.setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(ttlin.build()).build());
1291 ab.withKey(new ActionKey(0));
1292 actionList.add(ab.build());
1293 // Create an Apply Action
1294 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1295 aab.setAction(actionList);
1297 // Wrap our Apply Action in an Instruction
1298 final InstructionBuilder ib = new InstructionBuilder();
1299 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1301 // Put our Instruction in a list of Instructions
1302 final InstructionsBuilder isb = new InstructionsBuilder();
1303 final List<Instruction> instructions = new ArrayList<>();
1304 ib.withKey(new InstructionKey(0));
1305 instructions.add(ib.build());
1306 isb.setInstruction(instructions);
1310 private static InstructionsBuilder createAppyActionInstruction10() {
1312 final List<Action> actionList = new ArrayList<>();
1313 final ActionBuilder ab = new ActionBuilder();
1315 final CopyTtlOutBuilder ttlout = new CopyTtlOutBuilder();
1316 ab.setAction(new CopyTtlOutCaseBuilder().setCopyTtlOut(ttlout.build()).build());
1317 ab.withKey(new ActionKey(0));
1318 actionList.add(ab.build());
1319 // Create an Apply Action
1320 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1321 aab.setAction(actionList);
1323 // Wrap our Apply Action in an Instruction
1324 final InstructionBuilder ib = new InstructionBuilder();
1325 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1327 // Put our Instruction in a list of Instructions
1328 final InstructionsBuilder isb = new InstructionsBuilder();
1329 final List<Instruction> instructions = new ArrayList<>();
1330 ib.withKey(new InstructionKey(0));
1331 instructions.add(ib.build());
1332 isb.setInstruction(instructions);
1336 private static InstructionsBuilder createAppyActionInstruction11() {
1338 final List<Action> actionList = new ArrayList<>();
1339 final ActionBuilder ab = new ActionBuilder();
1341 final DecMplsTtlBuilder mpls = new DecMplsTtlBuilder();
1342 ab.setAction(new DecMplsTtlCaseBuilder().setDecMplsTtl(mpls.build()).build());
1343 ab.withKey(new ActionKey(0));
1344 actionList.add(ab.build());
1345 // Create an Apply Action
1346 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1347 aab.setAction(actionList);
1349 // Wrap our Apply Action in an Instruction
1350 final InstructionBuilder ib = new InstructionBuilder();
1351 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1352 ib.withKey(new InstructionKey(0));
1355 // Put our Instruction in a list of Instruction
1356 final InstructionsBuilder isb = new InstructionsBuilder();
1357 final List<Instruction> instructions = new ArrayList<>();
1358 instructions.add(ib.build());
1359 isb.setInstruction(instructions);
1363 private static InstructionsBuilder createAppyActionInstruction12() {
1365 final List<Action> actionList = new ArrayList<>();
1366 final ActionBuilder ab = new ActionBuilder();
1368 final DecNwTtlBuilder nwttl = new DecNwTtlBuilder();
1369 ab.setAction(new DecNwTtlCaseBuilder().setDecNwTtl(nwttl.build()).build());
1370 ab.withKey(new ActionKey(0));
1371 actionList.add(ab.build());
1373 // Create an Apply Action
1374 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1375 aab.setAction(actionList);
1377 // Wrap our Apply Action in an Instruction
1378 final InstructionBuilder ib = new InstructionBuilder();
1379 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1381 // Put our Instruction in a list of Instructions
1382 final InstructionsBuilder isb = new InstructionsBuilder();
1383 final List<Instruction> instructions = new ArrayList<>();
1384 ib.withKey(new InstructionKey(0));
1385 instructions.add(ib.build());
1386 isb.setInstruction(instructions);
1390 private static InstructionsBuilder createAppyActionInstruction13() {
1392 final List<Action> actionList = new ArrayList<>();
1393 final ActionBuilder ab = new ActionBuilder();
1395 final DropActionBuilder drop = new DropActionBuilder();
1396 ab.setAction(new DropActionCaseBuilder().setDropAction(drop.build()).build());
1397 ab.withKey(new ActionKey(0));
1398 actionList.add(ab.build());
1400 // Create an Apply Action
1401 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1402 aab.setAction(actionList);
1404 // Wrap our Apply Action in an Instruction
1405 final InstructionBuilder ib = new InstructionBuilder();
1406 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1408 // Put our Instruction in a list of Instructions
1409 final InstructionsBuilder isb = new InstructionsBuilder();
1410 final List<Instruction> instructions = new ArrayList<>();
1411 ib.withKey(new InstructionKey(0));
1412 instructions.add(ib.build());
1413 isb.setInstruction(instructions);
1417 private static InstructionsBuilder createAppyActionInstruction14() {
1419 final List<Action> actionList = new ArrayList<>();
1420 final ActionBuilder ab = new ActionBuilder();
1422 final FloodActionBuilder fld = new FloodActionBuilder();
1423 ab.setAction(new FloodActionCaseBuilder().setFloodAction(fld.build()).build());
1424 ab.withKey(new ActionKey(0));
1425 actionList.add(ab.build());
1426 // Create an Apply Action
1427 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1428 aab.setAction(actionList);
1430 // Wrap our Apply Action in an Instruction
1431 final InstructionBuilder ib = new InstructionBuilder();
1432 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1434 // Put our Instruction in a list of Instructions
1435 final InstructionsBuilder isb = new InstructionsBuilder();
1436 final List<Instruction> instructions = new ArrayList<>();
1437 ib.withKey(new InstructionKey(0));
1438 instructions.add(ib.build());
1439 isb.setInstruction(instructions);
1443 private static InstructionsBuilder createAppyActionInstruction15() {
1445 final List<Action> actionList = new ArrayList<>();
1446 final ActionBuilder ab = new ActionBuilder();
1448 final FloodAllActionBuilder fldall = new FloodAllActionBuilder();
1449 ab.setAction(new FloodAllActionCaseBuilder().setFloodAllAction(fldall.build()).build());
1450 ab.withKey(new ActionKey(0));
1451 actionList.add(ab.build());
1452 // Create an Apply Action
1453 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1454 aab.setAction(actionList);
1456 // Wrap our Apply Action in an Instruction
1457 final InstructionBuilder ib = new InstructionBuilder();
1458 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1460 // Put our Instruction in a list of Instructions
1461 final InstructionsBuilder isb = new InstructionsBuilder();
1462 final List<Instruction> instructions = new ArrayList<>();
1463 ib.withKey(new InstructionKey(0));
1464 instructions.add(ib.build());
1465 isb.setInstruction(instructions);
1469 private static InstructionsBuilder createAppyActionInstruction16() {
1471 final List<Action> actionList = new ArrayList<>();
1472 final ActionBuilder ab = new ActionBuilder();
1474 final GroupActionBuilder groupActionB = new GroupActionBuilder();
1475 groupActionB.setGroupId(1L);
1476 groupActionB.setGroup("0");
1477 ab.setAction(new GroupActionCaseBuilder().setGroupAction(groupActionB.build()).build());
1478 ab.withKey(new ActionKey(0));
1479 actionList.add(ab.build());
1481 // Create an Apply Action
1482 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1483 aab.setAction(actionList);
1485 // Wrap our Apply Action in an Instruction
1486 final InstructionBuilder ib = new InstructionBuilder();
1487 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1489 // Put our Instruction in a list of Instructions
1490 final InstructionsBuilder isb = new InstructionsBuilder();
1491 final List<Instruction> instructions = new ArrayList<>();
1492 ib.withKey(new InstructionKey(0));
1493 instructions.add(ib.build());
1494 isb.setInstruction(instructions);
1498 private static InstructionsBuilder createAppyActionInstruction17() {
1500 final List<Action> actionList = new ArrayList<>();
1501 final ActionBuilder ab = new ActionBuilder();
1503 final HwPathActionBuilder hwPathB = new HwPathActionBuilder();
1504 ab.setAction(new HwPathActionCaseBuilder().setHwPathAction(hwPathB.build()).build());
1505 ab.withKey(new ActionKey(0));
1506 actionList.add(ab.build());
1507 // Create an Apply Action
1508 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1509 aab.setAction(actionList);
1511 // Wrap our Apply Action in an Instruction
1512 final InstructionBuilder ib = new InstructionBuilder();
1513 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1515 // Put our Instruction in a list of Instructions
1516 final InstructionsBuilder isb = new InstructionsBuilder();
1517 final List<Instruction> instructions = new ArrayList<>();
1518 ib.withKey(new InstructionKey(0));
1519 instructions.add(ib.build());
1520 isb.setInstruction(instructions);
1524 private static InstructionsBuilder createAppyActionInstruction18() {
1526 final List<Action> actionList = new ArrayList<>();
1527 final ActionBuilder ab = new ActionBuilder();
1529 final LoopbackActionBuilder loopbackActionBuilder = new LoopbackActionBuilder();
1530 ab.setAction(new LoopbackActionCaseBuilder().setLoopbackAction(loopbackActionBuilder.build()).build());
1531 ab.withKey(new ActionKey(0));
1532 actionList.add(ab.build());
1534 // Create an Apply Action
1535 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1536 aab.setAction(actionList);
1538 // Wrap our Apply Action in an Instruction
1539 final InstructionBuilder ib = new InstructionBuilder();
1540 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1542 // Put our Instruction in a list of Instructions
1543 final InstructionsBuilder isb = new InstructionsBuilder();
1544 final List<Instruction> instructions = new ArrayList<>();
1545 ib.withKey(new InstructionKey(0));
1546 instructions.add(ib.build());
1547 isb.setInstruction(instructions);
1551 private static InstructionsBuilder createAppyActionInstruction19() {
1553 final List<Action> actionList = new ArrayList<>();
1554 final ActionBuilder ab = new ActionBuilder();
1556 final PopMplsActionBuilder popMplsActionBuilder = new PopMplsActionBuilder();
1557 popMplsActionBuilder.setEthernetType(0XB);
1558 ab.setAction(new PopMplsActionCaseBuilder().setPopMplsAction(popMplsActionBuilder.build()).build());
1559 ab.withKey(new ActionKey(0));
1560 actionList.add(ab.build());
1561 // Create an Apply Action
1562 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1563 aab.setAction(actionList);
1565 // Wrap our Apply Action in an Instruction
1566 final InstructionBuilder ib = new InstructionBuilder();
1567 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1569 // Put our Instruction in a list of Instructions
1570 final InstructionsBuilder isb = new InstructionsBuilder();
1571 final List<Instruction> instructions = new ArrayList<>();
1572 ib.withKey(new InstructionKey(0));
1573 instructions.add(ib.build());
1574 isb.setInstruction(instructions);
1578 private static InstructionsBuilder createAppyActionInstruction20() {
1580 final List<Action> actionList = new ArrayList<>();
1581 final ActionBuilder ab = new ActionBuilder();
1583 final PopPbbActionBuilder popPbbActionBuilder = new PopPbbActionBuilder();
1584 ab.setAction(new PopPbbActionCaseBuilder().setPopPbbAction(popPbbActionBuilder.build()).build());
1585 ab.withKey(new ActionKey(0));
1586 actionList.add(ab.build());
1587 // Create an Apply Action
1588 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1589 aab.setAction(actionList);
1591 // Wrap our Apply Action in an Instruction
1592 final InstructionBuilder ib = new InstructionBuilder();
1593 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1595 // Put our Instruction in a list of Instructions
1596 final InstructionsBuilder isb = new InstructionsBuilder();
1597 final List<Instruction> instructions = new ArrayList<>();
1598 ib.withKey(new InstructionKey(0));
1599 instructions.add(ib.build());
1600 isb.setInstruction(instructions);
1604 private static InstructionsBuilder createAppyActionInstruction21() {
1606 final List<Action> actionList = new ArrayList<>();
1607 final ActionBuilder ab = new ActionBuilder();
1609 final PopVlanActionBuilder popVlanActionBuilder = new PopVlanActionBuilder();
1610 ab.setAction(new PopVlanActionCaseBuilder().setPopVlanAction(popVlanActionBuilder.build()).build());
1611 ab.withKey(new ActionKey(0));
1612 actionList.add(ab.build());
1614 // Create an Apply Action
1615 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1616 aab.setAction(actionList);
1618 // Wrap our Apply Action in an Instruction
1619 final InstructionBuilder ib = new InstructionBuilder();
1620 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1622 // Put our Instruction in a list of Instructions
1623 final InstructionsBuilder isb = new InstructionsBuilder();
1624 final List<Instruction> instructions = new ArrayList<>();
1625 ib.withKey(new InstructionKey(0));
1626 instructions.add(ib.build());
1627 isb.setInstruction(instructions);
1631 private static InstructionsBuilder createAppyActionInstruction22() {
1633 final List<Action> actionList = new ArrayList<>();
1634 final ActionBuilder ab = new ActionBuilder();
1636 final SetDlTypeActionBuilder setDlTypeActionBuilder = new SetDlTypeActionBuilder();
1637 setDlTypeActionBuilder.setDlType(new EtherType(8L));
1638 ab.setAction(new SetDlTypeActionCaseBuilder().setSetDlTypeAction(setDlTypeActionBuilder.build()).build());
1639 ab.withKey(new ActionKey(0));
1640 actionList.add(ab.build());
1642 // Create an Apply Action
1643 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1644 aab.setAction(actionList);
1646 // Wrap our Apply Action in an Instruction
1647 final InstructionBuilder ib = new InstructionBuilder();
1648 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1650 // Put our Instruction in a list of Instructions
1651 final InstructionsBuilder isb = new InstructionsBuilder();
1652 final List<Instruction> instructions = new ArrayList<>();
1653 ib.withKey(new InstructionKey(0));
1654 instructions.add(ib.build());
1655 isb.setInstruction(instructions);
1659 private static InstructionsBuilder createAppyActionInstruction23(final NodeId nodeId) {
1661 final List<Action> actionList = new ArrayList<>();
1662 final ActionBuilder ab = new ActionBuilder();
1664 ab.withKey(new ActionKey(0));
1665 actionList.add(ab.build());
1667 // Create an Apply Action
1668 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1669 aab.setAction(actionList);
1671 // Wrap our Apply Action in an Instruction
1672 final InstructionBuilder ib = new InstructionBuilder();
1673 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1675 // Put our Instruction in a list of Instructions
1676 final InstructionsBuilder isb = new InstructionsBuilder();
1677 final List<Instruction> instructions = new ArrayList<>();
1678 ib.withKey(new InstructionKey(0));
1679 instructions.add(ib.build());
1680 isb.setInstruction(instructions);
1684 private static InstructionsBuilder createAppyActionInstruction24() {
1686 final List<Action> actionList = new ArrayList<>();
1687 final ActionBuilder ab = new ActionBuilder();
1689 final SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
1690 setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
1691 ab.setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(setMplsTtlActionBuilder.build()).build());
1692 ab.withKey(new ActionKey(0));
1693 actionList.add(ab.build());
1695 // Create an Apply Action
1696 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1697 aab.setAction(actionList);
1699 // Wrap our Apply Action in an Instruction
1700 final InstructionBuilder ib = new InstructionBuilder();
1701 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1703 // Put our Instruction in a list of Instructions
1704 final InstructionsBuilder isb = new InstructionsBuilder();
1705 final List<Instruction> instructions = new ArrayList<>();
1706 ib.withKey(new InstructionKey(0));
1707 instructions.add(ib.build());
1708 isb.setInstruction(instructions);
1712 private static InstructionsBuilder createAppyActionInstruction25() {
1714 final List<Action> actionList = new ArrayList<>();
1715 final ActionBuilder ab = new ActionBuilder();
1717 final SetNextHopActionBuilder setNextHopActionBuilder = new SetNextHopActionBuilder();
1718 final Ipv4Builder ipnext = new Ipv4Builder();
1719 final Ipv4Prefix prefix = new Ipv4Prefix(IPV4_PREFIX);
1720 ipnext.setIpv4Address(prefix);
1721 setNextHopActionBuilder.setAddress(ipnext.build());
1722 ab.setAction(new SetNextHopActionCaseBuilder().setSetNextHopAction(setNextHopActionBuilder.build()).build());
1723 ab.withKey(new ActionKey(0));
1724 actionList.add(ab.build());
1726 // Create an Apply Action
1727 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1728 aab.setAction(actionList);
1730 // Wrap our Apply Action in an Instruction
1731 final InstructionBuilder ib = new InstructionBuilder();
1732 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1734 // Put our Instruction in a list of Instructions
1735 final InstructionsBuilder isb = new InstructionsBuilder();
1736 final List<Instruction> instructions = new ArrayList<>();
1737 ib.withKey(new InstructionKey(0));
1738 instructions.add(ib.build());
1739 isb.setInstruction(instructions);
1743 private static InstructionsBuilder createAppyActionInstruction26() {
1745 final List<Action> actionList = new ArrayList<>();
1746 final ActionBuilder ab = new ActionBuilder();
1748 final SetNwDstActionBuilder setNwDstActionBuilder = new SetNwDstActionBuilder();
1749 final Ipv4Builder ipdst = new Ipv4Builder();
1750 final Ipv4Prefix prefixdst = new Ipv4Prefix("10.0.0.21/24");
1751 ipdst.setIpv4Address(prefixdst);
1752 setNwDstActionBuilder.setAddress(ipdst.build());
1753 ab.setAction(new SetNwDstActionCaseBuilder().setSetNwDstAction(setNwDstActionBuilder.build()).build());
1754 ab.withKey(new ActionKey(0));
1755 actionList.add(ab.build());
1757 // Create an Apply Action
1758 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1759 aab.setAction(actionList);
1761 // Wrap our Apply Action in an Instruction
1762 final InstructionBuilder ib = new InstructionBuilder();
1763 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1765 // Put our Instruction in a list of Instructions
1766 final InstructionsBuilder isb = new InstructionsBuilder();
1767 final List<Instruction> instructions = new ArrayList<>();
1768 ib.withKey(new InstructionKey(0));
1769 instructions.add(ib.build());
1770 isb.setInstruction(instructions);
1774 private static InstructionsBuilder createAppyActionInstruction27() {
1776 final List<Action> actionList = new ArrayList<>();
1777 final ActionBuilder ab = new ActionBuilder();
1779 final SetNwSrcActionBuilder setNwsrcActionBuilder = new SetNwSrcActionBuilder();
1780 final Ipv4Builder ipsrc = new Ipv4Builder();
1781 final Ipv4Prefix prefixsrc = new Ipv4Prefix("10.0.23.21/24");
1782 ipsrc.setIpv4Address(prefixsrc);
1783 setNwsrcActionBuilder.setAddress(ipsrc.build());
1784 ab.setAction(new SetNwSrcActionCaseBuilder().setSetNwSrcAction(setNwsrcActionBuilder.build()).build());
1785 ab.withKey(new ActionKey(0));
1786 actionList.add(ab.build());
1788 // Create an Apply Action
1789 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1790 aab.setAction(actionList);
1792 // Wrap our Apply Action in an Instruction
1793 final InstructionBuilder ib = new InstructionBuilder();
1794 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1796 // Put our Instruction in a list of Instructions
1797 final InstructionsBuilder isb = new InstructionsBuilder();
1798 final List<Instruction> instructions = new ArrayList<>();
1799 ib.withKey(new InstructionKey(0));
1800 instructions.add(ib.build());
1801 isb.setInstruction(instructions);
1805 private static InstructionsBuilder createAppyActionInstruction28() {
1807 final List<Action> actionList = new ArrayList<>();
1808 final ActionBuilder ab = new ActionBuilder();
1810 final SetNwTosActionBuilder setNwTosActionBuilder = new SetNwTosActionBuilder();
1811 setNwTosActionBuilder.setTos(8);
1812 ab.setAction(new SetNwTosActionCaseBuilder().setSetNwTosAction(setNwTosActionBuilder.build()).build());
1813 ab.withKey(new ActionKey(0));
1814 actionList.add(ab.build());
1815 // Create an Apply Action
1816 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1817 aab.setAction(actionList);
1819 // Wrap our Apply Action in an Instruction
1820 final InstructionBuilder ib = new InstructionBuilder();
1821 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1823 // Put our Instruction in a list of Instructions
1824 final InstructionsBuilder isb = new InstructionsBuilder();
1825 final List<Instruction> instructions = new ArrayList<>();
1826 ib.withKey(new InstructionKey(0));
1827 instructions.add(ib.build());
1828 isb.setInstruction(instructions);
1832 private static InstructionsBuilder createAppyActionInstruction29() {
1834 final List<Action> actionList = new ArrayList<>();
1835 final ActionBuilder ab = new ActionBuilder();
1837 final SetNwTtlActionBuilder setNwTtlActionBuilder = new SetNwTtlActionBuilder();
1838 setNwTtlActionBuilder.setNwTtl((short) 1);
1839 ab.setAction(new SetNwTtlActionCaseBuilder().setSetNwTtlAction(setNwTtlActionBuilder.build()).build());
1840 ab.withKey(new ActionKey(0));
1841 actionList.add(ab.build());
1843 // Create an Apply Action
1844 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1845 aab.setAction(actionList);
1847 // Wrap our Apply Action in an Instruction
1848 final InstructionBuilder ib = new InstructionBuilder();
1849 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1851 // Put our Instruction in a list of Instructions
1852 final InstructionsBuilder isb = new InstructionsBuilder();
1853 final List<Instruction> instructions = new ArrayList<>();
1854 ib.withKey(new InstructionKey(0));
1855 instructions.add(ib.build());
1856 isb.setInstruction(instructions);
1860 private static InstructionsBuilder createAppyActionInstruction30() {
1862 final List<Action> actionList = new ArrayList<>();
1863 final ActionBuilder ab = new ActionBuilder();
1865 final SetQueueActionBuilder setQueueActionBuilder = new SetQueueActionBuilder();
1866 setQueueActionBuilder.setQueueId(1L);
1867 ab.setAction(new SetQueueActionCaseBuilder().setSetQueueAction(setQueueActionBuilder.build()).build());
1868 ab.withKey(new ActionKey(0));
1869 actionList.add(ab.build());
1870 // Create an Apply Action
1871 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1872 aab.setAction(actionList);
1874 // Wrap our Apply Action in an Instruction
1875 final InstructionBuilder ib = new InstructionBuilder();
1876 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1878 // Put our Instruction in a list of Instructions
1879 final InstructionsBuilder isb = new InstructionsBuilder();
1880 final List<Instruction> instructions = new ArrayList<>();
1881 ib.withKey(new InstructionKey(0));
1882 instructions.add(ib.build());
1883 isb.setInstruction(instructions);
1887 private static InstructionsBuilder createAppyActionInstruction31() {
1889 final List<Action> actionList = new ArrayList<>();
1890 final ActionBuilder ab = new ActionBuilder();
1892 final SetTpDstActionBuilder setTpDstActionBuilder = new SetTpDstActionBuilder();
1893 setTpDstActionBuilder.setPort(new PortNumber(109));
1895 ab.setAction(new SetTpDstActionCaseBuilder().setSetTpDstAction(setTpDstActionBuilder.build()).build());
1896 ab.withKey(new ActionKey(0));
1897 actionList.add(ab.build());
1898 // Create an Apply Action
1899 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1900 aab.setAction(actionList);
1902 // Wrap our Apply Action in an Instruction
1903 final InstructionBuilder ib = new InstructionBuilder();
1904 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1906 // Put our Instruction in a list of Instructions
1907 final InstructionsBuilder isb = new InstructionsBuilder();
1908 final List<Instruction> instructions = new ArrayList<>();
1909 ib.withKey(new InstructionKey(0));
1910 instructions.add(ib.build());
1911 isb.setInstruction(instructions);
1915 private static InstructionsBuilder createAppyActionInstruction32() {
1917 final List<Action> actionList = new ArrayList<>();
1918 final ActionBuilder ab = new ActionBuilder();
1920 final SetTpSrcActionBuilder setTpSrcActionBuilder = new SetTpSrcActionBuilder();
1921 setTpSrcActionBuilder.setPort(new PortNumber(109));
1922 ab.setAction(new SetTpSrcActionCaseBuilder().setSetTpSrcAction(setTpSrcActionBuilder.build()).build());
1923 ab.withKey(new ActionKey(0));
1924 actionList.add(ab.build());
1926 // Create an Apply Action
1927 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1928 aab.setAction(actionList);
1930 // Wrap our Apply Action in an Instruction
1931 final InstructionBuilder ib = new InstructionBuilder();
1932 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1934 // Put our Instruction in a list of Instructions
1935 final InstructionsBuilder isb = new InstructionsBuilder();
1936 final List<Instruction> instructions = new ArrayList<>();
1937 ib.withKey(new InstructionKey(0));
1938 instructions.add(ib.build());
1939 isb.setInstruction(instructions);
1943 private static InstructionsBuilder createAppyActionInstruction33() {
1945 final List<Action> actionList = new ArrayList<>();
1946 final ActionBuilder ab = new ActionBuilder();
1948 final SetVlanCfiActionBuilder setVlanCfiActionBuilder = new SetVlanCfiActionBuilder();
1949 setVlanCfiActionBuilder.setVlanCfi(new VlanCfi(2));
1950 ab.setAction(new SetVlanCfiActionCaseBuilder().setSetVlanCfiAction(setVlanCfiActionBuilder.build()).build());
1951 ab.withKey(new ActionKey(0));
1952 actionList.add(ab.build());
1954 // Create an Apply Action
1955 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1956 aab.setAction(actionList);
1958 // Wrap our Apply Action in an Instruction
1959 final InstructionBuilder ib = new InstructionBuilder();
1960 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1962 // Put our Instruction in a list of Instructions
1963 final InstructionsBuilder isb = new InstructionsBuilder();
1964 final List<Instruction> instructions = new ArrayList<>();
1965 ib.withKey(new InstructionKey(0));
1966 instructions.add(ib.build());
1967 isb.setInstruction(instructions);
1971 private static InstructionsBuilder createAppyActionInstruction34() {
1973 final List<Action> actionList = new ArrayList<>();
1974 final ActionBuilder ab = new ActionBuilder();
1976 final SwPathActionBuilder swPathAction = new SwPathActionBuilder();
1977 ab.setAction(new SwPathActionCaseBuilder().setSwPathAction(swPathAction.build()).build());
1978 ab.withKey(new ActionKey(0));
1979 actionList.add(ab.build());
1981 // Create an Apply Action
1982 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
1983 aab.setAction(actionList);
1985 // Wrap our Apply Action in an Instruction
1986 final InstructionBuilder ib = new InstructionBuilder();
1987 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
1989 // Put our Instruction in a list of Instructions
1990 final InstructionsBuilder isb = new InstructionsBuilder();
1991 final List<Instruction> instructions = new ArrayList<>();
1992 ib.withKey(new InstructionKey(0));
1993 instructions.add(ib.build());
1994 isb.setInstruction(instructions);
1998 private static InstructionsBuilder createAppyActionInstruction35() {
2000 final List<Action> actionList = new ArrayList<>();
2001 final ActionBuilder ab = new ActionBuilder();
2002 final ActionBuilder ab1 = new ActionBuilder();
2003 final ActionBuilder ab2 = new ActionBuilder();
2005 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2006 final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
2007 final SetFieldBuilder setFieldBuilder2 = new SetFieldBuilder();
2010 final EthernetMatchBuilder ethernetMatch = new EthernetMatchBuilder();
2011 final EthernetSourceBuilder ethSourceBuilder = new EthernetSourceBuilder();
2012 ethSourceBuilder.setAddress(new MacAddress("00:00:00:00:00:01"));
2013 final EthernetMatchBuilder ethernetMatch1 = new EthernetMatchBuilder();
2014 final EthernetDestinationBuilder ethDestBuilder = new EthernetDestinationBuilder();
2015 ethDestBuilder.setAddress(new MacAddress("00:00:00:00:00:02"));
2016 final EthernetMatchBuilder ethernetMatch2 = new EthernetMatchBuilder();
2017 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
2018 ethTypeBuilder.setType(new EtherType(0x86ddL));
2020 ethernetMatch.setEthernetSource(ethSourceBuilder.build());
2021 ethernetMatch1.setEthernetDestination(ethDestBuilder.build());
2022 ethernetMatch2.setEthernetType(ethTypeBuilder.build());
2023 setFieldBuilder.setEthernetMatch(ethernetMatch.build());
2024 setFieldBuilder1.setEthernetMatch(ethernetMatch1.build());
2025 setFieldBuilder2.setEthernetMatch(ethernetMatch2.build());
2026 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2027 ab.withKey(new ActionKey(0));
2028 actionList.add(ab.build());
2030 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
2031 ab1.withKey(new ActionKey(1));
2032 actionList.add(ab1.build());
2034 ab2.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder2.build()).build());
2035 ab2.withKey(new ActionKey(2));
2036 actionList.add(ab2.build());
2038 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2039 aab.setAction(actionList);
2041 final InstructionBuilder ib = new InstructionBuilder();
2042 ib.withKey(new InstructionKey(0));
2043 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2045 // Put our Instruction in a list of Instructions
2046 final InstructionsBuilder isb = new InstructionsBuilder();
2047 final List<Instruction> instructions = new ArrayList<>();
2048 ib.withKey(new InstructionKey(0));
2049 instructions.add(ib.build());
2050 isb.setInstruction(instructions);
2054 private static InstructionsBuilder createAppyActionInstruction36() {
2056 final List<Action> actionList = new ArrayList<>();
2057 final ActionBuilder ab = new ActionBuilder();
2058 final ActionBuilder ab1 = new ActionBuilder();
2060 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2061 final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
2064 final VlanMatchBuilder vlanBuilder = new VlanMatchBuilder();
2065 final VlanMatchBuilder vlanBuilder1 = new VlanMatchBuilder();
2066 final VlanIdBuilder vlanIdBuilder = new VlanIdBuilder();
2067 final VlanId vlanId = new VlanId(10);
2068 final VlanPcp vpcp = new VlanPcp((short) 3);
2069 vlanBuilder.setVlanPcp(vpcp);
2070 vlanBuilder1.setVlanId(vlanIdBuilder.setVlanId(vlanId).setVlanIdPresent(true).build());
2071 setFieldBuilder.setVlanMatch(vlanBuilder.build());
2072 setFieldBuilder1.setVlanMatch(vlanBuilder1.build());
2073 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2074 ab.withKey(new ActionKey(0));
2075 actionList.add(ab.build());
2076 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
2077 ab1.withKey(new ActionKey(1));
2078 actionList.add(ab1.build());
2080 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2081 aab.setAction(actionList);
2083 final InstructionBuilder ib = new InstructionBuilder();
2084 ib.withKey(new InstructionKey(0));
2085 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2087 // Put our Instruction in a list of Instructions
2088 final InstructionsBuilder isb = new InstructionsBuilder();
2089 final List<Instruction> instructions = new ArrayList<>();
2090 instructions.add(ib.build());
2091 isb.setInstruction(instructions);
2095 private static InstructionsBuilder createAppyActionInstruction37() {
2097 final List<Action> actionList = new ArrayList<>();
2098 final ActionBuilder ab = new ActionBuilder();
2099 final ActionBuilder ab1 = new ActionBuilder();
2100 final ActionBuilder ab2 = new ActionBuilder();
2102 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2103 final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
2104 final SetFieldBuilder setFieldBuilder2 = new SetFieldBuilder();
2106 final IpMatchBuilder ipmatch = new IpMatchBuilder();
2107 final IpMatchBuilder ipmatch1 = new IpMatchBuilder();
2108 final IpMatchBuilder ipmatch2 = new IpMatchBuilder();
2109 final Dscp dscp = new Dscp((short) 3);
2110 ipmatch.setIpDscp(dscp);
2111 ipmatch1.setIpEcn((short) 2);
2112 ipmatch2.setIpProtocol((short) 120);
2113 setFieldBuilder.setIpMatch(ipmatch.build());
2114 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2115 ab.withKey(new ActionKey(0));
2116 actionList.add(ab.build());
2118 setFieldBuilder1.setIpMatch(ipmatch1.build());
2119 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
2120 ab1.withKey(new ActionKey(1));
2121 actionList.add(ab1.build());
2123 setFieldBuilder2.setIpMatch(ipmatch2.build());
2124 ab2.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder2.build()).build());
2125 ab2.withKey(new ActionKey(2));
2126 actionList.add(ab2.build());
2128 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2129 aab.setAction(actionList);
2131 final InstructionBuilder ib = new InstructionBuilder();
2132 ib.withKey(new InstructionKey(0));
2133 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2135 // Put our Instruction in a list of Instructions
2136 final InstructionsBuilder isb = new InstructionsBuilder();
2137 final List<Instruction> instructions = new ArrayList<>();
2138 instructions.add(ib.build());
2139 isb.setInstruction(instructions);
2143 private static InstructionsBuilder createAppyActionInstruction38() {
2145 final List<Action> actionList = new ArrayList<>();
2146 final ActionBuilder ab = new ActionBuilder();
2147 final ActionBuilder ab1 = new ActionBuilder();
2149 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2150 final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
2152 final Ipv4MatchBuilder ipv4Match = new Ipv4MatchBuilder();
2153 final Ipv4MatchBuilder ipv4Match1 = new Ipv4MatchBuilder();
2154 final Ipv4Prefix dstip = new Ipv4Prefix("200.71.9.5210");
2155 final Ipv4Prefix srcip = new Ipv4Prefix("100.1.1.1");
2156 ipv4Match1.setIpv4Destination(dstip);
2157 ipv4Match.setIpv4Source(srcip);
2158 setFieldBuilder.setLayer3Match(ipv4Match.build());
2159 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2160 ab.withKey(new ActionKey(0));
2161 actionList.add(ab.build());
2163 setFieldBuilder1.setLayer3Match(ipv4Match1.build());
2164 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
2165 ab1.withKey(new ActionKey(1));
2166 actionList.add(ab1.build());
2168 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2169 aab.setAction(actionList);
2171 final InstructionBuilder ib = new InstructionBuilder();
2172 ib.withKey(new InstructionKey(0));
2173 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2175 // Put our Instruction in a list of Instructions
2176 final InstructionsBuilder isb = new InstructionsBuilder();
2177 final List<Instruction> instructions = new ArrayList<>();
2178 instructions.add(ib.build());
2179 isb.setInstruction(instructions);
2183 private static InstructionsBuilder createAppyActionInstruction39() {
2185 final List<Action> actionList = new ArrayList<>();
2186 final ActionBuilder ab = new ActionBuilder();
2187 final ActionBuilder ab1 = new ActionBuilder();
2189 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2190 final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
2193 final PortNumber tcpsrcport = new PortNumber(1213);
2194 final PortNumber tcpdstport = new PortNumber(646);
2195 final TcpMatchBuilder tcpmatch = new TcpMatchBuilder();
2196 final TcpMatchBuilder tcpmatch1 = new TcpMatchBuilder();
2197 tcpmatch.setTcpSourcePort(tcpsrcport);
2198 tcpmatch1.setTcpDestinationPort(tcpdstport);
2199 setFieldBuilder.setLayer4Match(tcpmatch.build());
2200 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2201 ab.withKey(new ActionKey(0));
2202 actionList.add(ab.build());
2204 setFieldBuilder1.setLayer4Match(tcpmatch1.build());
2205 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
2206 ab1.withKey(new ActionKey(1));
2207 actionList.add(ab1.build());
2209 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2210 aab.setAction(actionList);
2212 final InstructionBuilder ib = new InstructionBuilder();
2213 ib.withKey(new InstructionKey(0));
2214 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2216 // Put our Instruction in a list of Instructions
2217 final InstructionsBuilder isb = new InstructionsBuilder();
2218 final List<Instruction> instructions = new ArrayList<>();
2219 instructions.add(ib.build());
2220 isb.setInstruction(instructions);
2224 private static InstructionsBuilder createAppyActionInstruction40() {
2226 final List<Action> actionList = new ArrayList<>();
2227 final ActionBuilder ab = new ActionBuilder();
2228 final ActionBuilder ab1 = new ActionBuilder();
2230 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2231 final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
2234 final PortNumber udpsrcport = new PortNumber(1325);
2235 final PortNumber udpdstport = new PortNumber(42);
2236 final UdpMatchBuilder udpmatch = new UdpMatchBuilder();
2237 final UdpMatchBuilder udpmatch1 = new UdpMatchBuilder();
2238 udpmatch.setUdpDestinationPort(udpdstport);
2239 udpmatch1.setUdpSourcePort(udpsrcport);
2240 setFieldBuilder.setLayer4Match(udpmatch.build());
2241 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2242 ab.withKey(new ActionKey(0));
2243 actionList.add(ab.build());
2245 setFieldBuilder1.setLayer4Match(udpmatch1.build());
2246 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
2247 ab1.withKey(new ActionKey(1));
2248 actionList.add(ab1.build());
2250 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2251 aab.setAction(actionList);
2253 final InstructionBuilder ib = new InstructionBuilder();
2254 ib.withKey(new InstructionKey(0));
2255 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2257 // Put our Instruction in a list of Instructions
2258 final InstructionsBuilder isb = new InstructionsBuilder();
2259 final List<Instruction> instructions = new ArrayList<>();
2260 instructions.add(ib.build());
2261 isb.setInstruction(instructions);
2265 private static InstructionsBuilder createAppyActionInstruction41() {
2267 final List<Action> actionList = new ArrayList<>();
2268 final ActionBuilder ab = new ActionBuilder();
2269 final ActionBuilder ab1 = new ActionBuilder();
2271 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2272 final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
2275 final SctpMatchBuilder sctpmatch = new SctpMatchBuilder();
2276 final SctpMatchBuilder sctpmatch1 = new SctpMatchBuilder();
2277 final PortNumber srcport = new PortNumber(1435);
2278 final PortNumber dstport = new PortNumber(22);
2279 sctpmatch.setSctpSourcePort(srcport);
2280 sctpmatch1.setSctpDestinationPort(dstport);
2281 setFieldBuilder.setLayer4Match(sctpmatch.build());
2282 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2283 ab.withKey(new ActionKey(0));
2284 actionList.add(ab.build());
2286 setFieldBuilder1.setLayer4Match(sctpmatch1.build());
2287 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
2288 ab1.withKey(new ActionKey(1));
2289 actionList.add(ab1.build());
2291 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2292 aab.setAction(actionList);
2294 final InstructionBuilder ib = new InstructionBuilder();
2295 ib.withKey(new InstructionKey(0));
2296 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2298 // Put our Instruction in a list of Instructions
2299 final InstructionsBuilder isb = new InstructionsBuilder();
2300 final List<Instruction> instructions = new ArrayList<>();
2301 instructions.add(ib.build());
2302 isb.setInstruction(instructions);
2306 private static InstructionsBuilder createAppyActionInstruction42() {
2308 final List<Action> actionList = new ArrayList<>();
2309 final ActionBuilder ab = new ActionBuilder();
2310 final ActionBuilder ab1 = new ActionBuilder();
2311 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2312 final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
2315 final Icmpv4MatchBuilder icmpv4match = new Icmpv4MatchBuilder();
2316 final Icmpv4MatchBuilder icmpv4match1 = new Icmpv4MatchBuilder();
2317 icmpv4match.setIcmpv4Type((short) 8);
2318 icmpv4match1.setIcmpv4Code((short) 0);
2319 setFieldBuilder.setIcmpv4Match(icmpv4match.build());
2320 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2321 ab.withKey(new ActionKey(0));
2322 actionList.add(ab.build());
2324 setFieldBuilder1.setIcmpv4Match(icmpv4match1.build());
2325 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
2326 ab1.withKey(new ActionKey(1));
2327 actionList.add(ab1.build());
2329 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2330 aab.setAction(actionList);
2332 final InstructionBuilder ib = new InstructionBuilder();
2333 ib.withKey(new InstructionKey(0));
2334 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2336 // Put our Instruction in a list of Instructions
2337 final InstructionsBuilder isb = new InstructionsBuilder();
2338 final List<Instruction> instructions = new ArrayList<>();
2339 instructions.add(ib.build());
2340 isb.setInstruction(instructions);
2344 private static InstructionsBuilder createAppyActionInstruction43() {
2346 final List<Action> actionList = new ArrayList<>();
2347 final ActionBuilder ab = new ActionBuilder();
2348 final ActionBuilder ab1 = new ActionBuilder();
2349 final ActionBuilder ab2 = new ActionBuilder();
2350 final ActionBuilder ab3 = new ActionBuilder();
2351 final ActionBuilder ab4 = new ActionBuilder();
2353 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2354 final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
2355 final SetFieldBuilder setFieldBuilder2 = new SetFieldBuilder();
2356 final SetFieldBuilder setFieldBuilder3 = new SetFieldBuilder();
2357 final SetFieldBuilder setFieldBuilder4 = new SetFieldBuilder();
2359 // setting the values of ARP
2360 final MacAddress macdest = new MacAddress(DEST_MAC_ADDRESS);
2361 final MacAddress macsrc = new MacAddress(SRC_MAC_ADDRESS);
2362 final Ipv4Prefix dstiparp = new Ipv4Prefix("200.71.9.52");
2363 final Ipv4Prefix srciparp = new Ipv4Prefix("100.1.1.1");
2364 // create ARP match action
2365 final ArpMatchBuilder arpmatch = new ArpMatchBuilder();
2366 final ArpMatchBuilder arpmatch1 = new ArpMatchBuilder();
2367 final ArpMatchBuilder arpmatch2 = new ArpMatchBuilder();
2368 final ArpMatchBuilder arpmatch3 = new ArpMatchBuilder();
2369 final ArpMatchBuilder arpmatch4 = new ArpMatchBuilder();
2370 final ArpSourceHardwareAddressBuilder arpsrc = new ArpSourceHardwareAddressBuilder();
2371 arpsrc.setAddress(macsrc);
2372 final ArpTargetHardwareAddressBuilder arpdst = new ArpTargetHardwareAddressBuilder();
2373 arpdst.setAddress(macdest);
2374 arpmatch.setArpOp(2);
2375 arpmatch1.setArpSourceHardwareAddress(arpsrc.build());
2376 arpmatch2.setArpTargetHardwareAddress(arpdst.build());
2377 arpmatch3.setArpSourceTransportAddress(srciparp);
2378 arpmatch4.setArpTargetTransportAddress(dstiparp);
2379 setFieldBuilder.setLayer3Match(arpmatch.build());
2380 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2381 ab.withKey(new ActionKey(0));
2382 actionList.add(ab.build());
2384 setFieldBuilder1.setLayer3Match(arpmatch1.build());
2385 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
2386 ab1.withKey(new ActionKey(1));
2387 actionList.add(ab1.build());
2389 setFieldBuilder2.setLayer3Match(arpmatch2.build());
2390 ab2.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder2.build()).build());
2391 ab2.withKey(new ActionKey(2));
2392 actionList.add(ab2.build());
2394 setFieldBuilder3.setLayer3Match(arpmatch3.build());
2395 ab3.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder3.build()).build());
2396 ab3.withKey(new ActionKey(3));
2397 actionList.add(ab3.build());
2399 setFieldBuilder4.setLayer3Match(arpmatch4.build());
2400 ab4.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder4.build()).build());
2401 ab4.withKey(new ActionKey(4));
2402 actionList.add(ab4.build());
2404 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2405 aab.setAction(actionList);
2407 final InstructionBuilder ib = new InstructionBuilder();
2408 ib.withKey(new InstructionKey(0));
2409 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2411 // Put our Instruction in a list of Instructions
2412 final InstructionsBuilder isb = new InstructionsBuilder();
2413 final List<Instruction> instructions = new ArrayList<>();
2414 instructions.add(ib.build());
2415 isb.setInstruction(instructions);
2419 private static InstructionsBuilder createAppyActionInstruction44() {
2421 final List<Action> actionLists = new ArrayList<>();
2422 final ActionBuilder ab = new ActionBuilder();
2423 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2424 final ActionBuilder ab1 = new ActionBuilder();
2425 final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
2426 final ActionBuilder ab5 = new ActionBuilder();
2427 final SetFieldBuilder setFieldBuilder5 = new SetFieldBuilder();
2428 final ActionBuilder ab6 = new ActionBuilder();
2429 final SetFieldBuilder setFieldBuilder6 = new SetFieldBuilder();
2432 final Ipv6MatchBuilder ipv6Builder = new Ipv6MatchBuilder();
2433 final Ipv6MatchBuilder ipv6Builder1 = new Ipv6MatchBuilder();
2434 final Ipv6MatchBuilder ipv6Builder5 = new Ipv6MatchBuilder();
2435 final Ipv6MatchBuilder ipv6Builder6 = new Ipv6MatchBuilder();
2437 final Ipv6Prefix dstip6 = new Ipv6Prefix("2002::2/128");
2438 final Ipv6Prefix srcip6 = new Ipv6Prefix("2001:0:0:0:0:0:0:1/128");
2439 final Ipv6ExtHeaderBuilder nextheader = new Ipv6ExtHeaderBuilder();
2440 nextheader.setIpv6Exthdr(58);
2441 final Ipv6LabelBuilder ipv6label = new Ipv6LabelBuilder();
2442 final Ipv6FlowLabel label = new Ipv6FlowLabel(10028L);
2443 ipv6label.setIpv6Flabel(label);
2445 ipv6Builder.setIpv6Source(srcip6);
2446 ipv6Builder1.setIpv6Destination(dstip6);
2447 ipv6Builder5.setIpv6ExtHeader(nextheader.build());
2448 ipv6Builder6.setIpv6Label(ipv6label.build());
2450 setFieldBuilder.setLayer3Match(ipv6Builder.build());
2451 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2452 ab.withKey(new ActionKey(0));
2453 actionLists.add(ab.build());
2455 setFieldBuilder1.setLayer3Match(ipv6Builder1.build());
2456 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
2457 ab1.withKey(new ActionKey(1));
2458 actionLists.add(ab1.build());
2460 setFieldBuilder5.setLayer3Match(ipv6Builder5.build());
2461 ab5.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder5.build()).build());
2462 ab5.withKey(new ActionKey(5));
2463 actionLists.add(ab5.build());
2465 setFieldBuilder6.setLayer3Match(ipv6Builder6.build());
2466 ab6.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder6.build()).build());
2467 ab6.withKey(new ActionKey(6));
2468 actionLists.add(ab6.build());
2470 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2471 aab.setAction(actionLists);
2473 final InstructionBuilder ib = new InstructionBuilder();
2474 ib.withKey(new InstructionKey(0));
2475 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2477 // Put our Instruction in a list of Instructions
2478 final InstructionsBuilder isb = new InstructionsBuilder();
2479 final List<Instruction> instructions = new ArrayList<>();
2480 instructions.add(ib.build());
2481 isb.setInstruction(instructions);
2485 private static InstructionsBuilder createAppyActionInstruction45() {
2487 final List<Action> actionList = new ArrayList<>();
2488 final ActionBuilder ab = new ActionBuilder();
2489 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2490 final ActionBuilder ab1 = new ActionBuilder();
2491 final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
2494 final Icmpv6MatchBuilder icmpv6match = new Icmpv6MatchBuilder();
2495 final Icmpv6MatchBuilder icmpv6match1 = new Icmpv6MatchBuilder();
2496 icmpv6match.setIcmpv6Type((short) 135);
2497 icmpv6match1.setIcmpv6Code((short) 0);
2498 setFieldBuilder.setIcmpv6Match(icmpv6match.build());
2499 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2500 ab.withKey(new ActionKey(0));
2501 actionList.add(ab.build());
2503 setFieldBuilder1.setIcmpv6Match(icmpv6match1.build());
2504 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
2505 ab1.withKey(new ActionKey(1));
2506 actionList.add(ab1.build());
2508 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2509 aab.setAction(actionList);
2511 final InstructionBuilder ib = new InstructionBuilder();
2512 ib.withKey(new InstructionKey(0));
2513 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2515 // Put our Instruction in a list of Instructions
2516 final InstructionsBuilder isb = new InstructionsBuilder();
2517 final List<Instruction> instructions = new ArrayList<>();
2518 instructions.add(ib.build());
2519 isb.setInstruction(instructions);
2523 private static InstructionsBuilder createAppyActionInstruction46() {
2525 final List<Action> actionList = new ArrayList<>();
2526 final ActionBuilder ab = new ActionBuilder();
2527 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2528 final ActionBuilder ab1 = new ActionBuilder();
2529 final SetFieldBuilder setFieldBuilder1 = new SetFieldBuilder();
2530 final ActionBuilder ab2 = new ActionBuilder();
2531 final SetFieldBuilder setFieldBuilder2 = new SetFieldBuilder();
2534 final ProtocolMatchFieldsBuilder protomatch = new ProtocolMatchFieldsBuilder();
2535 final ProtocolMatchFieldsBuilder protomatch1 = new ProtocolMatchFieldsBuilder();
2536 final ProtocolMatchFieldsBuilder protomatch2 = new ProtocolMatchFieldsBuilder();
2537 protomatch.setMplsLabel((long) 36008);
2538 protomatch1.setMplsTc((short) 4);
2539 protomatch2.setMplsBos((short) 1);
2540 setFieldBuilder.setProtocolMatchFields(protomatch.build());
2541 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2542 ab.withKey(new ActionKey(0));
2543 actionList.add(ab.build());
2545 setFieldBuilder1.setProtocolMatchFields(protomatch1.build());
2546 ab1.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder1.build()).build());
2547 ab1.withKey(new ActionKey(1));
2548 actionList.add(ab1.build());
2550 setFieldBuilder2.setProtocolMatchFields(protomatch2.build());
2551 ab2.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder2.build()).build());
2552 ab2.withKey(new ActionKey(2));
2553 actionList.add(ab2.build());
2555 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2556 aab.setAction(actionList);
2558 final InstructionBuilder ib = new InstructionBuilder();
2559 ib.withKey(new InstructionKey(0));
2560 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2562 // Put our Instruction in a list of Instructions
2563 final InstructionsBuilder isb = new InstructionsBuilder();
2564 final List<Instruction> instructions = new ArrayList<>();
2565 instructions.add(ib.build());
2566 isb.setInstruction(instructions);
2570 private static InstructionsBuilder createAppyActionInstruction47() {
2572 final List<Action> actionList = new ArrayList<>();
2573 final ActionBuilder ab = new ActionBuilder();
2574 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2576 final ProtocolMatchFieldsBuilder protomatch = new ProtocolMatchFieldsBuilder();
2577 protomatch.setPbb(new PbbBuilder().setPbbIsid(4L).setPbbMask(
2578 new BigInteger(new byte[]{0, 1, 0, 0}).longValue()).build());
2579 setFieldBuilder.setProtocolMatchFields(protomatch.build());
2580 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2581 actionList.add(ab.build());
2583 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2584 aab.setAction(actionList);
2586 final InstructionBuilder ib = new InstructionBuilder();
2587 ib.withKey(new InstructionKey(0));
2588 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2590 // Put our Instruction in a list of Instructions
2591 final InstructionsBuilder isb = new InstructionsBuilder();
2592 final List<Instruction> instructions = new ArrayList<>();
2593 instructions.add(ib.build());
2594 isb.setInstruction(instructions);
2598 private static InstructionsBuilder createAppyActionInstruction48() {
2600 final List<Action> actionList = new ArrayList<>();
2601 final ActionBuilder ab = new ActionBuilder();
2602 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2604 final TunnelBuilder tunnel = new TunnelBuilder();
2605 tunnel.setTunnelId(BigInteger.valueOf(10668));
2606 setFieldBuilder.setTunnel(tunnel.build());
2607 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2608 ab.withKey(new ActionKey(0));
2609 actionList.add(ab.build());
2611 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2612 aab.setAction(actionList);
2614 final InstructionBuilder ib = new InstructionBuilder();
2615 ib.withKey(new InstructionKey(0));
2616 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2618 // Put our Instruction in a list of Instructions
2619 final InstructionsBuilder isb = new InstructionsBuilder();
2620 final List<Instruction> instructions = new ArrayList<>();
2621 instructions.add(ib.build());
2622 isb.setInstruction(instructions);
2626 private static InstructionsBuilder createTunnelIpv4DstInstructions() {
2628 final List<Action> actionList = new ArrayList<>();
2629 final ActionBuilder ab = new ActionBuilder();
2630 // Build the tunnel endpoint destination IPv4 address
2631 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2632 final Ipv4Prefix dstIp = new Ipv4Prefix("172.16.100.100");
2633 // Add the mew IPv4 object as the tunnel destination
2634 final TunnelIpv4MatchBuilder tunnelIpv4DstMatchBuilder = new TunnelIpv4MatchBuilder();
2635 tunnelIpv4DstMatchBuilder.setTunnelIpv4Destination(dstIp);
2636 setFieldBuilder.setLayer3Match(tunnelIpv4DstMatchBuilder.build());
2637 // Add the IPv4 tunnel dst to the set_field value
2638 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2640 ab.withKey(new ActionKey(0));
2641 actionList.add(ab.build());
2642 // Resulting action is a per/flow src TEP (set_field:172.16.100.100->tun_dst)
2643 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2644 aab.setAction(actionList);
2645 // Add the action to the ordered list of Instructions
2646 final InstructionBuilder ib = new InstructionBuilder();
2648 ib.withKey(new InstructionKey(0));
2649 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2650 // Add the Instruction in a list of Instructions
2651 final InstructionsBuilder isb = new InstructionsBuilder();
2652 final List<Instruction> instructions = new ArrayList<>();
2653 instructions.add(ib.build());
2654 isb.setInstruction(instructions);
2658 private static InstructionsBuilder createTunnelIpv4SrcInstructions() {
2660 final List<Action> actionList = new ArrayList<>();
2661 final ActionBuilder ab = new ActionBuilder();
2662 // Build the tunnel endpoint source IPv4 address
2663 final SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
2664 final Ipv4Prefix dstIp = new Ipv4Prefix("172.16.100.200");
2665 // Add the new IPv4 object as the tunnel destination
2666 final TunnelIpv4MatchBuilder tunnelIpv4MatchBuilder = new TunnelIpv4MatchBuilder();
2667 tunnelIpv4MatchBuilder.setTunnelIpv4Source(dstIp);
2668 setFieldBuilder.setLayer3Match(tunnelIpv4MatchBuilder.build());
2669 // Add the IPv4 tunnel src to the set_field value
2670 ab.setAction(new SetFieldCaseBuilder().setSetField(setFieldBuilder.build()).build());
2672 ab.withKey(new ActionKey(0));
2673 actionList.add(ab.build());
2674 // Resulting action is a per/flow src TEP (set_field:172.16.100.100->tun_src)
2675 final ApplyActionsBuilder aab = new ApplyActionsBuilder();
2676 aab.setAction(actionList);
2677 // Add the action to the ordered list of Instructions
2678 final InstructionBuilder ib = new InstructionBuilder();
2680 ib.withKey(new InstructionKey(0));
2681 ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
2682 // Put our Instruction in a list of Instructions
2683 final InstructionsBuilder isb = new InstructionsBuilder();
2684 final List<Instruction> instructions = new ArrayList<>();
2685 instructions.add(ib.build());
2686 isb.setInstruction(instructions);
2690 private static MatchBuilder createLLDPMatch() {
2691 final MatchBuilder match = new MatchBuilder();
2692 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
2693 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
2694 ethTypeBuilder.setType(new EtherType(0x88ccL));
2695 eth.setEthernetType(ethTypeBuilder.build());
2696 match.setEthernetMatch(eth.build());
2700 private static MatchBuilder createMatch1() {
2701 final MatchBuilder match = new MatchBuilder();
2702 final Ipv4MatchBuilder ipv4Match = new Ipv4MatchBuilder();
2703 final Ipv4Prefix prefix = new Ipv4Prefix(IPV4_PREFIX);
2704 ipv4Match.setIpv4Destination(prefix);
2705 final Ipv4Match i4m = ipv4Match.build();
2706 match.setLayer3Match(i4m);
2708 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
2709 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
2710 ethTypeBuilder.setType(new EtherType(0x0800L));
2711 eth.setEthernetType(ethTypeBuilder.build());
2712 match.setEthernetMatch(eth.build());
2716 private static MatchBuilder createMatch2() {
2717 final MatchBuilder match = new MatchBuilder();
2718 final Ipv4MatchBuilder ipv4Match = new Ipv4MatchBuilder();
2719 final Ipv4Prefix prefix = new Ipv4Prefix("10.0.0.1");
2720 ipv4Match.setIpv4Source(prefix);
2721 final Ipv4Match i4m = ipv4Match.build();
2722 match.setLayer3Match(i4m);
2724 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
2725 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
2726 ethTypeBuilder.setType(new EtherType(0x0800L));
2727 eth.setEthernetType(ethTypeBuilder.build());
2728 match.setEthernetMatch(eth.build());
2732 private static MatchBuilder createMatch3() {
2733 final MatchBuilder match = new MatchBuilder();
2734 final EthernetMatchBuilder ethernetMatch = new EthernetMatchBuilder();
2735 final EthernetSourceBuilder ethSourceBuilder = new EthernetSourceBuilder();
2736 ethSourceBuilder.setAddress(new MacAddress("00:00:00:00:00:01"));
2737 ethernetMatch.setEthernetSource(ethSourceBuilder.build());
2738 match.setEthernetMatch(ethernetMatch.build());
2743 private static MatchBuilder createICMPv6Match1() {
2745 final MatchBuilder match = new MatchBuilder();
2746 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
2747 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
2748 ethTypeBuilder.setType(new EtherType(0x86ddL));
2749 eth.setEthernetType(ethTypeBuilder.build());
2750 match.setEthernetMatch(eth.build());
2753 final IpMatchBuilder ipmatch = new IpMatchBuilder();
2754 ipmatch.setIpProtocol((short) 256);
2755 match.setIpMatch(ipmatch.build());
2758 final Icmpv6MatchBuilder icmpv6match = new Icmpv6MatchBuilder();
2761 icmpv6match.setIcmpv6Type((short) 135);
2762 icmpv6match.setIcmpv6Code((short) 1);
2763 match.setIcmpv6Match(icmpv6match.build());
2768 private static MatchBuilder createMatch33() {
2770 final MatchBuilder match = new MatchBuilder();
2771 final Ipv4MatchBuilder ipv4Match = new Ipv4MatchBuilder();
2772 final Ipv4Prefix prefix = new Ipv4Prefix("10.0.0.10");
2773 ipv4Match.setIpv4Source(prefix);
2774 final Ipv4Match i4m = ipv4Match.build();
2775 match.setLayer3Match(i4m);
2777 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
2778 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
2779 ethTypeBuilder.setType(new EtherType(0xfffeL));
2780 eth.setEthernetType(ethTypeBuilder.build());
2781 match.setEthernetMatch(eth.build());
2785 private static MatchBuilder createInphyportMatch(final NodeId nodeId) {
2786 final MatchBuilder match = new MatchBuilder();
2787 match.setInPort(new NodeConnectorId(nodeId + ":202"));
2788 match.setInPhyPort(new NodeConnectorId(nodeId + ":10122"));
2792 private static MatchBuilder createEthernetMatch() {
2793 final MatchBuilder match = new MatchBuilder();
2794 final EthernetMatchBuilder ethmatch = new EthernetMatchBuilder(); // ethernettype
2796 final EthernetTypeBuilder ethtype = new EthernetTypeBuilder();
2797 final EtherType type = new EtherType(0x0800L);
2798 ethmatch.setEthernetType(ethtype.setType(type).build());
2800 final EthernetDestinationBuilder ethdest = new EthernetDestinationBuilder(); // ethernet
2803 final MacAddress macdest = new MacAddress(DEST_MAC_ADDRESS);
2804 ethdest.setAddress(macdest);
2805 ethdest.setMask(new MacAddress("ff:ff:ff:00:00:00"));
2807 ethmatch.setEthernetDestination(ethdest.build());
2809 final EthernetSourceBuilder ethsrc = new EthernetSourceBuilder();
2810 final MacAddress macsrc = new MacAddress(SRC_MAC_ADDRESS);
2811 ethsrc.setAddress(macsrc);
2812 ethsrc.setMask(new MacAddress("ff:ff:00:00:00:00"));
2814 ethmatch.setEthernetSource(ethsrc.build());
2815 match.setEthernetMatch(ethmatch.build());
2820 private static MatchBuilder createVlanMatch() {
2821 final MatchBuilder match = new MatchBuilder();
2823 final VlanMatchBuilder vlanBuilder = new VlanMatchBuilder();
2824 final VlanIdBuilder vlanIdBuilder = new VlanIdBuilder();
2825 final VlanId vlanId = new VlanId(10);
2826 final VlanPcp vpcp = new VlanPcp((short) 3);
2827 vlanBuilder.setVlanPcp(vpcp);
2828 vlanIdBuilder.setVlanId(vlanId);
2829 vlanIdBuilder.setVlanIdPresent(true);
2830 vlanBuilder.setVlanId(vlanIdBuilder.build());
2831 match.setVlanMatch(vlanBuilder.build());
2835 private static MatchBuilder createArpMatch() {
2836 final MatchBuilder match = new MatchBuilder();
2838 final EthernetMatchBuilder ethmatch = new EthernetMatchBuilder();
2839 final MacAddress macdest = new MacAddress(DEST_MAC_ADDRESS);
2840 final MacAddress macsrc = new MacAddress(SRC_MAC_ADDRESS);
2842 final EthernetTypeBuilder ethtype = new EthernetTypeBuilder();
2843 final EtherType type = new EtherType(0x0806L);
2844 ethmatch.setEthernetType(ethtype.setType(type).build());
2847 final Ipv4Prefix dstip = new Ipv4Prefix("200.71.9.52/10");
2848 final Ipv4Prefix srcip = new Ipv4Prefix("100.1.1.1/8");
2851 final ArpMatchBuilder arpmatch = new ArpMatchBuilder();
2852 final ArpSourceHardwareAddressBuilder arpsrc = new ArpSourceHardwareAddressBuilder();
2853 arpsrc.setAddress(macsrc);
2854 arpsrc.setMask(new MacAddress("ff:ff:ff:00:00:00"));
2855 final ArpTargetHardwareAddressBuilder arpdst = new ArpTargetHardwareAddressBuilder();
2856 arpdst.setAddress(macdest);
2857 arpdst.setMask(new MacAddress("ff:ff:00:00:00:00"));
2858 arpmatch.setArpOp(2);
2859 arpmatch.setArpSourceHardwareAddress(arpsrc.build());
2860 arpmatch.setArpTargetHardwareAddress(arpdst.build());
2861 arpmatch.setArpSourceTransportAddress(srcip);
2862 arpmatch.setArpTargetTransportAddress(dstip);
2864 match.setEthernetMatch(ethmatch.build());
2865 match.setLayer3Match(arpmatch.build());
2870 private static MatchBuilder createL3IPv6Match() {
2871 final MatchBuilder match = new MatchBuilder();
2873 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
2874 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
2875 ethTypeBuilder.setType(new EtherType(0x86ddL));
2876 eth.setEthernetType(ethTypeBuilder.build());
2877 match.setEthernetMatch(eth.build());
2879 final MacAddress ndsll = new MacAddress("c2:00:54:f5:00:00");
2880 final MacAddress ndtll = new MacAddress("00:0c:29:0e:4c:67");
2881 final Ipv6ExtHeaderBuilder nextheader = new Ipv6ExtHeaderBuilder();
2882 nextheader.setIpv6Exthdr(58);
2883 final Ipv6LabelBuilder ipv6label = new Ipv6LabelBuilder();
2884 final Ipv6FlowLabel label = new Ipv6FlowLabel(10028L);
2885 ipv6label.setIpv6Flabel(label);
2886 ipv6label.setFlabelMask(new Ipv6FlowLabel(1L));
2888 final Icmpv6MatchBuilder icmpv6match = new Icmpv6MatchBuilder(); // icmpv6
2890 icmpv6match.setIcmpv6Type((short) 135);
2891 icmpv6match.setIcmpv6Code((short) 0);
2892 match.setIcmpv6Match(icmpv6match.build());
2894 final Ipv6MatchBuilder ipv6match = new Ipv6MatchBuilder();
2895 // ipv6match.setIpv6Source(srcip6);
2896 // ipv6match.setIpv6Destination(dstip6);
2897 // ipv6match.setIpv6ExtHeader(nextheader.build());
2898 ipv6match.setIpv6NdSll(ndsll);
2899 ipv6match.setIpv6NdTll(ndtll);
2900 // ipv6match.setIpv6NdTarget(ndtarget);
2901 ipv6match.setIpv6Label(ipv6label.build());
2903 match.setLayer3Match(ipv6match.build());
2908 private static MatchBuilder createICMPv4Match() {
2909 final MatchBuilder match = new MatchBuilder();
2910 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
2911 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
2912 ethTypeBuilder.setType(new EtherType(0x0800L));
2913 eth.setEthernetType(ethTypeBuilder.build());
2914 match.setEthernetMatch(eth.build());
2916 final IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version
2917 ipmatch.setIpProtocol((short) 1);
2918 match.setIpMatch(ipmatch.build());
2920 final Icmpv4MatchBuilder icmpv4match = new Icmpv4MatchBuilder(); // icmpv4
2922 icmpv4match.setIcmpv4Type((short) 8);
2923 icmpv4match.setIcmpv4Code((short) 0);
2924 match.setIcmpv4Match(icmpv4match.build());
2928 private static MatchBuilder createICMPv6Match() {
2930 final MatchBuilder match = new MatchBuilder();
2931 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
2932 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
2933 ethTypeBuilder.setType(new EtherType(0x86ddL));
2934 eth.setEthernetType(ethTypeBuilder.build());
2935 match.setEthernetMatch(eth.build());
2937 final IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version
2938 ipmatch.setIpProtocol((short) 58);
2939 match.setIpMatch(ipmatch.build());
2941 final Icmpv6MatchBuilder icmpv6match = new Icmpv6MatchBuilder(); // icmpv6
2943 icmpv6match.setIcmpv6Type((short) 135);
2944 icmpv6match.setIcmpv6Code((short) 1);
2945 match.setIcmpv6Match(icmpv6match.build());
2950 private static MatchBuilder createToSMatch() {
2951 final MatchBuilder match = new MatchBuilder();
2952 final EthernetMatchBuilder ethmatch = new EthernetMatchBuilder();
2953 final EthernetTypeBuilder ethtype = new EthernetTypeBuilder();
2954 final EtherType type = new EtherType(0x0800L);
2955 ethmatch.setEthernetType(ethtype.setType(type).build());
2956 match.setEthernetMatch(ethmatch.build());
2958 final IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version
2959 ipmatch.setIpProtocol((short) 6);
2960 final Dscp dscp = new Dscp((short) 8);
2961 ipmatch.setIpDscp(dscp);
2962 match.setIpMatch(ipmatch.build());
2966 private static MatchBuilder createL4TCPMatch() {
2967 final MatchBuilder match = new MatchBuilder();
2969 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
2970 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
2971 ethTypeBuilder.setType(new EtherType(0x0800L));
2972 eth.setEthernetType(ethTypeBuilder.build());
2973 match.setEthernetMatch(eth.build());
2975 final IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version
2976 ipmatch.setIpProtocol((short) 6);
2977 match.setIpMatch(ipmatch.build());
2979 final PortNumber srcport = new PortNumber(1213);
2980 final PortNumber dstport = new PortNumber(646);
2981 final TcpMatchBuilder tcpmatch = new TcpMatchBuilder(); // tcp match
2982 tcpmatch.setTcpSourcePort(srcport);
2983 tcpmatch.setTcpDestinationPort(dstport);
2984 match.setLayer4Match(tcpmatch.build());
2989 private static MatchBuilder createL4UDPMatch() {
2990 final MatchBuilder match = new MatchBuilder();
2992 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
2993 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
2994 ethTypeBuilder.setType(new EtherType(0x0800L));
2995 eth.setEthernetType(ethTypeBuilder.build());
2996 match.setEthernetMatch(eth.build());
2998 final IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version
2999 ipmatch.setIpProtocol((short) 17);
3000 match.setIpMatch(ipmatch.build());
3002 final PortNumber srcport = new PortNumber(1325);
3003 final PortNumber dstport = new PortNumber(42);
3004 final UdpMatchBuilder udpmatch = new UdpMatchBuilder(); // udp match
3005 udpmatch.setUdpDestinationPort(dstport);
3006 udpmatch.setUdpSourcePort(srcport);
3007 match.setLayer4Match(udpmatch.build());
3012 private static MatchBuilder createL4SCTPMatch() {
3013 final MatchBuilder match = new MatchBuilder();
3015 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
3016 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
3017 ethTypeBuilder.setType(new EtherType(0x0800L));
3018 eth.setEthernetType(ethTypeBuilder.build());
3019 match.setEthernetMatch(eth.build());
3021 final IpMatchBuilder ipmatch = new IpMatchBuilder(); // ipv4 version
3022 ipmatch.setIpProtocol((short) 132);
3023 match.setIpMatch(ipmatch.build());
3025 final SctpMatchBuilder sctpmatch = new SctpMatchBuilder();
3026 final PortNumber srcport = new PortNumber(1435);
3027 final PortNumber dstport = new PortNumber(22);
3028 sctpmatch.setSctpSourcePort(srcport);
3029 sctpmatch.setSctpDestinationPort(dstport);
3030 match.setLayer4Match(sctpmatch.build());
3035 private static MatchBuilder createMetadataMatch() {
3036 final MatchBuilder match = new MatchBuilder();
3037 final byte[] metamask = new byte[]{(byte) -1, (byte) -1, (byte) -1, 0, 0, 0, (byte) 1, (byte) 1};
3038 final MetadataBuilder metadata = new MetadataBuilder(); // metadata match
3039 metadata.setMetadata(BigInteger.valueOf(500L));
3040 metadata.setMetadataMask(new BigInteger(1, metamask));
3041 match.setMetadata(metadata.build());
3046 private static MatchBuilder createMplsMatch() {
3047 final MatchBuilder match = new MatchBuilder();
3049 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
3050 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
3051 ethTypeBuilder.setType(new EtherType(0x8847L));
3052 eth.setEthernetType(ethTypeBuilder.build());
3053 match.setEthernetMatch(eth.build());
3055 final ProtocolMatchFieldsBuilder protomatch = new ProtocolMatchFieldsBuilder(); // mpls
3057 protomatch.setMplsLabel((long) 36008);
3058 protomatch.setMplsTc((short) 4);
3059 protomatch.setMplsBos((short) 1);
3060 match.setProtocolMatchFields(protomatch.build());
3066 private static MatchBuilder createPbbMatch() {
3067 final MatchBuilder match = new MatchBuilder();
3069 final EthernetMatchBuilder eth = new EthernetMatchBuilder();
3070 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
3071 ethTypeBuilder.setType(new EtherType(0x88E7L));
3072 eth.setEthernetType(ethTypeBuilder.build());
3073 match.setEthernetMatch(eth.build());
3075 final ProtocolMatchFieldsBuilder protomatch = new ProtocolMatchFieldsBuilder(); // mpls
3077 protomatch.setPbb(new PbbBuilder().setPbbIsid(4L).setPbbMask(
3078 new BigInteger(new byte[]{0, 1, 0, 0}).longValue()).build());
3079 match.setProtocolMatchFields(protomatch.build());
3085 private static MatchBuilder createTunnelIDMatch() {
3086 final MatchBuilder match = new MatchBuilder();
3087 final TunnelBuilder tunnel = new TunnelBuilder(); // tunnel id match
3088 tunnel.setTunnelId(BigInteger.valueOf(10668));
3089 final byte[] mask = new byte[]{(byte) -1, (byte) -1, (byte) -1, 0, 0, 0, (byte) 1, (byte) 1};
3090 tunnel.setTunnelMask(new BigInteger(1, mask));
3091 match.setTunnel(tunnel.build());
3097 * Test match for TCP_Flags.
3099 * @return match containing Ethertype (0x0800), IP Protocol (TCP), TCP_Flag (SYN)
3101 //FIXME: move to extensible support
3102 private static MatchBuilder createTcpFlagMatch() {
3103 final MatchBuilder match = new MatchBuilder();
3106 final EthernetMatchBuilder ethernetType = new EthernetMatchBuilder();
3107 final EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
3108 ethTypeBuilder.setType(new EtherType(0x0800L));
3109 ethernetType.setEthernetType(ethTypeBuilder.build());
3110 match.setEthernetMatch(ethernetType.build());
3112 // TCP Protocol Match
3113 final IpMatchBuilder ipMatch = new IpMatchBuilder(); // ipv4 version
3114 ipMatch.setIpProtocol((short) 6);
3115 match.setIpMatch(ipMatch.build());
3118 final PortNumber dstPort = new PortNumber(80);
3119 final TcpMatchBuilder tcpMatch = new TcpMatchBuilder();
3120 tcpMatch.setTcpDestinationPort(dstPort);
3121 match.setLayer4Match(tcpMatch.build());
3123 * Defined TCP Flag values in OVS v2.1+
3124 * TCP_FIN 0x001 / TCP_SYN 0x002 / TCP_RST 0x004
3125 * TCP_PSH 0x008 / TCP_ACK 0x010 / TCP_URG 0x020
3126 * TCP_ECE 0x040 / TCP_CWR 0x080 / TCP_NS 0x100
3128 final TcpFlagsMatchBuilder tcpFlagsMatch = new TcpFlagsMatchBuilder();
3129 tcpFlagsMatch.setTcpFlags(0x002);
3130 match.setTcpFlagsMatch(tcpFlagsMatch.build());
3135 public void _removeMDFlow(final CommandInterpreter ci) {
3136 final ReadWriteTransaction modification = dataBroker.newReadWriteTransaction();
3137 final NodeBuilder tn = createTestNode(ci.nextArgument());
3138 final String flowtype = ci.nextArgument();
3140 if (flowtype.equals("fTM")) {
3141 tf = createtablemiss();
3143 tf = createTestFlow(tn, flowtype, ci.nextArgument());
3145 final InstanceIdentifier<Flow> path1 = InstanceIdentifier.create(Nodes.class).child(Node.class, tn.key())
3146 .augmentation(FlowCapableNode.class).child(Table.class, new TableKey(tf.getTableId()))
3147 .child(Flow.class, tf.key());
3148 modification.delete(LogicalDatastoreType.CONFIGURATION, path1);
3149 modification.commit().addCallback(new FutureCallback<Object>() {
3151 public void onSuccess(final Object notUsed) {
3152 ci.println("Status of Group Data Loaded Transaction: success.");
3156 public void onFailure(final Throwable throwable) {
3157 LOG.error("Status of Group Data Loaded Transaction : failure.", throwable);
3158 ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable));
3160 }, MoreExecutors.directExecutor());
3166 * @param ci arguments: switchId flowType tableNum, e.g.: addMDFlow openflow:1 f1 42
3168 public void _addMDFlow(final CommandInterpreter ci) {
3169 final NodeBuilder tn = createTestNode(ci.nextArgument());
3170 final String flowtype = ci.nextArgument();
3172 if (flowtype.equals("fTM")) {
3173 tf = createtablemiss();
3175 tf = createTestFlow(tn, flowtype, ci.nextArgument());
3177 writeFlow(ci, tf, tn);
3180 private void writeFlow(final CommandInterpreter ci, final FlowBuilder flow, final NodeBuilder nodeBuilder) {
3181 final ReadWriteTransaction modification = dataBroker.newReadWriteTransaction();
3182 final InstanceIdentifier<Flow> path1 = InstanceIdentifier.create(Nodes.class)
3183 .child(Node.class, nodeBuilder.key()).augmentation(FlowCapableNode.class)
3184 .child(Table.class, new TableKey(flow.getTableId())).child(Flow.class, flow.key());
3185 modification.mergeParentStructureMerge(LogicalDatastoreType.CONFIGURATION,
3186 nodeBuilderToInstanceId(nodeBuilder), nodeBuilder.build());
3187 modification.mergeParentStructureMerge(LogicalDatastoreType.CONFIGURATION, path1, flow.build());
3188 modification.commit().addCallback(new FutureCallback<Object>() {
3190 public void onSuccess(final Object notUsed) {
3191 ci.println("Status of Group Data Loaded Transaction: success.");
3195 public void onFailure(final Throwable throwable) {
3196 LOG.error("Status of Group Data Loaded Transaction : failure.", throwable);
3197 ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable));
3199 }, MoreExecutors.directExecutor());
3202 public void _modifyMDFlow(final CommandInterpreter ci) {
3203 final NodeBuilder tn = createTestNode(ci.nextArgument());
3204 final FlowBuilder tf = createTestFlow(tn, ci.nextArgument(), ci.nextArgument());
3205 tf.setFlowName(UPDATED_FLOW_NAME);
3206 writeFlow(ci, tf, tn);
3207 tf.setFlowName(ORIGINAL_FLOW_NAME);
3208 writeFlow(ci, tf, tn);
3212 public String getHelp() {
3217 * usage testSwitchFlows <numberOfSwitches> <numberOfFlows> <warmup iterations> <Number Of Threads>
3218 * ex: _perfFlowTest 10 5 1 2
3220 public void _perfFlowTest(final CommandInterpreter ci) {
3222 final String numberOfSwtichesStr = ci.nextArgument();
3223 final String numberOfFlowsStr = ci.nextArgument();
3224 final String warmupIterationsStr = ci.nextArgument();
3225 final String threadCountStr = ci.nextArgument();
3226 final String warmUpStr = ci.nextArgument();
3228 int numberOfSwtiches = 0;
3229 int numberOfFlows = 0;
3230 int warmupIterations = 0;
3231 boolean warmUpIterations = false;
3233 int threadCount = 0;
3234 if (numberOfSwtichesStr != null && !numberOfSwtichesStr.trim().equals("")) {
3235 numberOfSwtiches = Integer.parseInt(numberOfSwtichesStr);
3237 numberOfSwtiches = 2;
3240 if (numberOfFlowsStr != null && !numberOfFlowsStr.trim().equals("")) {
3241 numberOfFlows = Integer.parseInt(numberOfFlowsStr);
3246 if (warmupIterationsStr != null && !warmupIterationsStr.trim().equals("")) {
3247 warmupIterations = Integer.parseInt(warmupIterationsStr);
3249 warmupIterations = 2;
3252 if (threadCountStr != null && !threadCountStr.trim().equals("")) {
3253 threadCount = Integer.parseInt(threadCountStr);
3257 if (warmUpStr != null && !warmUpStr.trim().equals("") && warmUpStr.trim().equals("true")) {
3258 warmUpIterations = true;
3260 warmUpIterations = false;
3262 ci.println("* Test Configurations*");
3263 ci.println("* numberOfSwtiches:::" + numberOfSwtiches + "");
3264 ci.println("* numberOfFlows:::" + numberOfFlows + "");
3265 ci.println("* warmupIterations:::" + warmupIterations + "");
3266 ci.println("* Number of Threads :::" + threadCount + "");
3267 ci.println("* Warmup Required? :::" + warmUpIterations + "");
3269 String dataPath = "openflow:1";
3272 final String tableId = "0";
3273 if (warmUpIterations) {
3274 ci.println("----Warmup Started-----");
3275 for (int j = 1; j <= warmupIterations; j++) {
3276 for (int i = 1; i <= numberOfSwtiches; i++) {
3277 dataPath = "openflow:" + i;
3278 tn = createTestNode(dataPath);
3279 for (int flow = 1; flow < numberOfFlows; flow++) {
3280 tf = createTestFlowPerfTest("f1", tableId, flow);
3281 writeFlow(ci, tf, tn);
3286 ci.println("----Warmup Done-----");
3289 final ExecutorService executor = Executors.newFixedThreadPool(threadCount);
3291 for (int t = 0; t < threadCount; t++) {
3293 final Runnable tRunnable = new TestFlowThread(numberOfSwtiches, numberOfFlows, ci, t, tableID);
3294 executor.execute(tRunnable);
3296 executor.shutdown();
3297 executor.awaitTermination(1, TimeUnit.SECONDS);
3298 } catch (InterruptedException e) {
3299 ci.println("Exception:" + e.getMessage());
3303 public class TestFlowThread implements Runnable {
3305 int numberOfSwitches;
3307 CommandInterpreter ci;
3311 TestFlowThread(final int numberOfSwtiches, final int numberOfFlows, final CommandInterpreter ci,
3312 final int threadNumber, final int tableID) {
3313 this.numberOfSwitches = numberOfSwtiches;
3314 this.numberOfFlows = numberOfFlows;
3316 this.theadNumber = threadNumber;
3317 this.tableID = tableID;
3325 public void executeFlow() {
3327 String dataPath = "openflow:1";
3330 //String tableId = "0";
3332 ci.println("New Thread started with id: ID_"
3333 + this.theadNumber);
3334 int totalNumberOfFlows = 0;
3335 final long startTime = System.currentTimeMillis();
3337 for (int i = 1; i <= this.numberOfSwitches; i++) {
3338 dataPath = "openflow:" + i;
3339 tn = createTestNode(dataPath);
3340 for (int flow2 = 1; flow2 <= this.numberOfFlows; flow2++) {
3341 tf = createTestFlowPerfTest("f1", "" + this.tableID, flow2);
3342 writeFlow(this.ci, tf, tn);
3343 totalNumberOfFlows++;
3346 final long endTime = System.currentTimeMillis();
3347 final long timeInSeconds = Math.round((endTime - startTime) / 1000.0F);
3348 if (timeInSeconds > 0) {
3349 ci.println("Total flows added in Thread:" + this.theadNumber + ": Flows/Sec::"
3350 + Math.round((float)totalNumberOfFlows / timeInSeconds));
3352 ci.println("Total flows added in Thread:" + this.theadNumber + ": Flows/Sec::" + totalNumberOfFlows);
3359 * usage testAllFlows <dp>
3360 * ex: _perfFlowTest 1
3362 @SuppressWarnings("checkstyle:IllegalCatch")
3363 public void _testAllFlows(final CommandInterpreter ci) {
3364 String dataPathID = ci.nextArgument();
3365 final int numberOfFlows = 82;
3366 if (dataPathID == null || dataPathID.trim().equals("")) {
3369 ci.println("* Test All Flows *");
3370 ci.println("* dataPathID:::" + dataPathID + "");
3371 final String dataPath = "openflow:" + dataPathID;
3372 final String tableId = "0";
3373 final NodeBuilder tn = createTestNode(dataPath);
3375 for (int flow = 1; flow < numberOfFlows; flow++) {
3376 final String flowID = "f" + flow;
3378 tf = createTestFlow(tn, flowID, tableId);
3379 writeFlow(ci, tf, tn);
3380 } catch (RuntimeException e) {
3381 ci.println("--Test Failed--Issue found while adding flow" + flow);