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() {
262 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
263 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.get(ArpMatchBuilder.class);
265 if (arpMatchBuilder == null) {
266 arpMatchBuilder = new ArpMatchBuilder();
267 mapMatchBuilder.put(ArpMatchBuilder.class, arpMatchBuilder);
270 arpMatchBuilder.setArpOp(Integer.valueOf((int) matchInfo.getMatchValues()[0]));
274 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
275 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.remove(ArpMatchBuilder.class);
277 if (arpMatchBuilder != null) {
278 matchBuilderInOut.setLayer3Match(arpMatchBuilder.build());
285 protected Class<? extends MatchField> getMatchType() {
290 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
291 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.get(ArpMatchBuilder.class);
293 if (arpMatchBuilder == null) {
294 arpMatchBuilder = new ArpMatchBuilder();
295 mapMatchBuilder.put(ArpMatchBuilder.class, arpMatchBuilder);
298 long[] prefix = matchInfo.getMatchValues();
299 arpMatchBuilder.setArpTargetTransportAddress(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1])));
303 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
304 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.remove(ArpMatchBuilder.class);
306 if (arpMatchBuilder != null) {
307 matchBuilderInOut.setLayer3Match(arpMatchBuilder.build());
314 protected Class<? extends MatchField> getMatchType() {
319 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
320 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.get(ArpMatchBuilder.class);
322 if (arpMatchBuilder == null) {
323 arpMatchBuilder = new ArpMatchBuilder();
324 mapMatchBuilder.put(ArpMatchBuilder.class, arpMatchBuilder);
327 long[] prefix = matchInfo.getMatchValues();
328 arpMatchBuilder.setArpSourceTransportAddress(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1])));
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() {
344 return Metadata.class;
348 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
349 MetadataBuilder metadataBuilder = (MetadataBuilder) mapMatchBuilder.get(MetadataBuilder.class);
351 if (metadataBuilder == null) {
352 metadataBuilder = new MetadataBuilder();
353 mapMatchBuilder.put(MetadataBuilder.class, metadataBuilder);
356 BigInteger[] metadataValues = matchInfo.getBigMatchValues();
357 metadataBuilder.setMetadata(metadataValues[0]).setMetadataMask(metadataValues[1]).build();
361 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
362 MetadataBuilder metadataBuilder = (MetadataBuilder) mapMatchBuilder.remove(MetadataBuilder.class);
364 if (metadataBuilder != null) {
365 matchBuilderInOut.setMetadata(metadataBuilder.build());
372 protected Class<? extends MatchField> getMatchType() {
373 return MplsLabel.class;
377 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
378 ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder
379 .get(ProtocolMatchFieldsBuilder.class);
381 if (protocolMatchFieldsBuilder == null) {
382 protocolMatchFieldsBuilder = new ProtocolMatchFieldsBuilder();
383 mapMatchBuilder.put(ProtocolMatchFieldsBuilder.class, protocolMatchFieldsBuilder);
386 protocolMatchFieldsBuilder.setMplsLabel(Long.valueOf(matchInfo.getStringMatchValues()[0])).build();
390 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
391 ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder
392 .remove(ProtocolMatchFieldsBuilder.class);
394 if (protocolMatchFieldsBuilder != null) {
395 matchBuilderInOut.setProtocolMatchFields(protocolMatchFieldsBuilder.build());
402 protected Class<? extends MatchField> getMatchType() {
403 return PbbIsid.class;
407 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
408 ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder
409 .get(ProtocolMatchFieldsBuilder.class);
411 if (protocolMatchFieldsBuilder == null) {
412 protocolMatchFieldsBuilder = new ProtocolMatchFieldsBuilder();
413 mapMatchBuilder.put(ProtocolMatchFieldsBuilder.class, protocolMatchFieldsBuilder);
416 protocolMatchFieldsBuilder.setPbb(new PbbBuilder().setPbbIsid(Long.valueOf(matchInfo.getMatchValues()[0]))
421 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
422 ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder
423 .remove(ProtocolMatchFieldsBuilder.class);
425 if (protocolMatchFieldsBuilder != null) {
426 matchBuilderInOut.setProtocolMatchFields(protocolMatchFieldsBuilder.build());
433 protected Class<? extends MatchField> getMatchType() {
438 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
439 TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.get(TcpMatchBuilder.class);
441 if (tcpMatchBuilder == null) {
442 tcpMatchBuilder = new TcpMatchBuilder();
443 mapMatchBuilder.put(TcpMatchBuilder.class, tcpMatchBuilder);
446 tcpMatchBuilder.setTcpDestinationPort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0])));
450 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
451 TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.remove(TcpMatchBuilder.class);
453 if (tcpMatchBuilder != null) {
454 matchBuilderInOut.setLayer4Match(tcpMatchBuilder.build());
461 protected Class<? extends MatchField> getMatchType() {
466 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
467 TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.get(TcpMatchBuilder.class);
469 if (tcpMatchBuilder == null) {
470 tcpMatchBuilder = new TcpMatchBuilder();
471 mapMatchBuilder.put(TcpMatchBuilder.class, tcpMatchBuilder);
474 tcpMatchBuilder.setTcpSourcePort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0])));
478 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
479 TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.remove(TcpMatchBuilder.class);
481 if (tcpMatchBuilder != null) {
482 matchBuilderInOut.setLayer4Match(tcpMatchBuilder.build());
489 protected Class<? extends MatchField> getMatchType() {
494 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
495 UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.get(UdpMatchBuilder.class);
497 if (udpMatchBuilder == null) {
498 udpMatchBuilder = new UdpMatchBuilder();
499 mapMatchBuilder.put(UdpMatchBuilder.class, udpMatchBuilder);
502 udpMatchBuilder.setUdpDestinationPort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0])));
506 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
507 UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.remove(UdpMatchBuilder.class);
509 if (udpMatchBuilder != null) {
510 matchBuilderInOut.setLayer4Match(udpMatchBuilder.build());
517 protected Class<? extends MatchField> getMatchType() {
522 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
523 UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.get(UdpMatchBuilder.class);
525 if (udpMatchBuilder == null) {
526 udpMatchBuilder = new UdpMatchBuilder();
527 mapMatchBuilder.put(UdpMatchBuilder.class, udpMatchBuilder);
530 udpMatchBuilder.setUdpSourcePort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0])));
534 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
535 UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.remove(UdpMatchBuilder.class);
537 if (udpMatchBuilder != null) {
538 matchBuilderInOut.setLayer4Match(udpMatchBuilder.build());
544 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
545 TunnelBuilder tunnelBuilder = (TunnelBuilder) mapMatchBuilder.get(TunnelBuilder.class);
547 if (tunnelBuilder == null) {
548 tunnelBuilder = new TunnelBuilder();
549 mapMatchBuilder.put(TunnelBuilder.class, tunnelBuilder);
552 BigInteger[] tunnelIdValues = matchInfo.getBigMatchValues();
553 tunnelBuilder.setTunnelId(tunnelIdValues[0]);
554 if(tunnelIdValues.length > 1){
555 tunnelBuilder.setTunnelMask(tunnelIdValues[1]);
557 tunnelBuilder.build();
561 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
562 TunnelBuilder tunnelBuilder = (TunnelBuilder) mapMatchBuilder.remove(TunnelBuilder.class);
564 if (tunnelBuilder != null) {
565 matchBuilderInOut.setTunnel(tunnelBuilder.build());
570 protected Class<? extends MatchField> getMatchType() {
571 return TunnelId.class;
578 protected Class<? extends MatchField> getMatchType() {
579 return VlanVid.class;
583 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
584 VlanMatchBuilder vlanMatchBuilder = (VlanMatchBuilder) mapMatchBuilder.get(VlanMatchBuilder.class);
586 if (vlanMatchBuilder == null) {
587 vlanMatchBuilder = new VlanMatchBuilder();
588 mapMatchBuilder.put(VlanMatchBuilder.class, vlanMatchBuilder);
591 vlanMatchBuilder.setVlanId(new VlanIdBuilder()
592 .setVlanId(new VlanId(Integer.valueOf((int) matchInfo.getMatchValues()[0])))
593 .setVlanIdPresent(((int) matchInfo.getMatchValues()[0] == 0) ? Boolean.FALSE : Boolean.TRUE)
598 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
599 VlanMatchBuilder vlanMatchBuilder = (VlanMatchBuilder) mapMatchBuilder.remove(VlanMatchBuilder.class);
601 if (vlanMatchBuilder != null) {
602 matchBuilderInOut.setVlanMatch(vlanMatchBuilder.build());
608 public abstract void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder);
610 public abstract void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo,
611 Map<Class<?>, Object> mapMatchBuilder);
613 protected abstract Class<? extends MatchField> getMatchType();
615 protected boolean hasMatchFieldMask() {
616 // Override this to return true