2 * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.vpnservice.mdsalutil;
10 import java.math.BigInteger;
11 import java.util.ArrayList;
12 import java.util.List;
15 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.EtherType;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetDestinationBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetSourceBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetTypeBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatchBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.MetadataBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.ProtocolMatchFieldsBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.ArpMatchBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.TcpMatchBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatchBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.protocol.match.fields.PbbBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.vlan.match.fields.VlanIdBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg1;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.GeneralAugMatchNodesNodeTableFlow;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.GeneralAugMatchNodesNodeTableFlowBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.general.extension.grouping.ExtensionBuilder;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.general.extension.list.grouping.ExtensionList;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.general.extension.list.grouping.ExtensionListBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNodesNodeTableFlow;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNodesNodeTableFlowBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxReg1Key;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.nxm.nx.reg.grouping.NxmNxRegBuilder;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpOp;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpSpa;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpTpa;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthDst;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthSrc;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthType;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.InPort;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.IpProto;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv4Dst;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv4Src;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.MatchField;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Metadata;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.MplsLabel;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.PbbIsid;
60 //import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.SalOpenflowBasicClass;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TcpDst;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TcpSrc;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.UdpDst;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.UdpSrc;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.VlanVid;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.set.field.match.SetFieldMatch;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.set.field.match.SetFieldMatchBuilder;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.TunnelBuilder;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TunnelId;
71 public enum MatchFieldType {
74 protected Class<? extends MatchField> getMatchType() {
79 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
80 EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder
81 .get(EthernetMatchBuilder.class);
83 if (ethernetMatchBuilder == null) {
84 ethernetMatchBuilder = new EthernetMatchBuilder();
85 mapMatchBuilder.put(EthernetMatchBuilder.class, ethernetMatchBuilder);
88 ethernetMatchBuilder.setEthernetSource(new EthernetSourceBuilder().setAddress(
89 new MacAddress(matchInfo.getStringMatchValues()[0])).build());
93 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
94 EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder
95 .remove(EthernetMatchBuilder.class);
97 if (ethernetMatchBuilder != null) {
98 matchBuilderInOut.setEthernetMatch(ethernetMatchBuilder.build());
105 protected Class<? extends MatchField> getMatchType() {
110 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
111 EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder
112 .get(EthernetMatchBuilder.class);
114 if (ethernetMatchBuilder == null) {
115 ethernetMatchBuilder = new EthernetMatchBuilder();
116 mapMatchBuilder.put(EthernetMatchBuilder.class, ethernetMatchBuilder);
119 ethernetMatchBuilder.setEthernetDestination(new EthernetDestinationBuilder().setAddress(
120 new MacAddress(matchInfo.getStringMatchValues()[0])).build());
124 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
125 EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder
126 .remove(EthernetMatchBuilder.class);
128 if (ethernetMatchBuilder != null) {
129 matchBuilderInOut.setEthernetMatch(ethernetMatchBuilder.build());
136 protected Class<? extends MatchField> getMatchType() {
137 return EthType.class;
141 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
142 EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder
143 .get(EthernetMatchBuilder.class);
145 if (ethernetMatchBuilder == null) {
146 ethernetMatchBuilder = new EthernetMatchBuilder();
147 mapMatchBuilder.put(EthernetMatchBuilder.class, ethernetMatchBuilder);
150 ethernetMatchBuilder.setEthernetType(new EthernetTypeBuilder().setType(
151 new EtherType(matchInfo.getMatchValues()[0])).build());
155 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
156 EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder
157 .remove(EthernetMatchBuilder.class);
159 if (ethernetMatchBuilder != null) {
160 matchBuilderInOut.setEthernetMatch(ethernetMatchBuilder.build());
167 protected Class<? extends MatchField> getMatchType() {
172 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
176 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
178 StringBuffer nodeConnectorId = new StringBuffer().append("openflow:").append(matchInfo.getBigMatchValues()[0])
179 .append(':').append(matchInfo.getBigMatchValues()[1]);
180 matchBuilderInOut.setInPort(new NodeConnectorId(nodeConnectorId.toString()));
186 protected Class<? extends MatchField> getMatchType() {
187 return IpProto.class;
191 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
192 IpMatchBuilder ipMatchBuilder = (IpMatchBuilder) mapMatchBuilder.get(IpMatchBuilder.class);
194 if (ipMatchBuilder == null) {
195 ipMatchBuilder = new IpMatchBuilder();
196 mapMatchBuilder.put(IpMatchBuilder.class, ipMatchBuilder);
199 ipMatchBuilder.setIpProtocol(Short.valueOf((short) matchInfo.getMatchValues()[0])).build();
203 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
204 IpMatchBuilder ipMatchBuilder = (IpMatchBuilder) mapMatchBuilder.remove(IpMatchBuilder.class);
206 if (ipMatchBuilder != null) {
207 matchBuilderInOut.setIpMatch(ipMatchBuilder.build());
214 protected Class<? extends MatchField> getMatchType() {
215 return Ipv4Dst.class;
219 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
220 Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.get(Ipv4MatchBuilder.class);
222 if (ipv4MatchBuilder == null) {
223 ipv4MatchBuilder = new Ipv4MatchBuilder();
224 mapMatchBuilder.put(Ipv4MatchBuilder.class, ipv4MatchBuilder);
227 long[] prefix = matchInfo.getMatchValues();
228 ipv4MatchBuilder.setIpv4Destination(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1]))).build();
232 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
233 Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.remove(Ipv4MatchBuilder.class);
235 if (ipv4MatchBuilder != null) {
236 matchBuilderInOut.setLayer3Match(ipv4MatchBuilder.build());
243 protected Class<? extends MatchField> getMatchType() {
244 return Ipv4Src.class;
248 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
249 Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.get(Ipv4MatchBuilder.class);
251 if (ipv4MatchBuilder == null) {
252 ipv4MatchBuilder = new Ipv4MatchBuilder();
253 mapMatchBuilder.put(Ipv4MatchBuilder.class, ipv4MatchBuilder);
256 long[] prefix = matchInfo.getMatchValues();
257 ipv4MatchBuilder.setIpv4Source(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1]))).build();
261 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
262 Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.remove(Ipv4MatchBuilder.class);
264 if (ipv4MatchBuilder != null) {
265 matchBuilderInOut.setLayer3Match(ipv4MatchBuilder.build());
272 protected Class<? extends MatchField> getMatchType() {
277 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
278 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.get(ArpMatchBuilder.class);
280 if (arpMatchBuilder == null) {
281 arpMatchBuilder = new ArpMatchBuilder();
282 mapMatchBuilder.put(ArpMatchBuilder.class, arpMatchBuilder);
285 arpMatchBuilder.setArpOp(Integer.valueOf((int) matchInfo.getMatchValues()[0]));
289 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
290 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.remove(ArpMatchBuilder.class);
292 if (arpMatchBuilder != null) {
293 matchBuilderInOut.setLayer3Match(arpMatchBuilder.build());
300 protected Class<? extends MatchField> getMatchType() {
305 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
306 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.get(ArpMatchBuilder.class);
308 if (arpMatchBuilder == null) {
309 arpMatchBuilder = new ArpMatchBuilder();
310 mapMatchBuilder.put(ArpMatchBuilder.class, arpMatchBuilder);
313 long[] prefix = matchInfo.getMatchValues();
314 arpMatchBuilder.setArpTargetTransportAddress(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1])));
318 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
319 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.remove(ArpMatchBuilder.class);
321 if (arpMatchBuilder != null) {
322 matchBuilderInOut.setLayer3Match(arpMatchBuilder.build());
329 protected Class<? extends MatchField> getMatchType() {
334 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
335 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.get(ArpMatchBuilder.class);
337 if (arpMatchBuilder == null) {
338 arpMatchBuilder = new ArpMatchBuilder();
339 mapMatchBuilder.put(ArpMatchBuilder.class, arpMatchBuilder);
342 long[] prefix = matchInfo.getMatchValues();
343 arpMatchBuilder.setArpSourceTransportAddress(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1])));
347 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
348 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.remove(ArpMatchBuilder.class);
350 if (arpMatchBuilder != null) {
351 matchBuilderInOut.setLayer3Match(arpMatchBuilder.build());
358 protected Class<? extends MatchField> getMatchType() {
359 return Metadata.class;
363 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
364 MetadataBuilder metadataBuilder = (MetadataBuilder) mapMatchBuilder.get(MetadataBuilder.class);
366 if (metadataBuilder == null) {
367 metadataBuilder = new MetadataBuilder();
368 mapMatchBuilder.put(MetadataBuilder.class, metadataBuilder);
371 BigInteger[] metadataValues = matchInfo.getBigMatchValues();
372 metadataBuilder.setMetadata(metadataValues[0]).setMetadataMask(metadataValues[1]).build();
376 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
377 MetadataBuilder metadataBuilder = (MetadataBuilder) mapMatchBuilder.remove(MetadataBuilder.class);
379 if (metadataBuilder != null) {
380 matchBuilderInOut.setMetadata(metadataBuilder.build());
387 protected Class<? extends MatchField> getMatchType() {
388 return MplsLabel.class;
392 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
393 ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder
394 .get(ProtocolMatchFieldsBuilder.class);
396 if (protocolMatchFieldsBuilder == null) {
397 protocolMatchFieldsBuilder = new ProtocolMatchFieldsBuilder();
398 mapMatchBuilder.put(ProtocolMatchFieldsBuilder.class, protocolMatchFieldsBuilder);
401 protocolMatchFieldsBuilder.setMplsLabel(Long.valueOf(matchInfo.getStringMatchValues()[0])).build();
405 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
406 ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder
407 .remove(ProtocolMatchFieldsBuilder.class);
409 if (protocolMatchFieldsBuilder != null) {
410 matchBuilderInOut.setProtocolMatchFields(protocolMatchFieldsBuilder.build());
417 protected Class<? extends MatchField> getMatchType() {
418 return PbbIsid.class;
422 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
423 ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder
424 .get(ProtocolMatchFieldsBuilder.class);
426 if (protocolMatchFieldsBuilder == null) {
427 protocolMatchFieldsBuilder = new ProtocolMatchFieldsBuilder();
428 mapMatchBuilder.put(ProtocolMatchFieldsBuilder.class, protocolMatchFieldsBuilder);
431 protocolMatchFieldsBuilder.setPbb(new PbbBuilder().setPbbIsid(Long.valueOf(matchInfo.getMatchValues()[0]))
436 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
437 ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder
438 .remove(ProtocolMatchFieldsBuilder.class);
440 if (protocolMatchFieldsBuilder != null) {
441 matchBuilderInOut.setProtocolMatchFields(protocolMatchFieldsBuilder.build());
448 protected Class<? extends MatchField> getMatchType() {
453 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
454 TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.get(TcpMatchBuilder.class);
456 if (tcpMatchBuilder == null) {
457 tcpMatchBuilder = new TcpMatchBuilder();
458 mapMatchBuilder.put(TcpMatchBuilder.class, tcpMatchBuilder);
461 tcpMatchBuilder.setTcpDestinationPort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0])));
465 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
466 TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.remove(TcpMatchBuilder.class);
468 if (tcpMatchBuilder != null) {
469 matchBuilderInOut.setLayer4Match(tcpMatchBuilder.build());
476 protected Class<? extends MatchField> getMatchType() {
481 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
482 TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.get(TcpMatchBuilder.class);
484 if (tcpMatchBuilder == null) {
485 tcpMatchBuilder = new TcpMatchBuilder();
486 mapMatchBuilder.put(TcpMatchBuilder.class, tcpMatchBuilder);
489 tcpMatchBuilder.setTcpSourcePort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0])));
493 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
494 TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.remove(TcpMatchBuilder.class);
496 if (tcpMatchBuilder != null) {
497 matchBuilderInOut.setLayer4Match(tcpMatchBuilder.build());
504 protected Class<? extends MatchField> getMatchType() {
509 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
510 UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.get(UdpMatchBuilder.class);
512 if (udpMatchBuilder == null) {
513 udpMatchBuilder = new UdpMatchBuilder();
514 mapMatchBuilder.put(UdpMatchBuilder.class, udpMatchBuilder);
517 udpMatchBuilder.setUdpDestinationPort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0])));
521 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
522 UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.remove(UdpMatchBuilder.class);
524 if (udpMatchBuilder != null) {
525 matchBuilderInOut.setLayer4Match(udpMatchBuilder.build());
532 protected Class<? extends MatchField> getMatchType() {
537 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
538 UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.get(UdpMatchBuilder.class);
540 if (udpMatchBuilder == null) {
541 udpMatchBuilder = new UdpMatchBuilder();
542 mapMatchBuilder.put(UdpMatchBuilder.class, udpMatchBuilder);
545 udpMatchBuilder.setUdpSourcePort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0])));
549 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
550 UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.remove(UdpMatchBuilder.class);
552 if (udpMatchBuilder != null) {
553 matchBuilderInOut.setLayer4Match(udpMatchBuilder.build());
559 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
560 TunnelBuilder tunnelBuilder = (TunnelBuilder) mapMatchBuilder.get(TunnelBuilder.class);
562 if (tunnelBuilder == null) {
563 tunnelBuilder = new TunnelBuilder();
564 mapMatchBuilder.put(TunnelBuilder.class, tunnelBuilder);
567 BigInteger[] tunnelIdValues = matchInfo.getBigMatchValues();
568 tunnelBuilder.setTunnelId(tunnelIdValues[0]);
569 if(tunnelIdValues.length > 1){
570 tunnelBuilder.setTunnelMask(tunnelIdValues[1]);
572 tunnelBuilder.build();
576 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
577 TunnelBuilder tunnelBuilder = (TunnelBuilder) mapMatchBuilder.remove(TunnelBuilder.class);
579 if (tunnelBuilder != null) {
580 matchBuilderInOut.setTunnel(tunnelBuilder.build());
585 protected Class<? extends MatchField> getMatchType() {
586 return TunnelId.class;
593 protected Class<? extends MatchField> getMatchType() {
594 return MatchField.class;
598 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
599 NxmNxRegBuilder regdataBuilder = (NxmNxRegBuilder) mapMatchBuilder.get(NxmNxRegBuilder.class);
600 if (regdataBuilder == null) {
601 regdataBuilder = new NxmNxRegBuilder();
602 mapMatchBuilder.put(NxmNxRegBuilder.class, regdataBuilder);
604 long[] metadataValues = matchInfo.getMatchValues();
605 regdataBuilder.setValue(metadataValues[0]).build();
606 ArrayList<ExtensionList> extensions = new ArrayList<>();
607 NxAugMatchNodesNodeTableFlow am = new NxAugMatchNodesNodeTableFlowBuilder().setNxmNxReg(new NxmNxRegBuilder().setReg(NxmNxReg1.class).setValue(metadataValues[0]).build()).build();
608 extensions.add(new ExtensionListBuilder().setExtensionKey(NxmNxReg1Key.class).setExtension(new ExtensionBuilder().addAugmentation(NxAugMatchNodesNodeTableFlow.class, am).build()).build());
609 GeneralAugMatchNodesNodeTableFlow m = new GeneralAugMatchNodesNodeTableFlowBuilder().setExtensionList(extensions).build();
613 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
614 List<ExtensionList> extensions = new ArrayList<>();
615 long[] matchvalues = matchInfo.getMatchValues();
616 NxAugMatchNodesNodeTableFlow am = new NxAugMatchNodesNodeTableFlowBuilder().setNxmNxReg(new NxmNxRegBuilder().setReg(NxmNxReg1.class).setValue(matchvalues[0]).build()).build();
617 extensions.add(new ExtensionListBuilder().setExtensionKey(NxmNxReg1Key.class).setExtension(new ExtensionBuilder().addAugmentation(NxAugMatchNodesNodeTableFlow.class, am).build()).build());
618 GeneralAugMatchNodesNodeTableFlow m = new GeneralAugMatchNodesNodeTableFlowBuilder().setExtensionList(extensions).build();
619 matchBuilderInOut.addAugmentation(GeneralAugMatchNodesNodeTableFlow.class, m);
626 protected Class<? extends MatchField> getMatchType() {
627 return VlanVid.class;
631 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
632 VlanMatchBuilder vlanMatchBuilder = (VlanMatchBuilder) mapMatchBuilder.get(VlanMatchBuilder.class);
634 if (vlanMatchBuilder == null) {
635 vlanMatchBuilder = new VlanMatchBuilder();
636 mapMatchBuilder.put(VlanMatchBuilder.class, vlanMatchBuilder);
639 vlanMatchBuilder.setVlanId(new VlanIdBuilder()
640 .setVlanId(new VlanId(Integer.valueOf((int) matchInfo.getMatchValues()[0])))
641 .setVlanIdPresent(((int) matchInfo.getMatchValues()[0] == 0) ? Boolean.FALSE : Boolean.TRUE)
646 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
647 VlanMatchBuilder vlanMatchBuilder = (VlanMatchBuilder) mapMatchBuilder.remove(VlanMatchBuilder.class);
649 if (vlanMatchBuilder != null) {
650 matchBuilderInOut.setVlanMatch(vlanMatchBuilder.build());
656 public abstract void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder);
658 public abstract void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo,
659 Map<Class<?>, Object> mapMatchBuilder);
661 protected abstract Class<? extends MatchField> getMatchType();
663 protected boolean hasMatchFieldMask() {
664 // Override this to return true