*/
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;
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;
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;
/**
*
*/
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<>(
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);
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);
}
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;
+ }
}