-/**
- * 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,
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.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;
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<Class<? extends Augmentation<Extension>>> augmentationsOfExtension = new HashSet<>();
- public final static GroupingResolver<NxmNxRegGrouping, Extension> regResolver = new GroupingResolver<>(
- NxmNxRegGrouping.class);
- public final static GroupingResolver<NxmNxTunIdGrouping, Extension> tunIdResolver = new GroupingResolver<>(
- NxmNxTunIdGrouping.class);
- public final static GroupingResolver<NxmNxArpShaGrouping, Extension> arpShaResolver = new GroupingResolver<>(
- NxmNxArpShaGrouping.class);
- public final static GroupingResolver<NxmNxArpThaGrouping, Extension> arpThaResolver = new GroupingResolver<>(
- NxmNxArpThaGrouping.class);
- public final static GroupingResolver<NxmOfArpOpGrouping, Extension> arpOpResolver = new GroupingResolver<>(
- NxmOfArpOpGrouping.class);
- public final static GroupingResolver<NxmOfArpSpaGrouping, Extension> arpSpaResolver = new GroupingResolver<>(
- NxmOfArpSpaGrouping.class);
- public final static GroupingResolver<NxmOfArpTpaGrouping, Extension> arpTpaResolver = new GroupingResolver<>(
- NxmOfArpTpaGrouping.class);
- public final static GroupingResolver<NxmNxTunIpv4DstGrouping, Extension> tunIpv4DstResolver = new GroupingResolver<>(
- NxmNxTunIpv4DstGrouping.class);
- public final static GroupingResolver<NxmNxTunIpv4SrcGrouping, Extension> tunIpv4SrcResolver = new GroupingResolver<>(
- NxmNxTunIpv4SrcGrouping.class);
- public final static GroupingResolver<NxmOfEthDstGrouping, Extension> ethDstResolver = new GroupingResolver<>(
- NxmOfEthDstGrouping.class);
- public final static GroupingResolver<NxmOfEthSrcGrouping, Extension> ethSrcResolver = new GroupingResolver<>(
- NxmOfEthSrcGrouping.class);
- public final static GroupingResolver<NxmOfEthTypeGrouping, Extension> ethTypeResolver = new GroupingResolver<>(
- NxmOfEthTypeGrouping.class);
- public final static GroupingResolver<NxmNxNsiGrouping, Extension> nsiResolver = new GroupingResolver<>(
- NxmNxNsiGrouping.class);
- public final static GroupingResolver<NxmNxNspGrouping, Extension> nspResolver = new GroupingResolver<>(
- NxmNxNspGrouping.class);
- public final static GroupingResolver<NxmNxNshc1Grouping, Extension> nsc1Resolver = new GroupingResolver<>(
- NxmNxNshc1Grouping.class);
- public final static GroupingResolver<NxmNxNshc2Grouping, Extension> nsc2Resolver = new GroupingResolver<>(
- NxmNxNshc2Grouping.class);
- public final static GroupingResolver<NxmNxNshc3Grouping, Extension> nsc3Resolver = new GroupingResolver<>(
- NxmNxNshc3Grouping.class);
- public final static GroupingResolver<NxmNxNshc4Grouping, Extension> nsc4Resolver = new GroupingResolver<>(
- NxmNxNshc4Grouping.class);
- public final static GroupingResolver<NxmNxEncapEthTypeGrouping, Extension> encapEthTypeResolver = new GroupingResolver<>(
- NxmNxEncapEthTypeGrouping.class);
- public final static GroupingResolver<NxmNxEncapEthSrcGrouping, Extension> encapEthSrcResolver = new GroupingResolver<>(
- NxmNxEncapEthSrcGrouping.class);
- public final static GroupingResolver<NxmNxEncapEthDstGrouping, Extension> encapEthDstResolver = new GroupingResolver<>(
- NxmNxEncapEthDstGrouping.class);
- public final static GroupingResolver<NxmNxNshMdtypeGrouping, Extension> nshMdtypeResolver = new GroupingResolver<>(
- NxmNxNshMdtypeGrouping.class);
- public final static GroupingResolver<NxmNxNshNpGrouping, Extension> nshNpResolver = new GroupingResolver<>(
- NxmNxNshNpGrouping.class);
- public final static GroupingResolver<NxmNxTunGpeNpGrouping, Extension> tunGpeNpResolver = new GroupingResolver<>(
- NxmNxTunGpeNpGrouping.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);
- public final static GroupingResolver<NxmOfInPortGrouping, Extension> nxmOfInportResolver = new GroupingResolver<>(
- NxmOfInPortGrouping.class);
+ public static final AugmentationGroupingResolver<NxmNxRegGrouping, Extension> REG_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmNxTunIdGrouping, Extension> TUN_ID_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmNxArpShaGrouping, Extension> ARP_SHA_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmNxArpThaGrouping, Extension> ARP_THA_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmOfArpOpGrouping, Extension> ARP_OP_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmOfArpSpaGrouping, Extension> ARP_SPA_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmOfArpTpaGrouping, Extension> ARP_TPA_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmNxTunIpv4DstGrouping, Extension> TUN_IPV4_DST_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmNxTunIpv4SrcGrouping, Extension> TUN_IPV4_SRC_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmOfEthDstGrouping, Extension> ETH_DST_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmOfEthSrcGrouping, Extension> ETH_SRC_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmOfEthTypeGrouping, Extension> ETH_TYPE_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmNxNsiGrouping, Extension> NSI_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmNxNspGrouping, Extension> NSP_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmNxNshc1Grouping, Extension> NSC1_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmNxNshc2Grouping, Extension> NSC2_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmNxNshc3Grouping, Extension> NSC3_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmNxNshc4Grouping, Extension> NSC4_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmNxNshFlagsGrouping, Extension> NSH_FLAGS_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmNxNshMdtypeGrouping, Extension> NSH_MDTYPE_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmNxNshNpGrouping, Extension> NSH_NP_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmNxNshTtlGrouping, Extension> NSH_TTL_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmOfTcpSrcGrouping, Extension> TCP_SRC_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmOfTcpDstGrouping, Extension> TCP_DST_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmOfUdpSrcGrouping, Extension> UDP_SRC_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmOfUdpDstGrouping, Extension> UDP_DST_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmNxCtMarkGrouping, Extension> CT_MARK_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmNxCtStateGrouping, Extension> CT_STATE_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmNxCtZoneGrouping, Extension> CT_ZONE_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmNxCtTpSrcGrouping, Extension> CT_TP_SRC_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmNxCtTpDstGrouping, Extension> CT_TP_DST_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmNxPktMarkGrouping, Extension> PKT_MARK_RESOLVER;
+ public static final AugmentationGroupingResolver<NxmOfInPortGrouping, Extension> 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);
- augmentationsOfExtension.add(NxAugMatchPacketInMessage.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<Extension> 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<? extends MatchField> matchField,
- Class<? extends OxmClassBase> oxmClass,
- MatchEntryValue matchEntryValue){
+ public static MatchEntryBuilder createDefaultMatchEntryBuilder(final Class<? extends MatchField> matchField,
+ final Class<? extends OxmClassBase> oxmClass,
+ final MatchEntryValue matchEntryValue) {
MatchEntryBuilder matchEntryBuilder = new MatchEntryBuilder();
matchEntryBuilder.setHasMask(false);
matchEntryBuilder.setOxmMatchField(matchField);
return matchEntryBuilder;
}
- public static Long ipv4ToLong(Ipv4Address ipv4) {
+ public static <V extends Augmentation<ExperimenterIdCase>> MatchEntryBuilder createExperimenterMatchEntryBuilder(
+ final Class<? extends MatchField> 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<String> 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);