2 * Copyright (c) 2013 Ericsson AB. All rights reserved.
6 package org.opendaylight.vpnservice.mdsalutil;
8 import java.math.BigInteger;
11 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
12 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
13 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.EtherType;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetDestinationBuilder;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetSourceBuilder;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetTypeBuilder;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatchBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.MetadataBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.ProtocolMatchFieldsBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.ArpMatchBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.TcpMatchBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatchBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.protocol.match.fields.PbbBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.vlan.match.fields.VlanIdBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpOp;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpSpa;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpTpa;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthDst;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthSrc;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthType;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.InPort;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.IpProto;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv4Dst;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv4Src;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.MatchField;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Metadata;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.MplsLabel;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.PbbIsid;
46 //import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.SalOpenflowBasicClass;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TcpDst;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TcpSrc;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.UdpDst;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.UdpSrc;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.VlanVid;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.set.field.match.SetFieldMatch;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.set.field.match.SetFieldMatchBuilder;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.TunnelBuilder;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TunnelId;
57 public enum MatchFieldType {
60 protected Class<? extends MatchField> getMatchType() {
65 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
66 EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder
67 .get(EthernetMatchBuilder.class);
69 if (ethernetMatchBuilder == null) {
70 ethernetMatchBuilder = new EthernetMatchBuilder();
71 mapMatchBuilder.put(EthernetMatchBuilder.class, ethernetMatchBuilder);
74 ethernetMatchBuilder.setEthernetSource(new EthernetSourceBuilder().setAddress(
75 new MacAddress(matchInfo.getStringMatchValues()[0])).build());
79 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
80 EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder
81 .remove(EthernetMatchBuilder.class);
83 if (ethernetMatchBuilder != null) {
84 matchBuilderInOut.setEthernetMatch(ethernetMatchBuilder.build());
91 protected Class<? extends MatchField> getMatchType() {
96 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
97 EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder
98 .get(EthernetMatchBuilder.class);
100 if (ethernetMatchBuilder == null) {
101 ethernetMatchBuilder = new EthernetMatchBuilder();
102 mapMatchBuilder.put(EthernetMatchBuilder.class, ethernetMatchBuilder);
105 ethernetMatchBuilder.setEthernetDestination(new EthernetDestinationBuilder().setAddress(
106 new MacAddress(matchInfo.getStringMatchValues()[0])).build());
110 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
111 EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder
112 .remove(EthernetMatchBuilder.class);
114 if (ethernetMatchBuilder != null) {
115 matchBuilderInOut.setEthernetMatch(ethernetMatchBuilder.build());
122 protected Class<? extends MatchField> getMatchType() {
123 return EthType.class;
127 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
128 EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder
129 .get(EthernetMatchBuilder.class);
131 if (ethernetMatchBuilder == null) {
132 ethernetMatchBuilder = new EthernetMatchBuilder();
133 mapMatchBuilder.put(EthernetMatchBuilder.class, ethernetMatchBuilder);
136 ethernetMatchBuilder.setEthernetType(new EthernetTypeBuilder().setType(
137 new EtherType(matchInfo.getMatchValues()[0])).build());
141 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
142 EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder
143 .remove(EthernetMatchBuilder.class);
145 if (ethernetMatchBuilder != null) {
146 matchBuilderInOut.setEthernetMatch(ethernetMatchBuilder.build());
153 protected Class<? extends MatchField> getMatchType() {
158 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
162 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
163 // NodeConnectorId format -> openflow:<dpnId>:<portId>
164 StringBuffer nodeConnectorId = new StringBuffer().append("openflow:").append(matchInfo.getMatchValues()[0])
165 .append(':').append(matchInfo.getMatchValues()[1]);
166 matchBuilderInOut.setInPort(new NodeConnectorId(nodeConnectorId.toString()));
172 protected Class<? extends MatchField> getMatchType() {
173 return IpProto.class;
177 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
178 IpMatchBuilder ipMatchBuilder = (IpMatchBuilder) mapMatchBuilder.get(IpMatchBuilder.class);
180 if (ipMatchBuilder == null) {
181 ipMatchBuilder = new IpMatchBuilder();
182 mapMatchBuilder.put(IpMatchBuilder.class, ipMatchBuilder);
185 ipMatchBuilder.setIpProtocol(Short.valueOf((short) matchInfo.getMatchValues()[0])).build();
189 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
190 IpMatchBuilder ipMatchBuilder = (IpMatchBuilder) mapMatchBuilder.remove(IpMatchBuilder.class);
192 if (ipMatchBuilder != null) {
193 matchBuilderInOut.setIpMatch(ipMatchBuilder.build());
200 protected Class<? extends MatchField> getMatchType() {
201 return Ipv4Dst.class;
205 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
206 Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.get(Ipv4MatchBuilder.class);
208 if (ipv4MatchBuilder == null) {
209 ipv4MatchBuilder = new Ipv4MatchBuilder();
210 mapMatchBuilder.put(Ipv4MatchBuilder.class, ipv4MatchBuilder);
213 long[] prefix = matchInfo.getMatchValues();
214 ipv4MatchBuilder.setIpv4Destination(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1]))).build();
218 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
219 Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.remove(Ipv4MatchBuilder.class);
221 if (ipv4MatchBuilder != null) {
222 matchBuilderInOut.setLayer3Match(ipv4MatchBuilder.build());
229 protected Class<? extends MatchField> getMatchType() {
230 return Ipv4Src.class;
234 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
235 Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.get(Ipv4MatchBuilder.class);
237 if (ipv4MatchBuilder == null) {
238 ipv4MatchBuilder = new Ipv4MatchBuilder();
239 mapMatchBuilder.put(Ipv4MatchBuilder.class, ipv4MatchBuilder);
242 long[] prefix = matchInfo.getMatchValues();
243 ipv4MatchBuilder.setIpv4Source(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1]))).build();
247 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
248 Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.remove(Ipv4MatchBuilder.class);
250 if (ipv4MatchBuilder != null) {
251 matchBuilderInOut.setLayer3Match(ipv4MatchBuilder.build());
258 protected Class<? extends MatchField> getMatchType() {
263 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
264 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.get(ArpMatchBuilder.class);
266 if (arpMatchBuilder == null) {
267 arpMatchBuilder = new ArpMatchBuilder();
268 mapMatchBuilder.put(ArpMatchBuilder.class, arpMatchBuilder);
271 arpMatchBuilder.setArpOp(Integer.valueOf((int) matchInfo.getMatchValues()[0]));
275 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
276 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.remove(ArpMatchBuilder.class);
278 if (arpMatchBuilder != null) {
279 matchBuilderInOut.setLayer3Match(arpMatchBuilder.build());
286 protected Class<? extends MatchField> getMatchType() {
291 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
292 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.get(ArpMatchBuilder.class);
294 if (arpMatchBuilder == null) {
295 arpMatchBuilder = new ArpMatchBuilder();
296 mapMatchBuilder.put(ArpMatchBuilder.class, arpMatchBuilder);
299 long[] prefix = matchInfo.getMatchValues();
300 arpMatchBuilder.setArpTargetTransportAddress(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1])));
304 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
305 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.remove(ArpMatchBuilder.class);
307 if (arpMatchBuilder != null) {
308 matchBuilderInOut.setLayer3Match(arpMatchBuilder.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 long[] prefix = matchInfo.getMatchValues();
329 arpMatchBuilder.setArpSourceTransportAddress(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1])));
333 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
334 ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.remove(ArpMatchBuilder.class);
336 if (arpMatchBuilder != null) {
337 matchBuilderInOut.setLayer3Match(arpMatchBuilder.build());
344 protected Class<? extends MatchField> getMatchType() {
345 return Metadata.class;
349 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
350 MetadataBuilder metadataBuilder = (MetadataBuilder) mapMatchBuilder.get(MetadataBuilder.class);
352 if (metadataBuilder == null) {
353 metadataBuilder = new MetadataBuilder();
354 mapMatchBuilder.put(MetadataBuilder.class, metadataBuilder);
357 BigInteger[] metadataValues = matchInfo.getBigMatchValues();
358 metadataBuilder.setMetadata(metadataValues[0]).setMetadataMask(metadataValues[1]).build();
362 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
363 MetadataBuilder metadataBuilder = (MetadataBuilder) mapMatchBuilder.remove(MetadataBuilder.class);
365 if (metadataBuilder != null) {
366 matchBuilderInOut.setMetadata(metadataBuilder.build());
373 protected Class<? extends MatchField> getMatchType() {
374 return MplsLabel.class;
378 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
379 ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder
380 .get(ProtocolMatchFieldsBuilder.class);
382 if (protocolMatchFieldsBuilder == null) {
383 protocolMatchFieldsBuilder = new ProtocolMatchFieldsBuilder();
384 mapMatchBuilder.put(ProtocolMatchFieldsBuilder.class, protocolMatchFieldsBuilder);
387 protocolMatchFieldsBuilder.setMplsLabel(Long.valueOf(matchInfo.getStringMatchValues()[0])).build();
391 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
392 ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder
393 .remove(ProtocolMatchFieldsBuilder.class);
395 if (protocolMatchFieldsBuilder != null) {
396 matchBuilderInOut.setProtocolMatchFields(protocolMatchFieldsBuilder.build());
403 protected Class<? extends MatchField> getMatchType() {
404 return PbbIsid.class;
408 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
409 ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder
410 .get(ProtocolMatchFieldsBuilder.class);
412 if (protocolMatchFieldsBuilder == null) {
413 protocolMatchFieldsBuilder = new ProtocolMatchFieldsBuilder();
414 mapMatchBuilder.put(ProtocolMatchFieldsBuilder.class, protocolMatchFieldsBuilder);
417 protocolMatchFieldsBuilder.setPbb(new PbbBuilder().setPbbIsid(Long.valueOf(matchInfo.getMatchValues()[0]))
422 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
423 ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder
424 .remove(ProtocolMatchFieldsBuilder.class);
426 if (protocolMatchFieldsBuilder != null) {
427 matchBuilderInOut.setProtocolMatchFields(protocolMatchFieldsBuilder.build());
434 protected Class<? extends MatchField> getMatchType() {
439 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
440 TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.get(TcpMatchBuilder.class);
442 if (tcpMatchBuilder == null) {
443 tcpMatchBuilder = new TcpMatchBuilder();
444 mapMatchBuilder.put(TcpMatchBuilder.class, tcpMatchBuilder);
447 tcpMatchBuilder.setTcpDestinationPort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0])));
451 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
452 TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.remove(TcpMatchBuilder.class);
454 if (tcpMatchBuilder != null) {
455 matchBuilderInOut.setLayer4Match(tcpMatchBuilder.build());
462 protected Class<? extends MatchField> getMatchType() {
467 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
468 TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.get(TcpMatchBuilder.class);
470 if (tcpMatchBuilder == null) {
471 tcpMatchBuilder = new TcpMatchBuilder();
472 mapMatchBuilder.put(TcpMatchBuilder.class, tcpMatchBuilder);
475 tcpMatchBuilder.setTcpSourcePort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0])));
479 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
480 TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.remove(TcpMatchBuilder.class);
482 if (tcpMatchBuilder != null) {
483 matchBuilderInOut.setLayer4Match(tcpMatchBuilder.build());
490 protected Class<? extends MatchField> getMatchType() {
495 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
496 UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.get(UdpMatchBuilder.class);
498 if (udpMatchBuilder == null) {
499 udpMatchBuilder = new UdpMatchBuilder();
500 mapMatchBuilder.put(UdpMatchBuilder.class, udpMatchBuilder);
503 udpMatchBuilder.setUdpDestinationPort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0])));
507 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
508 UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.remove(UdpMatchBuilder.class);
510 if (udpMatchBuilder != null) {
511 matchBuilderInOut.setLayer4Match(udpMatchBuilder.build());
518 protected Class<? extends MatchField> getMatchType() {
523 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
524 UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.get(UdpMatchBuilder.class);
526 if (udpMatchBuilder == null) {
527 udpMatchBuilder = new UdpMatchBuilder();
528 mapMatchBuilder.put(UdpMatchBuilder.class, udpMatchBuilder);
531 udpMatchBuilder.setUdpSourcePort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0])));
535 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
536 UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.remove(UdpMatchBuilder.class);
538 if (udpMatchBuilder != null) {
539 matchBuilderInOut.setLayer4Match(udpMatchBuilder.build());
545 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
546 TunnelBuilder tunnelBuilder = (TunnelBuilder) mapMatchBuilder.get(TunnelBuilder.class);
548 if (tunnelBuilder == null) {
549 tunnelBuilder = new TunnelBuilder();
550 mapMatchBuilder.put(TunnelBuilder.class, tunnelBuilder);
553 BigInteger[] tunnelIdValues = matchInfo.getBigMatchValues();
554 tunnelBuilder.setTunnelId(tunnelIdValues[0]).setTunnelMask(tunnelIdValues[1]).build();
558 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
559 TunnelBuilder tunnelBuilder = (TunnelBuilder) mapMatchBuilder.remove(TunnelBuilder.class);
561 if (tunnelBuilder != null) {
562 matchBuilderInOut.setTunnel(tunnelBuilder.build());
567 protected Class<? extends MatchField> getMatchType() {
568 return TunnelId.class;
575 protected Class<? extends MatchField> getMatchType() {
576 return VlanVid.class;
580 public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
581 VlanMatchBuilder vlanMatchBuilder = (VlanMatchBuilder) mapMatchBuilder.get(VlanMatchBuilder.class);
583 if (vlanMatchBuilder == null) {
584 vlanMatchBuilder = new VlanMatchBuilder();
585 mapMatchBuilder.put(VlanMatchBuilder.class, vlanMatchBuilder);
588 vlanMatchBuilder.setVlanId(new VlanIdBuilder()
589 .setVlanId(new VlanId(Integer.valueOf((int) matchInfo.getMatchValues()[0])))
590 .setVlanIdPresent(((int) matchInfo.getMatchValues()[0] == 0) ? Boolean.FALSE : Boolean.TRUE)
595 public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
596 VlanMatchBuilder vlanMatchBuilder = (VlanMatchBuilder) mapMatchBuilder.remove(VlanMatchBuilder.class);
598 if (vlanMatchBuilder != null) {
599 matchBuilderInOut.setVlanMatch(vlanMatchBuilder.build());
605 public SetFieldMatch buildSetFieldMatch(XtensionType xtype) {
606 if (xtype == null || xtype.getMatchMaskType() ==
607 SalOfaMatchMaskType.OFPMMNOMASK) {
609 SetFieldMatchBuilder().setHasMask(false).setMatchType(getMatchType())
610 .setSalOxmClass(SalOpenflowBasicClass.class).build();
613 return new SetFieldMatchBuilder()
615 .setMatchType(getMatchType())
616 .setSalOxmClass(SalOpenflowBasicClass.class)
618 ExperimenterSetFieldMatch.class,
620 ExperimenterSetFieldMatchBuilder().setMatchMaskType(xtype.getMatchMaskType())
621 .setTlvMatchMask(xtype.getByteBuf()).build()).build();
627 // New one for ODL without the Extension --CHECK
629 public SetFieldMatch buildSetFieldMatch() {
631 return new SetFieldMatchBuilder().setHasMask(false).setMatchType(getMatchType())
632 .setSalOxmClass(SalOpenflowBasicClass.class).build();
639 public abstract void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder);
641 public abstract void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo,
642 Map<Class<?>, Object> mapMatchBuilder);
644 protected abstract Class<? extends MatchField> getMatchType();
646 protected boolean hasMatchFieldMask() {
647 // Override this to return true