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;
13 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
14 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
15 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.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.ethernet.match.fields.EthernetDestinationBuilder;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetSourceBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetTypeBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatchBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.MetadataBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.ProtocolMatchFieldsBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.ArpMatchBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.TcpMatchBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatchBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.protocol.match.fields.PbbBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.vlan.match.fields.VlanIdBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpOp;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpSpa;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpTpa;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthDst;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthSrc;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthType;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.InPort;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.IpProto;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv4Dst;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv4Src;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.MatchField;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Metadata;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.MplsLabel;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.PbbIsid;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TcpDst;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TcpSrc;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.UdpDst;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.UdpSrc;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.VlanVid;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.TunnelBuilder;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TunnelId;
56 public enum MatchFieldType {
59 protected Class<? extends MatchField> getMatchType() {
64 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
65 EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder
66 .get(EthernetMatchBuilder.class);
68 if (ethernetMatchBuilder == null) {
69 ethernetMatchBuilder = new EthernetMatchBuilder();
70 mapMatchBuilder.put(EthernetMatchBuilder.class, ethernetMatchBuilder);
73 ethernetMatchBuilder.setEthernetSource(new EthernetSourceBuilder().setAddress(
74 new MacAddress(matchInfo.getStringMatchValues()[0])).build());
78 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
79 EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder
80 .remove(EthernetMatchBuilder.class);
82 if (ethernetMatchBuilder != null) {
83 matchBuilderInOut.setEthernetMatch(ethernetMatchBuilder.build());
90 protected Class<? extends MatchField> getMatchType() {
95 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
96 EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder
97 .get(EthernetMatchBuilder.class);
99 if (ethernetMatchBuilder == null) {
100 ethernetMatchBuilder = new EthernetMatchBuilder();
101 mapMatchBuilder.put(EthernetMatchBuilder.class, ethernetMatchBuilder);
104 ethernetMatchBuilder.setEthernetDestination(new EthernetDestinationBuilder().setAddress(
105 new MacAddress(matchInfo.getStringMatchValues()[0])).build());
109 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
110 EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder
111 .remove(EthernetMatchBuilder.class);
113 if (ethernetMatchBuilder != null) {
114 matchBuilderInOut.setEthernetMatch(ethernetMatchBuilder.build());
121 protected Class<? extends MatchField> getMatchType() {
122 return EthType.class;
126 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
127 EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder
128 .get(EthernetMatchBuilder.class);
130 if (ethernetMatchBuilder == null) {
131 ethernetMatchBuilder = new EthernetMatchBuilder();
132 mapMatchBuilder.put(EthernetMatchBuilder.class, ethernetMatchBuilder);
135 ethernetMatchBuilder.setEthernetType(new EthernetTypeBuilder().setType(
136 new EtherType(matchInfo.getMatchValues()[0])).build());
140 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
141 EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder
142 .remove(EthernetMatchBuilder.class);
144 if (ethernetMatchBuilder != null) {
145 matchBuilderInOut.setEthernetMatch(ethernetMatchBuilder.build());
152 protected Class<? extends MatchField> getMatchType() {
157 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
161 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
163 StringBuffer nodeConnectorId = new StringBuffer().append("openflow:").append(matchInfo.getBigMatchValues()[0])
164 .append(':').append(matchInfo.getBigMatchValues()[1]);
165 matchBuilderInOut.setInPort(new NodeConnectorId(nodeConnectorId.toString()));
171 protected Class<? extends MatchField> getMatchType() {
172 return IpProto.class;
176 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
177 IpMatchBuilder ipMatchBuilder = (IpMatchBuilder) mapMatchBuilder.get(IpMatchBuilder.class);
179 if (ipMatchBuilder == null) {
180 ipMatchBuilder = new IpMatchBuilder();
181 mapMatchBuilder.put(IpMatchBuilder.class, ipMatchBuilder);
184 ipMatchBuilder.setIpProtocol(Short.valueOf((short) matchInfo.getMatchValues()[0])).build();
188 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
189 IpMatchBuilder ipMatchBuilder = (IpMatchBuilder) mapMatchBuilder.remove(IpMatchBuilder.class);
191 if (ipMatchBuilder != null) {
192 matchBuilderInOut.setIpMatch(ipMatchBuilder.build());
199 protected Class<? extends MatchField> getMatchType() {
200 return Ipv4Dst.class;
204 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
205 Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.get(Ipv4MatchBuilder.class);
207 if (ipv4MatchBuilder == null) {
208 ipv4MatchBuilder = new Ipv4MatchBuilder();
209 mapMatchBuilder.put(Ipv4MatchBuilder.class, ipv4MatchBuilder);
212 long[] prefix = matchInfo.getMatchValues();
213 ipv4MatchBuilder.setIpv4Destination(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1]))).build();
217 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
218 Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.remove(Ipv4MatchBuilder.class);
220 if (ipv4MatchBuilder != null) {
221 matchBuilderInOut.setLayer3Match(ipv4MatchBuilder.build());
228 protected Class<? extends MatchField> getMatchType() {
229 return Ipv4Src.class;
233 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
234 Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.get(Ipv4MatchBuilder.class);
236 if (ipv4MatchBuilder == null) {
237 ipv4MatchBuilder = new Ipv4MatchBuilder();
238 mapMatchBuilder.put(Ipv4MatchBuilder.class, ipv4MatchBuilder);
241 long[] prefix = matchInfo.getMatchValues();
242 ipv4MatchBuilder.setIpv4Source(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1]))).build();
246 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
247 Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.remove(Ipv4MatchBuilder.class);
249 if (ipv4MatchBuilder != null) {
250 matchBuilderInOut.setLayer3Match(ipv4MatchBuilder.build());
257 protected Class<? extends MatchField> getMatchType() {
258 return Ipv4Dst.class;
262 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
263 Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.get(Ipv4MatchBuilder.class);
265 if (ipv4MatchBuilder == null) {
266 ipv4MatchBuilder = new Ipv4MatchBuilder();
267 mapMatchBuilder.put(Ipv4MatchBuilder.class, ipv4MatchBuilder);
270 String[] prefix = matchInfo.getStringMatchValues();
271 ipv4MatchBuilder.setIpv4Destination(new Ipv4Prefix(prefix[0] + "/" + prefix[1])).build();
275 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
276 Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.remove(Ipv4MatchBuilder.class);
278 if (ipv4MatchBuilder != null) {
279 matchBuilderInOut.setLayer3Match(ipv4MatchBuilder.build());
286 protected Class<? extends MatchField> getMatchType() {
287 return Ipv4Src.class;
291 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
292 Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.get(Ipv4MatchBuilder.class);
294 if (ipv4MatchBuilder == null) {
295 ipv4MatchBuilder = new Ipv4MatchBuilder();
296 mapMatchBuilder.put(Ipv4MatchBuilder.class, ipv4MatchBuilder);
299 String[] prefix = matchInfo.getStringMatchValues();
300 ipv4MatchBuilder.setIpv4Source(new Ipv4Prefix(prefix[0] + "/" + prefix[1])).build();
304 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
305 Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.remove(Ipv4MatchBuilder.class);
307 if (ipv4MatchBuilder != null) {
308 matchBuilderInOut.setLayer3Match(ipv4MatchBuilder.build());
315 protected Class<? extends MatchField> getMatchType() {
320 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
321 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.get(ArpMatchBuilder.class);
323 if (arpMatchBuilder == null) {
324 arpMatchBuilder = new ArpMatchBuilder();
325 mapMatchBuilder.put(ArpMatchBuilder.class, arpMatchBuilder);
328 arpMatchBuilder.setArpOp(Integer.valueOf((int) matchInfo.getMatchValues()[0]));
332 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
333 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.remove(ArpMatchBuilder.class);
335 if (arpMatchBuilder != null) {
336 matchBuilderInOut.setLayer3Match(arpMatchBuilder.build());
343 protected Class<? extends MatchField> getMatchType() {
348 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
349 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.get(ArpMatchBuilder.class);
351 if (arpMatchBuilder == null) {
352 arpMatchBuilder = new ArpMatchBuilder();
353 mapMatchBuilder.put(ArpMatchBuilder.class, arpMatchBuilder);
356 long[] prefix = matchInfo.getMatchValues();
357 arpMatchBuilder.setArpTargetTransportAddress(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1])));
361 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
362 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.remove(ArpMatchBuilder.class);
364 if (arpMatchBuilder != null) {
365 matchBuilderInOut.setLayer3Match(arpMatchBuilder.build());
372 protected Class<? extends MatchField> getMatchType() {
377 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
378 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.get(ArpMatchBuilder.class);
380 if (arpMatchBuilder == null) {
381 arpMatchBuilder = new ArpMatchBuilder();
382 mapMatchBuilder.put(ArpMatchBuilder.class, arpMatchBuilder);
385 long[] prefix = matchInfo.getMatchValues();
386 arpMatchBuilder.setArpSourceTransportAddress(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1])));
390 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
391 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.remove(ArpMatchBuilder.class);
393 if (arpMatchBuilder != null) {
394 matchBuilderInOut.setLayer3Match(arpMatchBuilder.build());
401 protected Class<? extends MatchField> getMatchType() {
402 return Metadata.class;
406 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
407 MetadataBuilder metadataBuilder = (MetadataBuilder) mapMatchBuilder.get(MetadataBuilder.class);
409 if (metadataBuilder == null) {
410 metadataBuilder = new MetadataBuilder();
411 mapMatchBuilder.put(MetadataBuilder.class, metadataBuilder);
414 BigInteger[] metadataValues = matchInfo.getBigMatchValues();
415 metadataBuilder.setMetadata(metadataValues[0]).setMetadataMask(metadataValues[1]).build();
419 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
420 MetadataBuilder metadataBuilder = (MetadataBuilder) mapMatchBuilder.remove(MetadataBuilder.class);
422 if (metadataBuilder != null) {
423 matchBuilderInOut.setMetadata(metadataBuilder.build());
430 protected Class<? extends MatchField> getMatchType() {
431 return MplsLabel.class;
435 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
436 ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder
437 .get(ProtocolMatchFieldsBuilder.class);
439 if (protocolMatchFieldsBuilder == null) {
440 protocolMatchFieldsBuilder = new ProtocolMatchFieldsBuilder();
441 mapMatchBuilder.put(ProtocolMatchFieldsBuilder.class, protocolMatchFieldsBuilder);
444 protocolMatchFieldsBuilder.setMplsLabel(Long.valueOf(matchInfo.getStringMatchValues()[0])).build();
448 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
449 ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder
450 .remove(ProtocolMatchFieldsBuilder.class);
452 if (protocolMatchFieldsBuilder != null) {
453 matchBuilderInOut.setProtocolMatchFields(protocolMatchFieldsBuilder.build());
460 protected Class<? extends MatchField> getMatchType() {
461 return PbbIsid.class;
465 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
466 ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder
467 .get(ProtocolMatchFieldsBuilder.class);
469 if (protocolMatchFieldsBuilder == null) {
470 protocolMatchFieldsBuilder = new ProtocolMatchFieldsBuilder();
471 mapMatchBuilder.put(ProtocolMatchFieldsBuilder.class, protocolMatchFieldsBuilder);
474 protocolMatchFieldsBuilder.setPbb(new PbbBuilder().setPbbIsid(Long.valueOf(matchInfo.getMatchValues()[0]))
479 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
480 ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder
481 .remove(ProtocolMatchFieldsBuilder.class);
483 if (protocolMatchFieldsBuilder != null) {
484 matchBuilderInOut.setProtocolMatchFields(protocolMatchFieldsBuilder.build());
491 protected Class<? extends MatchField> getMatchType() {
496 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
497 TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.get(TcpMatchBuilder.class);
499 if (tcpMatchBuilder == null) {
500 tcpMatchBuilder = new TcpMatchBuilder();
501 mapMatchBuilder.put(TcpMatchBuilder.class, tcpMatchBuilder);
504 tcpMatchBuilder.setTcpDestinationPort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0])));
508 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
509 TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.remove(TcpMatchBuilder.class);
511 if (tcpMatchBuilder != null) {
512 matchBuilderInOut.setLayer4Match(tcpMatchBuilder.build());
519 protected Class<? extends MatchField> getMatchType() {
524 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
525 TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.get(TcpMatchBuilder.class);
527 if (tcpMatchBuilder == null) {
528 tcpMatchBuilder = new TcpMatchBuilder();
529 mapMatchBuilder.put(TcpMatchBuilder.class, tcpMatchBuilder);
532 tcpMatchBuilder.setTcpSourcePort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0])));
536 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
537 TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.remove(TcpMatchBuilder.class);
539 if (tcpMatchBuilder != null) {
540 matchBuilderInOut.setLayer4Match(tcpMatchBuilder.build());
547 protected Class<? extends MatchField> getMatchType() {
552 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
553 UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.get(UdpMatchBuilder.class);
555 if (udpMatchBuilder == null) {
556 udpMatchBuilder = new UdpMatchBuilder();
557 mapMatchBuilder.put(UdpMatchBuilder.class, udpMatchBuilder);
560 udpMatchBuilder.setUdpDestinationPort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0])));
564 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
565 UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.remove(UdpMatchBuilder.class);
567 if (udpMatchBuilder != null) {
568 matchBuilderInOut.setLayer4Match(udpMatchBuilder.build());
575 protected Class<? extends MatchField> getMatchType() {
580 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
581 UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.get(UdpMatchBuilder.class);
583 if (udpMatchBuilder == null) {
584 udpMatchBuilder = new UdpMatchBuilder();
585 mapMatchBuilder.put(UdpMatchBuilder.class, udpMatchBuilder);
588 udpMatchBuilder.setUdpSourcePort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0])));
592 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
593 UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.remove(UdpMatchBuilder.class);
595 if (udpMatchBuilder != null) {
596 matchBuilderInOut.setLayer4Match(udpMatchBuilder.build());
602 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
603 TunnelBuilder tunnelBuilder = (TunnelBuilder) mapMatchBuilder.get(TunnelBuilder.class);
605 if (tunnelBuilder == null) {
606 tunnelBuilder = new TunnelBuilder();
607 mapMatchBuilder.put(TunnelBuilder.class, tunnelBuilder);
610 BigInteger[] tunnelIdValues = matchInfo.getBigMatchValues();
611 tunnelBuilder.setTunnelId(tunnelIdValues[0]);
612 if(tunnelIdValues.length > 1){
613 tunnelBuilder.setTunnelMask(tunnelIdValues[1]);
615 tunnelBuilder.build();
619 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
620 TunnelBuilder tunnelBuilder = (TunnelBuilder) mapMatchBuilder.remove(TunnelBuilder.class);
622 if (tunnelBuilder != null) {
623 matchBuilderInOut.setTunnel(tunnelBuilder.build());
628 protected Class<? extends MatchField> getMatchType() {
629 return TunnelId.class;
636 protected Class<? extends MatchField> getMatchType() {
637 return VlanVid.class;
641 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
642 VlanMatchBuilder vlanMatchBuilder = (VlanMatchBuilder) mapMatchBuilder.get(VlanMatchBuilder.class);
644 if (vlanMatchBuilder == null) {
645 vlanMatchBuilder = new VlanMatchBuilder();
646 mapMatchBuilder.put(VlanMatchBuilder.class, vlanMatchBuilder);
649 vlanMatchBuilder.setVlanId(new VlanIdBuilder()
650 .setVlanId(new VlanId(Integer.valueOf((int) matchInfo.getMatchValues()[0])))
651 .setVlanIdPresent(((int) matchInfo.getMatchValues()[0] == 0) ? Boolean.FALSE : Boolean.TRUE)
656 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
657 VlanMatchBuilder vlanMatchBuilder = (VlanMatchBuilder) mapMatchBuilder.remove(VlanMatchBuilder.class);
659 if (vlanMatchBuilder != null) {
660 matchBuilderInOut.setVlanMatch(vlanMatchBuilder.build());
666 public abstract void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder);
668 public abstract void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo,
669 Map<Class<?>, Object> mapMatchBuilder);
671 protected abstract Class<? extends MatchField> getMatchType();
673 protected boolean hasMatchFieldMask() {
674 // Override this to return true