X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=mdsalutil%2Fmdsalutil-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fvpnservice%2Fmdsalutil%2FMatchFieldType.java;h=57a7f38d048d7e11b8fdc8d64fc6b24c6acca392;hb=d881f3df8fcf72d3a46d31947d4cca4ccbc6d275;hp=f38acf70f89fec17f55bca292a4873ffc873d4c2;hpb=2bfbbe0cf9942ff975dc82fc298c603fd9cef6a6;p=vpnservice.git diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/MatchFieldType.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/MatchFieldType.java index f38acf70..57a7f38d 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/MatchFieldType.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/MatchFieldType.java @@ -1,7 +1,9 @@ /* - * Copyright (c) 2013 Ericsson AB. All rights reserved. - * + * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.vpnservice.mdsalutil; @@ -55,596 +57,566 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TunnelId; public enum MatchFieldType { - eth_src { - @Override - protected Class getMatchType() { - return EthSrc.class; - } - - @Override - public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder - .get(EthernetMatchBuilder.class); - - if (ethernetMatchBuilder == null) { - ethernetMatchBuilder = new EthernetMatchBuilder(); - mapMatchBuilder.put(EthernetMatchBuilder.class, ethernetMatchBuilder); - } - - ethernetMatchBuilder.setEthernetSource(new EthernetSourceBuilder().setAddress( - new MacAddress(matchInfo.getStringMatchValues()[0])).build()); - } - - @Override - public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder - .remove(EthernetMatchBuilder.class); - - if (ethernetMatchBuilder != null) { - matchBuilderInOut.setEthernetMatch(ethernetMatchBuilder.build()); - } - } - }, - - eth_dst { - @Override - protected Class getMatchType() { - return EthDst.class; - } - - @Override - public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder - .get(EthernetMatchBuilder.class); - - if (ethernetMatchBuilder == null) { - ethernetMatchBuilder = new EthernetMatchBuilder(); - mapMatchBuilder.put(EthernetMatchBuilder.class, ethernetMatchBuilder); - } - - ethernetMatchBuilder.setEthernetDestination(new EthernetDestinationBuilder().setAddress( - new MacAddress(matchInfo.getStringMatchValues()[0])).build()); - } - - @Override - public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder - .remove(EthernetMatchBuilder.class); - - if (ethernetMatchBuilder != null) { - matchBuilderInOut.setEthernetMatch(ethernetMatchBuilder.build()); - } - } - }, - - eth_type { - @Override - protected Class getMatchType() { - return EthType.class; - } - - @Override - public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder - .get(EthernetMatchBuilder.class); - - if (ethernetMatchBuilder == null) { - ethernetMatchBuilder = new EthernetMatchBuilder(); - mapMatchBuilder.put(EthernetMatchBuilder.class, ethernetMatchBuilder); - } - - ethernetMatchBuilder.setEthernetType(new EthernetTypeBuilder().setType( - new EtherType(matchInfo.getMatchValues()[0])).build()); - } - - @Override - public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder - .remove(EthernetMatchBuilder.class); - - if (ethernetMatchBuilder != null) { - matchBuilderInOut.setEthernetMatch(ethernetMatchBuilder.build()); - } - } - }, - - in_port { - @Override - protected Class getMatchType() { - return InPort.class; - } - - @Override - public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - } - - @Override - public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - // NodeConnectorId format -> openflow:: - StringBuffer nodeConnectorId = new StringBuffer().append("openflow:").append(matchInfo.getMatchValues()[0]) - .append(':').append(matchInfo.getMatchValues()[1]); - matchBuilderInOut.setInPort(new NodeConnectorId(nodeConnectorId.toString())); - } - }, - - ip_proto { - @Override - protected Class getMatchType() { - return IpProto.class; - } - - @Override - public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - IpMatchBuilder ipMatchBuilder = (IpMatchBuilder) mapMatchBuilder.get(IpMatchBuilder.class); - - if (ipMatchBuilder == null) { - ipMatchBuilder = new IpMatchBuilder(); - mapMatchBuilder.put(IpMatchBuilder.class, ipMatchBuilder); - } - - ipMatchBuilder.setIpProtocol(Short.valueOf((short) matchInfo.getMatchValues()[0])).build(); - } - - @Override - public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - IpMatchBuilder ipMatchBuilder = (IpMatchBuilder) mapMatchBuilder.remove(IpMatchBuilder.class); - - if (ipMatchBuilder != null) { - matchBuilderInOut.setIpMatch(ipMatchBuilder.build()); - } - } - }, - - ipv4_dst { - @Override - protected Class getMatchType() { - return Ipv4Dst.class; - } - - @Override - public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.get(Ipv4MatchBuilder.class); - - if (ipv4MatchBuilder == null) { - ipv4MatchBuilder = new Ipv4MatchBuilder(); - mapMatchBuilder.put(Ipv4MatchBuilder.class, ipv4MatchBuilder); - } - - long[] prefix = matchInfo.getMatchValues(); - ipv4MatchBuilder.setIpv4Destination(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1]))).build(); - } - - @Override - public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.remove(Ipv4MatchBuilder.class); - - if (ipv4MatchBuilder != null) { - matchBuilderInOut.setLayer3Match(ipv4MatchBuilder.build()); - } - } - }, - - ipv4_src { - @Override - protected Class getMatchType() { - return Ipv4Src.class; - } - - @Override - public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.get(Ipv4MatchBuilder.class); - - if (ipv4MatchBuilder == null) { - ipv4MatchBuilder = new Ipv4MatchBuilder(); - mapMatchBuilder.put(Ipv4MatchBuilder.class, ipv4MatchBuilder); - } - - long[] prefix = matchInfo.getMatchValues(); - ipv4MatchBuilder.setIpv4Source(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1]))).build(); - } - - @Override - public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.remove(Ipv4MatchBuilder.class); - - if (ipv4MatchBuilder != null) { - matchBuilderInOut.setLayer3Match(ipv4MatchBuilder.build()); - } - } - }, - - arp_op { - @Override - protected Class getMatchType() { - return ArpOp.class; - } - - @Override - public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.get(ArpMatchBuilder.class); - - if (arpMatchBuilder == null) { - arpMatchBuilder = new ArpMatchBuilder(); - mapMatchBuilder.put(ArpMatchBuilder.class, arpMatchBuilder); - } - - arpMatchBuilder.setArpOp(Integer.valueOf((int) matchInfo.getMatchValues()[0])); - } - - @Override - public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.remove(ArpMatchBuilder.class); - - if (arpMatchBuilder != null) { - matchBuilderInOut.setLayer3Match(arpMatchBuilder.build()); - } - } - }, - - arp_tpa { - @Override - protected Class getMatchType() { - return ArpTpa.class; - } - - @Override - public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.get(ArpMatchBuilder.class); - - if (arpMatchBuilder == null) { - arpMatchBuilder = new ArpMatchBuilder(); - mapMatchBuilder.put(ArpMatchBuilder.class, arpMatchBuilder); - } - - long[] prefix = matchInfo.getMatchValues(); - arpMatchBuilder.setArpTargetTransportAddress(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1]))); - } - - @Override - public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.remove(ArpMatchBuilder.class); - - if (arpMatchBuilder != null) { - matchBuilderInOut.setLayer3Match(arpMatchBuilder.build()); - } - } - }, - - arp_spa { - @Override - protected Class getMatchType() { - return ArpSpa.class; - } - - @Override - public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.get(ArpMatchBuilder.class); - - if (arpMatchBuilder == null) { - arpMatchBuilder = new ArpMatchBuilder(); - mapMatchBuilder.put(ArpMatchBuilder.class, arpMatchBuilder); - } - - long[] prefix = matchInfo.getMatchValues(); - arpMatchBuilder.setArpSourceTransportAddress(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1]))); - } - - @Override - public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.remove(ArpMatchBuilder.class); - - if (arpMatchBuilder != null) { - matchBuilderInOut.setLayer3Match(arpMatchBuilder.build()); - } - } - }, - - metadata { - @Override - protected Class getMatchType() { - return Metadata.class; - } - - @Override - public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - MetadataBuilder metadataBuilder = (MetadataBuilder) mapMatchBuilder.get(MetadataBuilder.class); - - if (metadataBuilder == null) { - metadataBuilder = new MetadataBuilder(); - mapMatchBuilder.put(MetadataBuilder.class, metadataBuilder); - } - - BigInteger[] metadataValues = matchInfo.getBigMatchValues(); - metadataBuilder.setMetadata(metadataValues[0]).setMetadataMask(metadataValues[1]).build(); - } - - @Override - public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - MetadataBuilder metadataBuilder = (MetadataBuilder) mapMatchBuilder.remove(MetadataBuilder.class); - - if (metadataBuilder != null) { - matchBuilderInOut.setMetadata(metadataBuilder.build()); - } - } - }, - - mpls_label { - @Override - protected Class getMatchType() { - return MplsLabel.class; - } - - @Override - public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder - .get(ProtocolMatchFieldsBuilder.class); - - if (protocolMatchFieldsBuilder == null) { - protocolMatchFieldsBuilder = new ProtocolMatchFieldsBuilder(); - mapMatchBuilder.put(ProtocolMatchFieldsBuilder.class, protocolMatchFieldsBuilder); - } - - protocolMatchFieldsBuilder.setMplsLabel(Long.valueOf(matchInfo.getStringMatchValues()[0])).build(); - } - - @Override - public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder - .remove(ProtocolMatchFieldsBuilder.class); - - if (protocolMatchFieldsBuilder != null) { - matchBuilderInOut.setProtocolMatchFields(protocolMatchFieldsBuilder.build()); - } - } - }, - - pbb_isid { - @Override - protected Class getMatchType() { - return PbbIsid.class; - } - - @Override - public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder - .get(ProtocolMatchFieldsBuilder.class); - - if (protocolMatchFieldsBuilder == null) { - protocolMatchFieldsBuilder = new ProtocolMatchFieldsBuilder(); - mapMatchBuilder.put(ProtocolMatchFieldsBuilder.class, protocolMatchFieldsBuilder); - } - - protocolMatchFieldsBuilder.setPbb(new PbbBuilder().setPbbIsid(Long.valueOf(matchInfo.getMatchValues()[0])) - .build()); - } - - @Override - public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder - .remove(ProtocolMatchFieldsBuilder.class); - - if (protocolMatchFieldsBuilder != null) { - matchBuilderInOut.setProtocolMatchFields(protocolMatchFieldsBuilder.build()); - } - } - }, - - tcp_dst { - @Override - protected Class getMatchType() { - return TcpDst.class; - } - - @Override - public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.get(TcpMatchBuilder.class); - - if (tcpMatchBuilder == null) { - tcpMatchBuilder = new TcpMatchBuilder(); - mapMatchBuilder.put(TcpMatchBuilder.class, tcpMatchBuilder); - } - - tcpMatchBuilder.setTcpDestinationPort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0]))); - } - - @Override - public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.remove(TcpMatchBuilder.class); - - if (tcpMatchBuilder != null) { - matchBuilderInOut.setLayer4Match(tcpMatchBuilder.build()); - } - } - }, - - tcp_src { - @Override - protected Class getMatchType() { - return TcpSrc.class; - } - - @Override - public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.get(TcpMatchBuilder.class); - - if (tcpMatchBuilder == null) { - tcpMatchBuilder = new TcpMatchBuilder(); - mapMatchBuilder.put(TcpMatchBuilder.class, tcpMatchBuilder); - } - - tcpMatchBuilder.setTcpSourcePort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0]))); - } - - @Override - public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.remove(TcpMatchBuilder.class); - - if (tcpMatchBuilder != null) { - matchBuilderInOut.setLayer4Match(tcpMatchBuilder.build()); - } - } - }, - - udp_dst { - @Override - protected Class getMatchType() { - return UdpDst.class; - } - - @Override - public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.get(UdpMatchBuilder.class); - - if (udpMatchBuilder == null) { - udpMatchBuilder = new UdpMatchBuilder(); - mapMatchBuilder.put(UdpMatchBuilder.class, udpMatchBuilder); - } - - udpMatchBuilder.setUdpDestinationPort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0]))); - } - - @Override - public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.remove(UdpMatchBuilder.class); - - if (udpMatchBuilder != null) { - matchBuilderInOut.setLayer4Match(udpMatchBuilder.build()); - } - } - }, - - udp_src { - @Override - protected Class getMatchType() { - return UdpSrc.class; - } - - @Override - public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.get(UdpMatchBuilder.class); - - if (udpMatchBuilder == null) { - udpMatchBuilder = new UdpMatchBuilder(); - mapMatchBuilder.put(UdpMatchBuilder.class, udpMatchBuilder); - } - - udpMatchBuilder.setUdpSourcePort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0]))); - } - - @Override - public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.remove(UdpMatchBuilder.class); - - if (udpMatchBuilder != null) { - matchBuilderInOut.setLayer4Match(udpMatchBuilder.build()); - } - } - }, - tunnel_id { - @Override - public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - TunnelBuilder tunnelBuilder = (TunnelBuilder) mapMatchBuilder.get(TunnelBuilder.class); - - if (tunnelBuilder == null) { - tunnelBuilder = new TunnelBuilder(); - mapMatchBuilder.put(TunnelBuilder.class, tunnelBuilder); - } - - BigInteger[] tunnelIdValues = matchInfo.getBigMatchValues(); - tunnelBuilder.setTunnelId(tunnelIdValues[0]).setTunnelMask(tunnelIdValues[1]).build(); - } - - @Override - public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - TunnelBuilder tunnelBuilder = (TunnelBuilder) mapMatchBuilder.remove(TunnelBuilder.class); - - if (tunnelBuilder != null) { - matchBuilderInOut.setTunnel(tunnelBuilder.build()); - } - } - - @Override - protected Class getMatchType() { - return TunnelId.class; - } - - }, - - vlan_vid { - @Override - protected Class getMatchType() { - return VlanVid.class; - } - - @Override - public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - VlanMatchBuilder vlanMatchBuilder = (VlanMatchBuilder) mapMatchBuilder.get(VlanMatchBuilder.class); - - if (vlanMatchBuilder == null) { - vlanMatchBuilder = new VlanMatchBuilder(); - mapMatchBuilder.put(VlanMatchBuilder.class, vlanMatchBuilder); - } - - vlanMatchBuilder.setVlanId(new VlanIdBuilder() - .setVlanId(new VlanId(Integer.valueOf((int) matchInfo.getMatchValues()[0]))) - .setVlanIdPresent(((int) matchInfo.getMatchValues()[0] == 0) ? Boolean.FALSE : Boolean.TRUE) - .build()); - } - - @Override - public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - VlanMatchBuilder vlanMatchBuilder = (VlanMatchBuilder) mapMatchBuilder.remove(VlanMatchBuilder.class); - - if (vlanMatchBuilder != null) { - matchBuilderInOut.setVlanMatch(vlanMatchBuilder.build()); - } - } - }; - - /* - public SetFieldMatch buildSetFieldMatch(XtensionType xtype) { - if (xtype == null || xtype.getMatchMaskType() == - SalOfaMatchMaskType.OFPMMNOMASK) { - return new - SetFieldMatchBuilder().setHasMask(false).setMatchType(getMatchType()) - .setSalOxmClass(SalOpenflowBasicClass.class).build(); - } - - return new SetFieldMatchBuilder() - .setHasMask(true) - .setMatchType(getMatchType()) - .setSalOxmClass(SalOpenflowBasicClass.class) - .addAugmentation( - ExperimenterSetFieldMatch.class, - new - ExperimenterSetFieldMatchBuilder().setMatchMaskType(xtype.getMatchMaskType()) - .setTlvMatchMask(xtype.getByteBuf()).build()).build(); - - - } -*/ - - // New one for ODL without the Extension --CHECK - /* - public SetFieldMatch buildSetFieldMatch() { - - return new SetFieldMatchBuilder().setHasMask(false).setMatchType(getMatchType()) - .setSalOxmClass(SalOpenflowBasicClass.class).build(); - - return null; - } -*/ - - - public abstract void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder); - - public abstract void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, - Map, Object> mapMatchBuilder); - - protected abstract Class getMatchType(); - - protected boolean hasMatchFieldMask() { - // Override this to return true - return false; - } + eth_src { + @Override + protected Class getMatchType() { + return EthSrc.class; + } + + @Override + public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder + .get(EthernetMatchBuilder.class); + + if (ethernetMatchBuilder == null) { + ethernetMatchBuilder = new EthernetMatchBuilder(); + mapMatchBuilder.put(EthernetMatchBuilder.class, ethernetMatchBuilder); + } + + ethernetMatchBuilder.setEthernetSource(new EthernetSourceBuilder().setAddress( + new MacAddress(matchInfo.getStringMatchValues()[0])).build()); + } + + @Override + public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder + .remove(EthernetMatchBuilder.class); + + if (ethernetMatchBuilder != null) { + matchBuilderInOut.setEthernetMatch(ethernetMatchBuilder.build()); + } + } + }, + + eth_dst { + @Override + protected Class getMatchType() { + return EthDst.class; + } + + @Override + public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder + .get(EthernetMatchBuilder.class); + + if (ethernetMatchBuilder == null) { + ethernetMatchBuilder = new EthernetMatchBuilder(); + mapMatchBuilder.put(EthernetMatchBuilder.class, ethernetMatchBuilder); + } + + ethernetMatchBuilder.setEthernetDestination(new EthernetDestinationBuilder().setAddress( + new MacAddress(matchInfo.getStringMatchValues()[0])).build()); + } + + @Override + public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder + .remove(EthernetMatchBuilder.class); + + if (ethernetMatchBuilder != null) { + matchBuilderInOut.setEthernetMatch(ethernetMatchBuilder.build()); + } + } + }, + + eth_type { + @Override + protected Class getMatchType() { + return EthType.class; + } + + @Override + public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder + .get(EthernetMatchBuilder.class); + + if (ethernetMatchBuilder == null) { + ethernetMatchBuilder = new EthernetMatchBuilder(); + mapMatchBuilder.put(EthernetMatchBuilder.class, ethernetMatchBuilder); + } + + ethernetMatchBuilder.setEthernetType(new EthernetTypeBuilder().setType( + new EtherType(matchInfo.getMatchValues()[0])).build()); + } + + @Override + public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + EthernetMatchBuilder ethernetMatchBuilder = (EthernetMatchBuilder) mapMatchBuilder + .remove(EthernetMatchBuilder.class); + + if (ethernetMatchBuilder != null) { + matchBuilderInOut.setEthernetMatch(ethernetMatchBuilder.build()); + } + } + }, + + in_port { + @Override + protected Class getMatchType() { + return InPort.class; + } + + @Override + public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + } + + @Override + public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + + StringBuffer nodeConnectorId = new StringBuffer().append("openflow:").append(matchInfo.getBigMatchValues()[0]) + .append(':').append(matchInfo.getBigMatchValues()[1]); + matchBuilderInOut.setInPort(new NodeConnectorId(nodeConnectorId.toString())); + } + }, + + ip_proto { + @Override + protected Class getMatchType() { + return IpProto.class; + } + + @Override + public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + IpMatchBuilder ipMatchBuilder = (IpMatchBuilder) mapMatchBuilder.get(IpMatchBuilder.class); + + if (ipMatchBuilder == null) { + ipMatchBuilder = new IpMatchBuilder(); + mapMatchBuilder.put(IpMatchBuilder.class, ipMatchBuilder); + } + + ipMatchBuilder.setIpProtocol(Short.valueOf((short) matchInfo.getMatchValues()[0])).build(); + } + + @Override + public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + IpMatchBuilder ipMatchBuilder = (IpMatchBuilder) mapMatchBuilder.remove(IpMatchBuilder.class); + + if (ipMatchBuilder != null) { + matchBuilderInOut.setIpMatch(ipMatchBuilder.build()); + } + } + }, + + ipv4_dst { + @Override + protected Class getMatchType() { + return Ipv4Dst.class; + } + + @Override + public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.get(Ipv4MatchBuilder.class); + + if (ipv4MatchBuilder == null) { + ipv4MatchBuilder = new Ipv4MatchBuilder(); + mapMatchBuilder.put(Ipv4MatchBuilder.class, ipv4MatchBuilder); + } + + long[] prefix = matchInfo.getMatchValues(); + ipv4MatchBuilder.setIpv4Destination(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1]))).build(); + } + + @Override + public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.remove(Ipv4MatchBuilder.class); + + if (ipv4MatchBuilder != null) { + matchBuilderInOut.setLayer3Match(ipv4MatchBuilder.build()); + } + } + }, + + ipv4_src { + @Override + protected Class getMatchType() { + return Ipv4Src.class; + } + + @Override + public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.get(Ipv4MatchBuilder.class); + + if (ipv4MatchBuilder == null) { + ipv4MatchBuilder = new Ipv4MatchBuilder(); + mapMatchBuilder.put(Ipv4MatchBuilder.class, ipv4MatchBuilder); + } + + long[] prefix = matchInfo.getMatchValues(); + ipv4MatchBuilder.setIpv4Source(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1]))).build(); + } + + @Override + public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + Ipv4MatchBuilder ipv4MatchBuilder = (Ipv4MatchBuilder) mapMatchBuilder.remove(Ipv4MatchBuilder.class); + + if (ipv4MatchBuilder != null) { + matchBuilderInOut.setLayer3Match(ipv4MatchBuilder.build()); + } + } + }, + + arp_op { + @Override + protected Class getMatchType() { + return ArpOp.class; + } + + @Override + public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.get(ArpMatchBuilder.class); + + if (arpMatchBuilder == null) { + arpMatchBuilder = new ArpMatchBuilder(); + mapMatchBuilder.put(ArpMatchBuilder.class, arpMatchBuilder); + } + + arpMatchBuilder.setArpOp(Integer.valueOf((int) matchInfo.getMatchValues()[0])); + } + + @Override + public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.remove(ArpMatchBuilder.class); + + if (arpMatchBuilder != null) { + matchBuilderInOut.setLayer3Match(arpMatchBuilder.build()); + } + } + }, + + arp_tpa { + @Override + protected Class getMatchType() { + return ArpTpa.class; + } + + @Override + public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.get(ArpMatchBuilder.class); + + if (arpMatchBuilder == null) { + arpMatchBuilder = new ArpMatchBuilder(); + mapMatchBuilder.put(ArpMatchBuilder.class, arpMatchBuilder); + } + + long[] prefix = matchInfo.getMatchValues(); + arpMatchBuilder.setArpTargetTransportAddress(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1]))); + } + + @Override + public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.remove(ArpMatchBuilder.class); + + if (arpMatchBuilder != null) { + matchBuilderInOut.setLayer3Match(arpMatchBuilder.build()); + } + } + }, + + arp_spa { + @Override + protected Class getMatchType() { + return ArpSpa.class; + } + + @Override + public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.get(ArpMatchBuilder.class); + + if (arpMatchBuilder == null) { + arpMatchBuilder = new ArpMatchBuilder(); + mapMatchBuilder.put(ArpMatchBuilder.class, arpMatchBuilder); + } + + long[] prefix = matchInfo.getMatchValues(); + arpMatchBuilder.setArpSourceTransportAddress(new Ipv4Prefix(MDSALUtil.longToIp(prefix[0], prefix[1]))); + } + + @Override + public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.remove(ArpMatchBuilder.class); + + if (arpMatchBuilder != null) { + matchBuilderInOut.setLayer3Match(arpMatchBuilder.build()); + } + } + }, + + metadata { + @Override + protected Class getMatchType() { + return Metadata.class; + } + + @Override + public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + MetadataBuilder metadataBuilder = (MetadataBuilder) mapMatchBuilder.get(MetadataBuilder.class); + + if (metadataBuilder == null) { + metadataBuilder = new MetadataBuilder(); + mapMatchBuilder.put(MetadataBuilder.class, metadataBuilder); + } + + BigInteger[] metadataValues = matchInfo.getBigMatchValues(); + metadataBuilder.setMetadata(metadataValues[0]).setMetadataMask(metadataValues[1]).build(); + } + + @Override + public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + MetadataBuilder metadataBuilder = (MetadataBuilder) mapMatchBuilder.remove(MetadataBuilder.class); + + if (metadataBuilder != null) { + matchBuilderInOut.setMetadata(metadataBuilder.build()); + } + } + }, + + mpls_label { + @Override + protected Class getMatchType() { + return MplsLabel.class; + } + + @Override + public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder + .get(ProtocolMatchFieldsBuilder.class); + + if (protocolMatchFieldsBuilder == null) { + protocolMatchFieldsBuilder = new ProtocolMatchFieldsBuilder(); + mapMatchBuilder.put(ProtocolMatchFieldsBuilder.class, protocolMatchFieldsBuilder); + } + + protocolMatchFieldsBuilder.setMplsLabel(Long.valueOf(matchInfo.getStringMatchValues()[0])).build(); + } + + @Override + public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder + .remove(ProtocolMatchFieldsBuilder.class); + + if (protocolMatchFieldsBuilder != null) { + matchBuilderInOut.setProtocolMatchFields(protocolMatchFieldsBuilder.build()); + } + } + }, + + pbb_isid { + @Override + protected Class getMatchType() { + return PbbIsid.class; + } + + @Override + public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder + .get(ProtocolMatchFieldsBuilder.class); + + if (protocolMatchFieldsBuilder == null) { + protocolMatchFieldsBuilder = new ProtocolMatchFieldsBuilder(); + mapMatchBuilder.put(ProtocolMatchFieldsBuilder.class, protocolMatchFieldsBuilder); + } + + protocolMatchFieldsBuilder.setPbb(new PbbBuilder().setPbbIsid(Long.valueOf(matchInfo.getMatchValues()[0])) + .build()); + } + + @Override + public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + ProtocolMatchFieldsBuilder protocolMatchFieldsBuilder = (ProtocolMatchFieldsBuilder) mapMatchBuilder + .remove(ProtocolMatchFieldsBuilder.class); + + if (protocolMatchFieldsBuilder != null) { + matchBuilderInOut.setProtocolMatchFields(protocolMatchFieldsBuilder.build()); + } + } + }, + + tcp_dst { + @Override + protected Class getMatchType() { + return TcpDst.class; + } + + @Override + public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.get(TcpMatchBuilder.class); + + if (tcpMatchBuilder == null) { + tcpMatchBuilder = new TcpMatchBuilder(); + mapMatchBuilder.put(TcpMatchBuilder.class, tcpMatchBuilder); + } + + tcpMatchBuilder.setTcpDestinationPort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0]))); + } + + @Override + public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.remove(TcpMatchBuilder.class); + + if (tcpMatchBuilder != null) { + matchBuilderInOut.setLayer4Match(tcpMatchBuilder.build()); + } + } + }, + + tcp_src { + @Override + protected Class getMatchType() { + return TcpSrc.class; + } + + @Override + public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.get(TcpMatchBuilder.class); + + if (tcpMatchBuilder == null) { + tcpMatchBuilder = new TcpMatchBuilder(); + mapMatchBuilder.put(TcpMatchBuilder.class, tcpMatchBuilder); + } + + tcpMatchBuilder.setTcpSourcePort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0]))); + } + + @Override + public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + TcpMatchBuilder tcpMatchBuilder = (TcpMatchBuilder) mapMatchBuilder.remove(TcpMatchBuilder.class); + + if (tcpMatchBuilder != null) { + matchBuilderInOut.setLayer4Match(tcpMatchBuilder.build()); + } + } + }, + + udp_dst { + @Override + protected Class getMatchType() { + return UdpDst.class; + } + + @Override + public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.get(UdpMatchBuilder.class); + + if (udpMatchBuilder == null) { + udpMatchBuilder = new UdpMatchBuilder(); + mapMatchBuilder.put(UdpMatchBuilder.class, udpMatchBuilder); + } + + udpMatchBuilder.setUdpDestinationPort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0]))); + } + + @Override + public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.remove(UdpMatchBuilder.class); + + if (udpMatchBuilder != null) { + matchBuilderInOut.setLayer4Match(udpMatchBuilder.build()); + } + } + }, + + udp_src { + @Override + protected Class getMatchType() { + return UdpSrc.class; + } + + @Override + public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.get(UdpMatchBuilder.class); + + if (udpMatchBuilder == null) { + udpMatchBuilder = new UdpMatchBuilder(); + mapMatchBuilder.put(UdpMatchBuilder.class, udpMatchBuilder); + } + + udpMatchBuilder.setUdpSourcePort(new PortNumber(Integer.valueOf((int) matchInfo.getMatchValues()[0]))); + } + + @Override + public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + UdpMatchBuilder udpMatchBuilder = (UdpMatchBuilder) mapMatchBuilder.remove(UdpMatchBuilder.class); + + if (udpMatchBuilder != null) { + matchBuilderInOut.setLayer4Match(udpMatchBuilder.build()); + } + } + }, + tunnel_id { + @Override + public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + TunnelBuilder tunnelBuilder = (TunnelBuilder) mapMatchBuilder.get(TunnelBuilder.class); + + if (tunnelBuilder == null) { + tunnelBuilder = new TunnelBuilder(); + mapMatchBuilder.put(TunnelBuilder.class, tunnelBuilder); + } + + BigInteger[] tunnelIdValues = matchInfo.getBigMatchValues(); + tunnelBuilder.setTunnelId(tunnelIdValues[0]); + if(tunnelIdValues.length > 1){ + tunnelBuilder.setTunnelMask(tunnelIdValues[1]); + } + tunnelBuilder.build(); + } + + @Override + public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + TunnelBuilder tunnelBuilder = (TunnelBuilder) mapMatchBuilder.remove(TunnelBuilder.class); + + if (tunnelBuilder != null) { + matchBuilderInOut.setTunnel(tunnelBuilder.build()); + } + } + + @Override + protected Class getMatchType() { + return TunnelId.class; + } + + }, + + vlan_vid { + @Override + protected Class getMatchType() { + return VlanVid.class; + } + + @Override + public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + VlanMatchBuilder vlanMatchBuilder = (VlanMatchBuilder) mapMatchBuilder.get(VlanMatchBuilder.class); + + if (vlanMatchBuilder == null) { + vlanMatchBuilder = new VlanMatchBuilder(); + mapMatchBuilder.put(VlanMatchBuilder.class, vlanMatchBuilder); + } + + vlanMatchBuilder.setVlanId(new VlanIdBuilder() + .setVlanId(new VlanId(Integer.valueOf((int) matchInfo.getMatchValues()[0]))) + .setVlanIdPresent(((int) matchInfo.getMatchValues()[0] == 0) ? Boolean.FALSE : Boolean.TRUE) + .build()); + } + + @Override + public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { + VlanMatchBuilder vlanMatchBuilder = (VlanMatchBuilder) mapMatchBuilder.remove(VlanMatchBuilder.class); + + if (vlanMatchBuilder != null) { + matchBuilderInOut.setVlanMatch(vlanMatchBuilder.build()); + } + } + }; + + + public abstract void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder); + + public abstract void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, + Map, Object> mapMatchBuilder); + + protected abstract Class getMatchType(); + + protected boolean hasMatchFieldMask() { + // Override this to return true + return false; + } }