Upgrade ietf-{inet,yang}-types to 2013-07-15
[openflowplugin.git] / extension / openflowplugin-extension-nicira / src / main / java / org / opendaylight / openflowplugin / extension / vendor / nicira / convertor / match / MatchUtil.java
index 03778d96a77cee34f4fa628ee7c714e03ef4dc67..ce07b15cc427f133c53baea292885cee345e09c7 100644 (file)
@@ -7,9 +7,15 @@
  */
 package org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match;
 
+import com.google.common.base.Joiner;
+import com.google.common.base.Splitter;
+
+import com.google.common.primitives.Longs;
+import com.google.common.primitives.UnsignedBytes;
+import java.util.Iterator;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
 import java.util.HashSet;
 import java.util.Set;
-
 import org.opendaylight.openflowplugin.extension.api.GroupingResolver;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchField;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OxmClassBase;
@@ -26,6 +32,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.ni
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchRpcUpdateFlowUpdated;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxArpShaGrouping;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxArpThaGrouping;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxCtStateGrouping;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxCtZoneGrouping;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNshc1Grouping;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNshc2Grouping;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNshc3Grouping;
@@ -42,6 +50,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.ni
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfEthDstGrouping;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfEthSrcGrouping;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfEthTypeGrouping;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfTcpDstGrouping;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfTcpSrcGrouping;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfUdpDstGrouping;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfUdpSrcGrouping;
 import org.opendaylight.yangtools.yang.binding.Augmentation;
 
 /**
@@ -49,6 +61,8 @@ import org.opendaylight.yangtools.yang.binding.Augmentation;
  *
  */
 public class MatchUtil {
+    private static final Splitter SPLITTER = Splitter.on('.');
+    private static final Joiner JOINER = Joiner.on('.');
 
     private final static Set<Class<? extends Augmentation<Extension>>> augmentationsOfExtension = new HashSet<>();
     public final static GroupingResolver<NxmNxRegGrouping, Extension> regResolver = new GroupingResolver<>(
@@ -87,6 +101,19 @@ public class MatchUtil {
             NxmNxNshc3Grouping.class);
     public final static GroupingResolver<NxmNxNshc4Grouping, Extension> nsc4Resolver = new GroupingResolver<>(
             NxmNxNshc4Grouping.class);
+    public final static GroupingResolver<NxmOfTcpSrcGrouping, Extension> tcpSrcResolver = new GroupingResolver<>(
+            NxmOfTcpSrcGrouping.class);
+    public final static GroupingResolver<NxmOfTcpDstGrouping, Extension> tcpDstResolver = new GroupingResolver<>(
+            NxmOfTcpDstGrouping.class);
+    public final static GroupingResolver<NxmOfUdpSrcGrouping, Extension> udpSrcResolver = new GroupingResolver<>(
+            NxmOfUdpSrcGrouping.class);
+    public final static GroupingResolver<NxmOfUdpDstGrouping, Extension> udpDstResolver = new GroupingResolver<>(
+            NxmOfUdpDstGrouping.class);
+    public final static GroupingResolver<NxmNxCtStateGrouping, Extension> ctStateResolver = new GroupingResolver<>(
+            NxmNxCtStateGrouping.class);
+    public final static GroupingResolver<NxmNxCtZoneGrouping, Extension> ctZoneResolver = new GroupingResolver<>(
+            NxmNxCtZoneGrouping.class);
+
 
     static {
         augmentationsOfExtension.add(NxAugMatchRpcAddFlow.class);
@@ -115,6 +142,12 @@ public class MatchUtil {
         nsc2Resolver.setAugmentations(augmentationsOfExtension);
         nsc3Resolver.setAugmentations(augmentationsOfExtension);
         nsc4Resolver.setAugmentations(augmentationsOfExtension);
+        tcpSrcResolver.setAugmentations(augmentationsOfExtension);
+        tcpDstResolver.setAugmentations(augmentationsOfExtension);
+        udpSrcResolver.setAugmentations(augmentationsOfExtension);
+        udpDstResolver.setAugmentations(augmentationsOfExtension);
+        ctStateResolver.setAugmentations(augmentationsOfExtension);
+        ctZoneResolver.setAugmentations(augmentationsOfExtension);
 
     }
 
@@ -129,4 +162,28 @@ public class MatchUtil {
         return matchEntryBuilder;
     }
 
+    public static Long ipv4ToLong(Ipv4Address ipv4) {
+        Iterator<String> iterator = SPLITTER.split(ipv4.getValue()).iterator();
+        byte[] bytes = new byte[8];
+        for(int i =0;i < bytes.length;i++) {
+            if(i<4) {
+                bytes[i] = 0;
+            } else {
+                bytes[i] = UnsignedBytes.parseUnsignedByte((iterator.next()));
+            }
+        }
+        Long result = Longs.fromByteArray(bytes);
+        return result;
+    }
+
+    public static Ipv4Address longToIpv4Address(Long l) {
+        byte[] bytes = Longs.toByteArray(l);
+        String[] strArray = new String[4];
+        for(int i = 4;i < bytes.length;i++) {
+            strArray[i-4]=UnsignedBytes.toString(bytes[i]);
+        }
+        String str = JOINER.join(strArray);
+        Ipv4Address result = new Ipv4Address(str);
+        return result;
+    }
 }