X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=extension%2Fopenflowplugin-extension-nicira%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Fextension%2Fvendor%2Fnicira%2Fconvertor%2Fmatch%2FMatchUtil.java;h=d6de0ff63754f3c0d544dc539db365667ff5e030;hb=13e1d5e6c0237b9378d60526dd8c1d79db6d2b49;hp=6889866f4d70d396505f68bca1fa5c275b54c10b;hpb=abd52fa0c9538717e810a42c664206abc52d15be;p=openflowplugin.git diff --git a/extension/openflowplugin-extension-nicira/src/main/java/org/opendaylight/openflowplugin/extension/vendor/nicira/convertor/match/MatchUtil.java b/extension/openflowplugin-extension-nicira/src/main/java/org/opendaylight/openflowplugin/extension/vendor/nicira/convertor/match/MatchUtil.java index 6889866f4d..d6de0ff637 100644 --- a/extension/openflowplugin-extension-nicira/src/main/java/org/opendaylight/openflowplugin/extension/vendor/nicira/convertor/match/MatchUtil.java +++ b/extension/openflowplugin-extension-nicira/src/main/java/org/opendaylight/openflowplugin/extension/vendor/nicira/convertor/match/MatchUtil.java @@ -1,5 +1,5 @@ -/** - * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. +/* + * Copyright (c) 2014, 2017 Cisco Systems, Inc. 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, @@ -9,37 +9,52 @@ 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.collect.ImmutableSet; import com.google.common.primitives.Longs; import com.google.common.primitives.UnsignedBytes; import java.util.Iterator; +import org.opendaylight.openflowplugin.extension.api.AugmentationGroupingResolver; +import org.opendaylight.openflowplugin.extension.api.AugmentationGroupingResolver.Factory; 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.augments.rev150225.oxm.container.match.entry.value.ExperimenterIdCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.oxm.container.match.entry.value.ExperimenterIdCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.oxm.container.match.entry.value.experimenter.id._case.ExperimenterBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.ExperimenterId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ExperimenterClass; 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.openflow.oxm.rev150225.match.entries.grouping.MatchEntryBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.MatchEntryValue; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.OfjAugNxExpMatch; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.OfjAugNxExpMatchBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.oxm.container.match.entry.value.experimenter.id._case.NxExpMatchEntryValue; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.general.extension.grouping.Extension; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNodesNodeTableFlow; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNotifPacketIn; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNotifSwitchFlowRemoved; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNotifUpdateFlowStats; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchPacketInMessage; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchRpcAddFlow; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchRpcRemoveFlow; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchRpcUpdateFlowOriginal; 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.NxmNxCtMarkGrouping; 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.NxmNxCtTpDstGrouping; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxCtTpSrcGrouping; 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.NxmNxNshFlagsGrouping; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNshMdtypeGrouping; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNshNpGrouping; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNshTtlGrouping; 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.NxmNxNshc4Grouping; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNsiGrouping; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNspGrouping; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxPktMarkGrouping; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxRegGrouping; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxTunIdGrouping; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxTunIpv4DstGrouping; @@ -50,137 +65,110 @@ 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.NxmNxEncapEthTypeGrouping; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxEncapEthSrcGrouping; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxEncapEthDstGrouping; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNshMdtypeGrouping; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNshNpGrouping; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxTunGpeNpGrouping; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfInPortGrouping; 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.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfInPortGrouping; import org.opendaylight.yangtools.yang.binding.Augmentation; +import org.opendaylight.yangtools.yang.common.Uint32; /** - * @author msunal + * Match utilities. * + * @author msunal */ -public class MatchUtil { +public final class MatchUtil { private static final Splitter SPLITTER = Splitter.on('.'); private static final Joiner JOINER = Joiner.on('.'); - private final static Set>> augmentationsOfExtension = new HashSet<>(); - public final static GroupingResolver regResolver = new GroupingResolver<>( - NxmNxRegGrouping.class); - public final static GroupingResolver tunIdResolver = new GroupingResolver<>( - NxmNxTunIdGrouping.class); - public final static GroupingResolver arpShaResolver = new GroupingResolver<>( - NxmNxArpShaGrouping.class); - public final static GroupingResolver arpThaResolver = new GroupingResolver<>( - NxmNxArpThaGrouping.class); - public final static GroupingResolver arpOpResolver = new GroupingResolver<>( - NxmOfArpOpGrouping.class); - public final static GroupingResolver arpSpaResolver = new GroupingResolver<>( - NxmOfArpSpaGrouping.class); - public final static GroupingResolver arpTpaResolver = new GroupingResolver<>( - NxmOfArpTpaGrouping.class); - public final static GroupingResolver tunIpv4DstResolver = new GroupingResolver<>( - NxmNxTunIpv4DstGrouping.class); - public final static GroupingResolver tunIpv4SrcResolver = new GroupingResolver<>( - NxmNxTunIpv4SrcGrouping.class); - public final static GroupingResolver ethDstResolver = new GroupingResolver<>( - NxmOfEthDstGrouping.class); - public final static GroupingResolver ethSrcResolver = new GroupingResolver<>( - NxmOfEthSrcGrouping.class); - public final static GroupingResolver ethTypeResolver = new GroupingResolver<>( - NxmOfEthTypeGrouping.class); - public final static GroupingResolver nsiResolver = new GroupingResolver<>( - NxmNxNsiGrouping.class); - public final static GroupingResolver nspResolver = new GroupingResolver<>( - NxmNxNspGrouping.class); - public final static GroupingResolver nsc1Resolver = new GroupingResolver<>( - NxmNxNshc1Grouping.class); - public final static GroupingResolver nsc2Resolver = new GroupingResolver<>( - NxmNxNshc2Grouping.class); - public final static GroupingResolver nsc3Resolver = new GroupingResolver<>( - NxmNxNshc3Grouping.class); - public final static GroupingResolver nsc4Resolver = new GroupingResolver<>( - NxmNxNshc4Grouping.class); - public final static GroupingResolver encapEthTypeResolver = new GroupingResolver<>( - NxmNxEncapEthTypeGrouping.class); - public final static GroupingResolver encapEthSrcResolver = new GroupingResolver<>( - NxmNxEncapEthSrcGrouping.class); - public final static GroupingResolver encapEthDstResolver = new GroupingResolver<>( - NxmNxEncapEthDstGrouping.class); - public final static GroupingResolver nshMdtypeResolver = new GroupingResolver<>( - NxmNxNshMdtypeGrouping.class); - public final static GroupingResolver nshNpResolver = new GroupingResolver<>( - NxmNxNshNpGrouping.class); - public final static GroupingResolver tunGpeNpResolver = new GroupingResolver<>( - NxmNxTunGpeNpGrouping.class); - public final static GroupingResolver tcpSrcResolver = new GroupingResolver<>( - NxmOfTcpSrcGrouping.class); - public final static GroupingResolver tcpDstResolver = new GroupingResolver<>( - NxmOfTcpDstGrouping.class); - public final static GroupingResolver udpSrcResolver = new GroupingResolver<>( - NxmOfUdpSrcGrouping.class); - public final static GroupingResolver udpDstResolver = new GroupingResolver<>( - NxmOfUdpDstGrouping.class); - public final static GroupingResolver ctStateResolver = new GroupingResolver<>( - NxmNxCtStateGrouping.class); - public final static GroupingResolver ctZoneResolver = new GroupingResolver<>( - NxmNxCtZoneGrouping.class); - public final static GroupingResolver nxmOfInportResolver = new GroupingResolver<>( - NxmOfInPortGrouping.class); + public static final AugmentationGroupingResolver REG_RESOLVER; + public static final AugmentationGroupingResolver TUN_ID_RESOLVER; + public static final AugmentationGroupingResolver ARP_SHA_RESOLVER; + public static final AugmentationGroupingResolver ARP_THA_RESOLVER; + public static final AugmentationGroupingResolver ARP_OP_RESOLVER; + public static final AugmentationGroupingResolver ARP_SPA_RESOLVER; + public static final AugmentationGroupingResolver ARP_TPA_RESOLVER; + public static final AugmentationGroupingResolver TUN_IPV4_DST_RESOLVER; + public static final AugmentationGroupingResolver TUN_IPV4_SRC_RESOLVER; + public static final AugmentationGroupingResolver ETH_DST_RESOLVER; + public static final AugmentationGroupingResolver ETH_SRC_RESOLVER; + public static final AugmentationGroupingResolver ETH_TYPE_RESOLVER; + public static final AugmentationGroupingResolver NSI_RESOLVER; + public static final AugmentationGroupingResolver NSP_RESOLVER; + public static final AugmentationGroupingResolver NSC1_RESOLVER; + public static final AugmentationGroupingResolver NSC2_RESOLVER; + public static final AugmentationGroupingResolver NSC3_RESOLVER; + public static final AugmentationGroupingResolver NSC4_RESOLVER; + public static final AugmentationGroupingResolver NSH_FLAGS_RESOLVER; + public static final AugmentationGroupingResolver NSH_MDTYPE_RESOLVER; + public static final AugmentationGroupingResolver NSH_NP_RESOLVER; + public static final AugmentationGroupingResolver NSH_TTL_RESOLVER; + public static final AugmentationGroupingResolver TCP_SRC_RESOLVER; + public static final AugmentationGroupingResolver TCP_DST_RESOLVER; + public static final AugmentationGroupingResolver UDP_SRC_RESOLVER; + public static final AugmentationGroupingResolver UDP_DST_RESOLVER; + public static final AugmentationGroupingResolver CT_MARK_RESOLVER; + public static final AugmentationGroupingResolver CT_STATE_RESOLVER; + public static final AugmentationGroupingResolver CT_ZONE_RESOLVER; + public static final AugmentationGroupingResolver CT_TP_SRC_RESOLVER; + public static final AugmentationGroupingResolver CT_TP_DST_RESOLVER; + public static final AugmentationGroupingResolver PKT_MARK_RESOLVER; + public static final AugmentationGroupingResolver NXM_OF_INPORT_RESOLVER; static { - augmentationsOfExtension.add(NxAugMatchRpcAddFlow.class); - augmentationsOfExtension.add(NxAugMatchRpcRemoveFlow.class); - augmentationsOfExtension.add(NxAugMatchRpcUpdateFlowOriginal.class); - augmentationsOfExtension.add(NxAugMatchRpcUpdateFlowUpdated.class); - augmentationsOfExtension.add(NxAugMatchNodesNodeTableFlow.class); - augmentationsOfExtension.add(NxAugMatchNotifSwitchFlowRemoved.class); - augmentationsOfExtension.add(NxAugMatchNotifPacketIn.class); - augmentationsOfExtension.add(NxAugMatchNotifUpdateFlowStats.class); - regResolver.setAugmentations(augmentationsOfExtension); - tunIdResolver.setAugmentations(augmentationsOfExtension); - arpShaResolver.setAugmentations(augmentationsOfExtension); - arpThaResolver.setAugmentations(augmentationsOfExtension); - arpOpResolver.setAugmentations(augmentationsOfExtension); - arpSpaResolver.setAugmentations(augmentationsOfExtension); - arpTpaResolver.setAugmentations(augmentationsOfExtension); - tunIpv4DstResolver.setAugmentations(augmentationsOfExtension); - tunIpv4SrcResolver.setAugmentations(augmentationsOfExtension); - ethDstResolver.setAugmentations(augmentationsOfExtension); - ethSrcResolver.setAugmentations(augmentationsOfExtension); - ethTypeResolver.setAugmentations(augmentationsOfExtension); - nspResolver.setAugmentations(augmentationsOfExtension); - nsiResolver.setAugmentations(augmentationsOfExtension); - nsc1Resolver.setAugmentations(augmentationsOfExtension); - nsc2Resolver.setAugmentations(augmentationsOfExtension); - nsc3Resolver.setAugmentations(augmentationsOfExtension); - nsc4Resolver.setAugmentations(augmentationsOfExtension); - encapEthTypeResolver.setAugmentations(augmentationsOfExtension); - encapEthSrcResolver.setAugmentations(augmentationsOfExtension); - encapEthDstResolver.setAugmentations(augmentationsOfExtension); - nshMdtypeResolver.setAugmentations(augmentationsOfExtension); - nshNpResolver.setAugmentations(augmentationsOfExtension); - tunGpeNpResolver.setAugmentations(augmentationsOfExtension); - tcpSrcResolver.setAugmentations(augmentationsOfExtension); - tcpDstResolver.setAugmentations(augmentationsOfExtension); - udpSrcResolver.setAugmentations(augmentationsOfExtension); - udpDstResolver.setAugmentations(augmentationsOfExtension); - ctStateResolver.setAugmentations(augmentationsOfExtension); - ctZoneResolver.setAugmentations(augmentationsOfExtension); - nxmOfInportResolver.setAugmentations(augmentationsOfExtension); + final Factory factory = AugmentationGroupingResolver.factory(Extension.class, ImmutableSet.of( + NxAugMatchRpcAddFlow.class, + NxAugMatchRpcRemoveFlow.class, + NxAugMatchRpcUpdateFlowOriginal.class, + NxAugMatchRpcUpdateFlowUpdated.class, + NxAugMatchNodesNodeTableFlow.class, + NxAugMatchNotifSwitchFlowRemoved.class, + NxAugMatchNotifPacketIn.class, + // NxAugMatchNotifUpdateFlowStats.class, + NxAugMatchPacketInMessage.class)); + + REG_RESOLVER = factory.createResolver(NxmNxRegGrouping.class); + TUN_ID_RESOLVER = factory.createResolver(NxmNxTunIdGrouping.class); + ARP_SHA_RESOLVER = factory.createResolver(NxmNxArpShaGrouping.class); + ARP_THA_RESOLVER = factory.createResolver(NxmNxArpThaGrouping.class); + ARP_OP_RESOLVER = factory.createResolver(NxmOfArpOpGrouping.class); + ARP_SPA_RESOLVER = factory.createResolver(NxmOfArpSpaGrouping.class); + ARP_TPA_RESOLVER = factory.createResolver(NxmOfArpTpaGrouping.class); + TUN_IPV4_DST_RESOLVER = factory.createResolver(NxmNxTunIpv4DstGrouping.class); + TUN_IPV4_SRC_RESOLVER = factory.createResolver(NxmNxTunIpv4SrcGrouping.class); + ETH_DST_RESOLVER = factory.createResolver(NxmOfEthDstGrouping.class); + ETH_SRC_RESOLVER = factory.createResolver(NxmOfEthSrcGrouping.class); + ETH_TYPE_RESOLVER = factory.createResolver(NxmOfEthTypeGrouping.class); + NSP_RESOLVER = factory.createResolver(NxmNxNspGrouping.class); + NSI_RESOLVER = factory.createResolver(NxmNxNsiGrouping.class); + NSC1_RESOLVER = factory.createResolver(NxmNxNshc1Grouping.class); + NSC2_RESOLVER = factory.createResolver(NxmNxNshc2Grouping.class); + NSC3_RESOLVER = factory.createResolver(NxmNxNshc3Grouping.class); + NSC4_RESOLVER = factory.createResolver(NxmNxNshc4Grouping.class); + NSH_FLAGS_RESOLVER = factory.createResolver(NxmNxNshFlagsGrouping.class); + NSH_MDTYPE_RESOLVER = factory.createResolver(NxmNxNshMdtypeGrouping.class); + NSH_NP_RESOLVER = factory.createResolver(NxmNxNshNpGrouping.class); + NSH_TTL_RESOLVER = factory.createResolver(NxmNxNshTtlGrouping.class); + TCP_SRC_RESOLVER = factory.createResolver(NxmOfTcpSrcGrouping.class); + TCP_DST_RESOLVER = factory.createResolver(NxmOfTcpDstGrouping.class); + UDP_SRC_RESOLVER = factory.createResolver(NxmOfUdpSrcGrouping.class); + UDP_DST_RESOLVER = factory.createResolver(NxmOfUdpDstGrouping.class); + CT_STATE_RESOLVER = factory.createResolver(NxmNxCtStateGrouping.class); + CT_ZONE_RESOLVER = factory.createResolver(NxmNxCtZoneGrouping.class); + NXM_OF_INPORT_RESOLVER = factory.createResolver(NxmOfInPortGrouping.class); + CT_MARK_RESOLVER = factory.createResolver(NxmNxCtMarkGrouping.class); + CT_TP_SRC_RESOLVER = factory.createResolver(NxmNxCtTpSrcGrouping.class); + CT_TP_DST_RESOLVER = factory.createResolver(NxmNxCtTpDstGrouping.class); + PKT_MARK_RESOLVER = factory.createResolver(NxmNxPktMarkGrouping.class); + } + private MatchUtil() { } - public static MatchEntryBuilder createDefaultMatchEntryBuilder(Class matchField, - Class oxmClass, - MatchEntryValue matchEntryValue){ + public static MatchEntryBuilder createDefaultMatchEntryBuilder(final Class matchField, + final Class oxmClass, + final MatchEntryValue matchEntryValue) { MatchEntryBuilder matchEntryBuilder = new MatchEntryBuilder(); matchEntryBuilder.setHasMask(false); matchEntryBuilder.setOxmMatchField(matchField); @@ -189,25 +177,46 @@ public class MatchUtil { return matchEntryBuilder; } - public static Long ipv4ToLong(Ipv4Address ipv4) { + public static > MatchEntryBuilder createExperimenterMatchEntryBuilder( + final Class matchField, + final Uint32 experimenterId, + final NxExpMatchEntryValue value) { + ExperimenterBuilder experimenterBuilder = new ExperimenterBuilder(); + experimenterBuilder.setExperimenter(new ExperimenterId(experimenterId)); + ExperimenterIdCaseBuilder expCaseBuilder = new ExperimenterIdCaseBuilder(); + expCaseBuilder.setExperimenter(experimenterBuilder.build()); + OfjAugNxExpMatch ofjAugNxExpMatch = new OfjAugNxExpMatchBuilder().setNxExpMatchEntryValue(value).build(); + expCaseBuilder.addAugmentation(OfjAugNxExpMatch.class, ofjAugNxExpMatch); + return createDefaultMatchEntryBuilder(matchField, ExperimenterClass.class, expCaseBuilder.build()); + } + + public static Long ipv4ToLong(final Ipv4Address ipv4) { Iterator iterator = SPLITTER.split(ipv4.getValue()).iterator(); byte[] bytes = new byte[8]; - for(int i =0;i < bytes.length;i++) { - if(i<4) { + for (int i = 0; i < bytes.length; i++) { + if (i < 4) { bytes[i] = 0; } else { - bytes[i] = UnsignedBytes.parseUnsignedByte((iterator.next())); + bytes[i] = UnsignedBytes.parseUnsignedByte(iterator.next()); } } Long result = Longs.fromByteArray(bytes); return result; } - public static Ipv4Address longToIpv4Address(Long l) { - byte[] bytes = Longs.toByteArray(l); + public static Ipv4Address longToIpv4Address(final Uint32 value) { + return longToIpv4Address(value.toJava()); + } + + public static Ipv4Address longToIpv4Address(final Long value) { + return longToIpv4Address(value.longValue()); + } + + public static Ipv4Address longToIpv4Address(final long value) { + byte[] bytes = Longs.toByteArray(value); String[] strArray = new String[4]; - for(int i = 4;i < bytes.length;i++) { - strArray[i-4]=UnsignedBytes.toString(bytes[i]); + 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);