2 * Copyright (c) 2016 Ericsson India Global Services Pvt Ltd. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.genius.mdsalutil;
10 import java.math.BigInteger;
13 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
14 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
15 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.EtherType;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.arp.match.fields.ArpSourceHardwareAddressBuilder;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.arp.match.fields.ArpTargetHardwareAddressBuilder;
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.Icmpv4MatchBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv6MatchBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.MetadataBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.ProtocolMatchFieldsBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.TcpFlagMatchBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.ArpMatchBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.TcpMatchBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatchBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.protocol.match.fields.PbbBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.vlan.match.fields.VlanIdBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpOp;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpSpa;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpTpa;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpSha;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpTha;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthDst;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthSrc;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthType;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Icmpv4Type;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Icmpv6Type;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.InPort;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.IpProto;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv4Dst;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv4Src;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.MatchField;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Metadata;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.MplsLabel;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.PbbIsid;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TcpDst;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TcpFlag;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TcpSrc;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.UdpDst;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.UdpSrc;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.VlanVid;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.TunnelBuilder;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TunnelId;
66 public enum MatchFieldType {
69 protected Class<? extends MatchField> getMatchType() {
74 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
75 EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder
76 .get(EthernetMatchBuilder.class);
78 if (ethernetMatchBuilder == null) {
79 ethernetMatchBuilder = new EthernetMatchBuilder();
80 mapMatchBuilder.put(EthernetMatchBuilder.class, ethernetMatchBuilder);
83 ethernetMatchBuilder.setEthernetSource(new EthernetSourceBuilder().setAddress(
84 new MacAddress(matchInfo.getStringMatchValues()[0])).build());
88 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
89 EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder
90 .remove(EthernetMatchBuilder.class);
92 if (ethernetMatchBuilder != null) {
93 matchBuilderInOut.setEthernetMatch(ethernetMatchBuilder.build());
100 protected Class<? extends MatchField> getMatchType() {
105 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
106 EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder
107 .get(EthernetMatchBuilder.class);
109 if (ethernetMatchBuilder == null) {
110 ethernetMatchBuilder = new EthernetMatchBuilder();
111 mapMatchBuilder.put(EthernetMatchBuilder.class, ethernetMatchBuilder);
114 ethernetMatchBuilder.setEthernetDestination(new EthernetDestinationBuilder().setAddress(
115 new MacAddress(matchInfo.getStringMatchValues()[0])).build());
119 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
120 EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder
121 .remove(EthernetMatchBuilder.class);
123 if (ethernetMatchBuilder != null) {
124 matchBuilderInOut.setEthernetMatch(ethernetMatchBuilder.build());
131 protected Class<? extends MatchField> getMatchType() {
132 return EthType.class;
136 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
137 EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder
138 .get(EthernetMatchBuilder.class);
140 if (ethernetMatchBuilder == null) {
141 ethernetMatchBuilder = new EthernetMatchBuilder();
142 mapMatchBuilder.put(EthernetMatchBuilder.class, ethernetMatchBuilder);
145 ethernetMatchBuilder.setEthernetType(new EthernetTypeBuilder().setType(
146 new EtherType(matchInfo.getMatchValues()[0])).build());
150 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
151 EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder
152 .remove(EthernetMatchBuilder.class);
154 if (ethernetMatchBuilder != null) {
155 matchBuilderInOut.setEthernetMatch(ethernetMatchBuilder.build());
162 protected Class<? extends MatchField> getMatchType() {
167 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
171 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
173 StringBuffer nodeConnectorId = new StringBuffer().append("openflow:").append(matchInfo.getBigMatchValues()[0])
174 .append(':').append(matchInfo.getBigMatchValues()[1]);
175 matchBuilderInOut.setInPort(new NodeConnectorId(nodeConnectorId.toString()));
181 protected Class<? extends MatchField> getMatchType() {
182 return IpProto.class;
186 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
187 IpMatchBuilder ipMatchBuilder = (IpMatchBuilder) mapMatchBuilder.get(IpMatchBuilder.class);
189 if (ipMatchBuilder == null) {
190 ipMatchBuilder = new IpMatchBuilder();
191 mapMatchBuilder.put(IpMatchBuilder.class, ipMatchBuilder);
194 ipMatchBuilder.setIpProtocol(Short.valueOf((short) matchInfo.getMatchValues()[0])).build();
198 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
199 IpMatchBuilder ipMatchBuilder = (IpMatchBuilder) mapMatchBuilder.remove(IpMatchBuilder.class);
201 if (ipMatchBuilder != null) {
202 matchBuilderInOut.setIpMatch(ipMatchBuilder.build());
209 protected Class<? extends MatchField> getMatchType() {
210 return Ipv4Dst.class;
214 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
215 Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.get(Ipv4MatchBuilder.class);
217 if (ipv4MatchBuilder == null) {
218 ipv4MatchBuilder = new Ipv4MatchBuilder();
219 mapMatchBuilder.put(Ipv4MatchBuilder.class, ipv4MatchBuilder);
222 long[] prefix = matchInfo.getMatchValues();
223 ipv4MatchBuilder.setIpv4Destination(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1]))).build();
227 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
228 Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.remove(Ipv4MatchBuilder.class);
230 if (ipv4MatchBuilder != null) {
231 matchBuilderInOut.setLayer3Match(ipv4MatchBuilder.build());
238 protected Class<? extends MatchField> getMatchType() {
239 return Ipv4Src.class;
243 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
244 Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.get(Ipv4MatchBuilder.class);
246 if (ipv4MatchBuilder == null) {
247 ipv4MatchBuilder = new Ipv4MatchBuilder();
248 mapMatchBuilder.put(Ipv4MatchBuilder.class, ipv4MatchBuilder);
251 long[] prefix = matchInfo.getMatchValues();
252 ipv4MatchBuilder.setIpv4Source(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1]))).build();
256 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
257 Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.remove(Ipv4MatchBuilder.class);
259 if (ipv4MatchBuilder != null) {
260 matchBuilderInOut.setLayer3Match(ipv4MatchBuilder.build());
267 protected Class<? extends MatchField> getMatchType() {
268 return Ipv4Dst.class;
272 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
273 Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.get(Ipv4MatchBuilder.class);
275 if (ipv4MatchBuilder == null) {
276 ipv4MatchBuilder = new Ipv4MatchBuilder();
277 mapMatchBuilder.put(Ipv4MatchBuilder.class, ipv4MatchBuilder);
280 String[] prefix = matchInfo.getStringMatchValues();
281 ipv4MatchBuilder.setIpv4Destination(new Ipv4Prefix(prefix[0] + "/" + prefix[1])).build();
285 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
286 Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.remove(Ipv4MatchBuilder.class);
288 if (ipv4MatchBuilder != null) {
289 matchBuilderInOut.setLayer3Match(ipv4MatchBuilder.build());
296 protected Class<? extends MatchField> getMatchType() {
297 return Ipv4Src.class;
301 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
302 Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.get(Ipv4MatchBuilder.class);
304 if (ipv4MatchBuilder == null) {
305 ipv4MatchBuilder = new Ipv4MatchBuilder();
306 mapMatchBuilder.put(Ipv4MatchBuilder.class, ipv4MatchBuilder);
309 String[] prefix = matchInfo.getStringMatchValues();
310 ipv4MatchBuilder.setIpv4Source(new Ipv4Prefix(prefix[0] + "/" + prefix[1])).build();
314 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
315 Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.remove(Ipv4MatchBuilder.class);
317 if (ipv4MatchBuilder != null) {
318 matchBuilderInOut.setLayer3Match(ipv4MatchBuilder.build());
325 protected Class<? extends MatchField> getMatchType() {
330 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
331 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.get(ArpMatchBuilder.class);
333 if (arpMatchBuilder == null) {
334 arpMatchBuilder = new ArpMatchBuilder();
335 mapMatchBuilder.put(ArpMatchBuilder.class, arpMatchBuilder);
338 arpMatchBuilder.setArpOp(Integer.valueOf((int) matchInfo.getMatchValues()[0]));
342 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
343 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.remove(ArpMatchBuilder.class);
345 if (arpMatchBuilder != null) {
346 matchBuilderInOut.setLayer3Match(arpMatchBuilder.build());
353 protected Class<? extends MatchField> getMatchType() {
358 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
359 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.get(ArpMatchBuilder.class);
361 if (arpMatchBuilder == null) {
362 arpMatchBuilder = new ArpMatchBuilder();
363 mapMatchBuilder.put(ArpMatchBuilder.class, arpMatchBuilder);
366 long[] prefix = matchInfo.getMatchValues();
367 arpMatchBuilder.setArpTargetTransportAddress(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1])));
371 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
372 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.remove(ArpMatchBuilder.class);
374 if (arpMatchBuilder != null) {
375 matchBuilderInOut.setLayer3Match(arpMatchBuilder.build());
382 protected Class<? extends MatchField> getMatchType() {
387 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
388 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.get(ArpMatchBuilder.class);
390 if (arpMatchBuilder == null) {
391 arpMatchBuilder = new ArpMatchBuilder();
392 mapMatchBuilder.put(ArpMatchBuilder.class, arpMatchBuilder);
395 long[] prefix = matchInfo.getMatchValues();
396 arpMatchBuilder.setArpSourceTransportAddress(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1])));
400 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
401 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.remove(ArpMatchBuilder.class);
403 if (arpMatchBuilder != null) {
404 matchBuilderInOut.setLayer3Match(arpMatchBuilder.build());
411 protected Class<? extends MatchField> getMatchType() {
416 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
417 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.get(ArpMatchBuilder.class);
419 if (arpMatchBuilder == null) {
420 arpMatchBuilder = new ArpMatchBuilder();
421 mapMatchBuilder.put(ArpMatchBuilder.class, arpMatchBuilder);
424 ArpTargetHardwareAddressBuilder arpSrc = new ArpTargetHardwareAddressBuilder();
425 arpSrc.setAddress(new MacAddress(matchInfo.getStringMatchValues()[0]));
426 arpMatchBuilder.setArpTargetHardwareAddress(arpSrc.build());
430 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
431 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.remove(ArpMatchBuilder.class);
433 if (arpMatchBuilder != null) {
434 matchBuilderInOut.setLayer3Match(arpMatchBuilder.build());
441 protected Class<? extends MatchField> getMatchType() {
446 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
447 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.get(ArpMatchBuilder.class);
449 if (arpMatchBuilder == null) {
450 arpMatchBuilder = new ArpMatchBuilder();
451 mapMatchBuilder.put(ArpMatchBuilder.class, arpMatchBuilder);
454 ArpSourceHardwareAddressBuilder arpSrc = new ArpSourceHardwareAddressBuilder();
455 arpSrc.setAddress(new MacAddress(matchInfo.getStringMatchValues()[0]));
456 arpMatchBuilder.setArpSourceHardwareAddress(arpSrc.build());
460 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
461 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.remove(ArpMatchBuilder.class);
463 if (arpMatchBuilder != null) {
464 matchBuilderInOut.setLayer3Match(arpMatchBuilder.build());
471 protected Class<? extends MatchField> getMatchType() {
472 return Metadata.class;
476 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
477 MetadataBuilder metadataBuilder = (MetadataBuilder) mapMatchBuilder.get(MetadataBuilder.class);
479 if (metadataBuilder == null) {
480 metadataBuilder = new MetadataBuilder();
481 mapMatchBuilder.put(MetadataBuilder.class, metadataBuilder);
484 BigInteger[] metadataValues = matchInfo.getBigMatchValues();
485 metadataBuilder.setMetadata(metadataValues[0]).setMetadataMask(metadataValues[1]).build();
489 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
490 MetadataBuilder metadataBuilder = (MetadataBuilder) mapMatchBuilder.remove(MetadataBuilder.class);
492 if (metadataBuilder != null) {
493 matchBuilderInOut.setMetadata(metadataBuilder.build());
500 protected Class<? extends MatchField> getMatchType() {
501 return MplsLabel.class;
505 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
506 ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder
507 .get(ProtocolMatchFieldsBuilder.class);
509 if (protocolMatchFieldsBuilder == null) {
510 protocolMatchFieldsBuilder = new ProtocolMatchFieldsBuilder();
511 mapMatchBuilder.put(ProtocolMatchFieldsBuilder.class, protocolMatchFieldsBuilder);
514 protocolMatchFieldsBuilder.setMplsLabel(Long.valueOf(matchInfo.getStringMatchValues()[0])).build();
518 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
519 ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder
520 .remove(ProtocolMatchFieldsBuilder.class);
522 if (protocolMatchFieldsBuilder != null) {
523 matchBuilderInOut.setProtocolMatchFields(protocolMatchFieldsBuilder.build());
530 protected Class<? extends MatchField> getMatchType() {
531 return PbbIsid.class;
535 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
536 ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder
537 .get(ProtocolMatchFieldsBuilder.class);
539 if (protocolMatchFieldsBuilder == null) {
540 protocolMatchFieldsBuilder = new ProtocolMatchFieldsBuilder();
541 mapMatchBuilder.put(ProtocolMatchFieldsBuilder.class, protocolMatchFieldsBuilder);
544 protocolMatchFieldsBuilder.setPbb(new PbbBuilder().setPbbIsid(Long.valueOf(matchInfo.getMatchValues()[0]))
549 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
550 ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder
551 .remove(ProtocolMatchFieldsBuilder.class);
553 if (protocolMatchFieldsBuilder != null) {
554 matchBuilderInOut.setProtocolMatchFields(protocolMatchFieldsBuilder.build());
561 protected Class<? extends MatchField> getMatchType() {
566 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
567 TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.get(TcpMatchBuilder.class);
569 if (tcpMatchBuilder == null) {
570 tcpMatchBuilder = new TcpMatchBuilder();
571 mapMatchBuilder.put(TcpMatchBuilder.class, tcpMatchBuilder);
574 tcpMatchBuilder.setTcpDestinationPort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0])));
578 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
579 TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.remove(TcpMatchBuilder.class);
581 if (tcpMatchBuilder != null) {
582 matchBuilderInOut.setLayer4Match(tcpMatchBuilder.build());
589 protected Class<? extends MatchField> getMatchType() {
594 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
595 TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.get(TcpMatchBuilder.class);
597 if (tcpMatchBuilder == null) {
598 tcpMatchBuilder = new TcpMatchBuilder();
599 mapMatchBuilder.put(TcpMatchBuilder.class, tcpMatchBuilder);
602 tcpMatchBuilder.setTcpSourcePort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0])));
606 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
607 TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.remove(TcpMatchBuilder.class);
609 if (tcpMatchBuilder != null) {
610 matchBuilderInOut.setLayer4Match(tcpMatchBuilder.build());
617 protected Class<? extends MatchField> getMatchType() {
618 return TcpFlag.class;
622 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
623 TcpFlagMatchBuilder tcpFlagMatchBuilder = (TcpFlagMatchBuilder) mapMatchBuilder
624 .get(TcpFlagMatchBuilder.class);
625 if (matchInfo == null || matchInfo.getMatchValues() == null || matchInfo.getMatchValues().length == 0) {
629 if (tcpFlagMatchBuilder == null) {
630 tcpFlagMatchBuilder = new TcpFlagMatchBuilder();
631 mapMatchBuilder.put(TcpFlagMatchBuilder.class, tcpFlagMatchBuilder);
633 tcpFlagMatchBuilder.setTcpFlag((int) matchInfo.getMatchValues()[0]);
637 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>,
638 Object> mapMatchBuilder) {
639 TcpFlagMatchBuilder tcpFlagMatchBuilder = (TcpFlagMatchBuilder) mapMatchBuilder
640 .remove(TcpFlagMatchBuilder.class);
642 if (tcpFlagMatchBuilder != null) {
643 matchBuilderInOut.setTcpFlagMatch(tcpFlagMatchBuilder.build());
649 protected Class<? extends MatchField> getMatchType() {
654 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
655 UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.get(UdpMatchBuilder.class);
657 if (udpMatchBuilder == null) {
658 udpMatchBuilder = new UdpMatchBuilder();
659 mapMatchBuilder.put(UdpMatchBuilder.class, udpMatchBuilder);
662 udpMatchBuilder.setUdpDestinationPort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0])));
666 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
667 UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.remove(UdpMatchBuilder.class);
669 if (udpMatchBuilder != null) {
670 matchBuilderInOut.setLayer4Match(udpMatchBuilder.build());
677 protected Class<? extends MatchField> getMatchType() {
682 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
683 UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.get(UdpMatchBuilder.class);
685 if (udpMatchBuilder == null) {
686 udpMatchBuilder = new UdpMatchBuilder();
687 mapMatchBuilder.put(UdpMatchBuilder.class, udpMatchBuilder);
690 udpMatchBuilder.setUdpSourcePort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0])));
694 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
695 UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.remove(UdpMatchBuilder.class);
697 if (udpMatchBuilder != null) {
698 matchBuilderInOut.setLayer4Match(udpMatchBuilder.build());
704 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
705 TunnelBuilder tunnelBuilder = (TunnelBuilder) mapMatchBuilder.get(TunnelBuilder.class);
707 if (tunnelBuilder == null) {
708 tunnelBuilder = new TunnelBuilder();
709 mapMatchBuilder.put(TunnelBuilder.class, tunnelBuilder);
712 BigInteger[] tunnelIdValues = matchInfo.getBigMatchValues();
713 tunnelBuilder.setTunnelId(tunnelIdValues[0]);
714 if(tunnelIdValues.length > 1){
715 tunnelBuilder.setTunnelMask(tunnelIdValues[1]);
717 tunnelBuilder.build();
721 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
722 TunnelBuilder tunnelBuilder = (TunnelBuilder) mapMatchBuilder.remove(TunnelBuilder.class);
724 if (tunnelBuilder != null) {
725 matchBuilderInOut.setTunnel(tunnelBuilder.build());
730 protected Class<? extends MatchField> getMatchType() {
731 return TunnelId.class;
738 protected Class<? extends MatchField> getMatchType() {
739 return VlanVid.class;
743 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
744 VlanMatchBuilder vlanMatchBuilder = (VlanMatchBuilder) mapMatchBuilder.get(VlanMatchBuilder.class);
746 if (vlanMatchBuilder == null) {
747 vlanMatchBuilder = new VlanMatchBuilder();
748 mapMatchBuilder.put(VlanMatchBuilder.class, vlanMatchBuilder);
751 vlanMatchBuilder.setVlanId(new VlanIdBuilder()
752 .setVlanId(new VlanId(Integer.valueOf((int) matchInfo.getMatchValues()[0])))
753 .setVlanIdPresent(((int) matchInfo.getMatchValues()[0] == 0) ? Boolean.FALSE : Boolean.TRUE)
758 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
759 VlanMatchBuilder vlanMatchBuilder = (VlanMatchBuilder) mapMatchBuilder.remove(VlanMatchBuilder.class);
761 if (vlanMatchBuilder != null) {
762 matchBuilderInOut.setVlanMatch(vlanMatchBuilder.build());
769 protected Class<? extends MatchField> getMatchType() {
770 return Icmpv4Type.class;
774 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
775 Icmpv4MatchBuilder icmpv4MatchBuilder = (Icmpv4MatchBuilder) mapMatchBuilder.get(Icmpv4MatchBuilder.class);
777 if (icmpv4MatchBuilder == null) {
778 icmpv4MatchBuilder = new Icmpv4MatchBuilder();
779 mapMatchBuilder.put(Icmpv4MatchBuilder.class, icmpv4MatchBuilder);
782 icmpv4MatchBuilder.setIcmpv4Type((short) matchInfo.getMatchValues()[0]);
783 icmpv4MatchBuilder.setIcmpv4Code((short) matchInfo.getMatchValues()[1]);
787 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
788 Icmpv4MatchBuilder icmpv4MatchBuilder = (Icmpv4MatchBuilder) mapMatchBuilder.remove(Icmpv4MatchBuilder.class);
790 if (icmpv4MatchBuilder != null) {
791 matchBuilderInOut.setIcmpv4Match(icmpv4MatchBuilder.build());
798 protected Class<? extends MatchField> getMatchType() {
799 return Icmpv6Type.class;
803 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
804 Icmpv6MatchBuilder icmpv6MatchBuilder = (Icmpv6MatchBuilder) mapMatchBuilder.get(Icmpv6MatchBuilder.class);
806 if (icmpv6MatchBuilder == null) {
807 icmpv6MatchBuilder = new Icmpv6MatchBuilder();
808 mapMatchBuilder.put(Icmpv6MatchBuilder.class, icmpv6MatchBuilder);
811 icmpv6MatchBuilder.setIcmpv6Type((short) matchInfo.getMatchValues()[0]);
812 icmpv6MatchBuilder.setIcmpv6Code((short) matchInfo.getMatchValues()[1]);
816 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
817 Icmpv6MatchBuilder icmpv6MatchBuilder = (Icmpv6MatchBuilder) mapMatchBuilder.remove(VlanMatchBuilder.class);
819 if (icmpv6MatchBuilder != null) {
820 matchBuilderInOut.setIcmpv6Match(icmpv6MatchBuilder.build());
826 public abstract void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder);
828 public abstract void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo,
829 Map<Class<?>, Object> mapMatchBuilder);
831 protected abstract Class<? extends MatchField> getMatchType();
833 protected boolean hasMatchFieldMask() {
834 // Override this to return true