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=a660a2117c16e1ac1043a292fa2e5332b6c59ad1;hpb=107b2a7d0572324e31e6385e1d63cd5845fa10ac;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 a660a2117c..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,4 +1,4 @@ -/** +/* * Copyright (c) 2014, 2017 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the @@ -9,12 +9,12 @@ 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.HashSet; import java.util.Iterator; -import java.util.Set; -import org.opendaylight.openflowplugin.extension.api.GroupingResolver; +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 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; @@ -71,6 +71,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.ni 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; +import org.opendaylight.yangtools.yang.common.Uint32; /** * Match utilities. @@ -81,125 +82,93 @@ public final class MatchUtil { private static final Splitter SPLITTER = Splitter.on('.'); private static final Joiner JOINER = Joiner.on('.'); - private static final Set>> AUGMENTATIONS_OF_EXTENSION = new HashSet<>(); - public static final GroupingResolver REG_RESOLVER = new GroupingResolver<>( - NxmNxRegGrouping.class); - public static final GroupingResolver TUN_ID_RESOLVER = new GroupingResolver<>( - NxmNxTunIdGrouping.class); - public static final GroupingResolver ARP_SHA_RESOLVER = new GroupingResolver<>( - NxmNxArpShaGrouping.class); - public static final GroupingResolver ARP_THA_RESOLVER = new GroupingResolver<>( - NxmNxArpThaGrouping.class); - public static final GroupingResolver ARP_OP_RESOLVER = new GroupingResolver<>( - NxmOfArpOpGrouping.class); - public static final GroupingResolver ARP_SPA_RESOLVER = new GroupingResolver<>( - NxmOfArpSpaGrouping.class); - public static final GroupingResolver ARP_TPA_RESOLVER = new GroupingResolver<>( - NxmOfArpTpaGrouping.class); - public static final GroupingResolver TUN_IPV4_DST_RESOLVER = - new GroupingResolver<>(NxmNxTunIpv4DstGrouping.class); - public static final GroupingResolver TUN_IPV4_SRC_RESOLVER = - new GroupingResolver<>(NxmNxTunIpv4SrcGrouping.class); - public static final GroupingResolver ETH_DST_RESOLVER = new GroupingResolver<>( - NxmOfEthDstGrouping.class); - public static final GroupingResolver ETH_SRC_RESOLVER = new GroupingResolver<>( - NxmOfEthSrcGrouping.class); - public static final GroupingResolver ETH_TYPE_RESOLVER = new GroupingResolver<>( - NxmOfEthTypeGrouping.class); - public static final GroupingResolver NSI_RESOLVER = new GroupingResolver<>( - NxmNxNsiGrouping.class); - public static final GroupingResolver NSP_RESOLVER = new GroupingResolver<>( - NxmNxNspGrouping.class); - public static final GroupingResolver NSC1_RESOLVER = new GroupingResolver<>( - NxmNxNshc1Grouping.class); - public static final GroupingResolver NSC2_RESOLVER = new GroupingResolver<>( - NxmNxNshc2Grouping.class); - public static final GroupingResolver NSC3_RESOLVER = new GroupingResolver<>( - NxmNxNshc3Grouping.class); - public static final GroupingResolver NSC4_RESOLVER = new GroupingResolver<>( - NxmNxNshc4Grouping.class); - public static final GroupingResolver NSH_FLAGS_RESOLVER = - new GroupingResolver<>(NxmNxNshFlagsGrouping.class); - public static final GroupingResolver NSH_MDTYPE_RESOLVER = - new GroupingResolver<>(NxmNxNshMdtypeGrouping.class); - public static final GroupingResolver NSH_NP_RESOLVER = new GroupingResolver<>( - NxmNxNshNpGrouping.class); - public static final GroupingResolver NSH_TTL_RESOLVER = - new GroupingResolver<>(NxmNxNshTtlGrouping.class); - public static final GroupingResolver TCP_SRC_RESOLVER = new GroupingResolver<>( - NxmOfTcpSrcGrouping.class); - public static final GroupingResolver TCP_DST_RESOLVER = new GroupingResolver<>( - NxmOfTcpDstGrouping.class); - public static final GroupingResolver UDP_SRC_RESOLVER = new GroupingResolver<>( - NxmOfUdpSrcGrouping.class); - public static final GroupingResolver UDP_DST_RESOLVER = new GroupingResolver<>( - NxmOfUdpDstGrouping.class); - public static final GroupingResolver CT_MARK_RESOLVER = new GroupingResolver<>( - NxmNxCtMarkGrouping.class); - public static final GroupingResolver CT_STATE_RESOLVER = new GroupingResolver<>( - NxmNxCtStateGrouping.class); - public static final GroupingResolver CT_ZONE_RESOLVER = new GroupingResolver<>( - NxmNxCtZoneGrouping.class); - public static final GroupingResolver CT_TP_SRC_RESOLVER = new GroupingResolver<>( - NxmNxCtTpSrcGrouping.class); - public static final GroupingResolver CT_TP_DST_RESOLVER = new GroupingResolver<>( - NxmNxCtTpDstGrouping.class); - public static final GroupingResolver PKT_MARK_RESOLVER = new GroupingResolver<>( - NxmNxPktMarkGrouping.class); - public static final GroupingResolver NXM_OF_INPORT_RESOLVER = - 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 { - AUGMENTATIONS_OF_EXTENSION.add(NxAugMatchRpcAddFlow.class); - AUGMENTATIONS_OF_EXTENSION.add(NxAugMatchRpcRemoveFlow.class); - AUGMENTATIONS_OF_EXTENSION.add(NxAugMatchRpcUpdateFlowOriginal.class); - AUGMENTATIONS_OF_EXTENSION.add(NxAugMatchRpcUpdateFlowUpdated.class); - AUGMENTATIONS_OF_EXTENSION.add(NxAugMatchNodesNodeTableFlow.class); - AUGMENTATIONS_OF_EXTENSION.add(NxAugMatchNotifSwitchFlowRemoved.class); - AUGMENTATIONS_OF_EXTENSION.add(NxAugMatchNotifPacketIn.class); - //augmentationsOfExtension.add(NxAugMatchNotifUpdateFlowStats.class); - AUGMENTATIONS_OF_EXTENSION.add(NxAugMatchPacketInMessage.class); - REG_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - TUN_ID_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - ARP_SHA_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - ARP_THA_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - ARP_OP_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - ARP_SPA_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - ARP_TPA_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - TUN_IPV4_DST_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - TUN_IPV4_SRC_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - ETH_DST_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - ETH_SRC_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - ETH_TYPE_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - NSP_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - NSI_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - NSC1_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - NSC2_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - NSC3_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - NSC4_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - NSH_FLAGS_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - NSH_MDTYPE_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - NSH_NP_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - NSH_TTL_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - TCP_SRC_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - TCP_DST_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - UDP_SRC_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - UDP_DST_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - CT_STATE_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - CT_ZONE_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - NXM_OF_INPORT_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - CT_MARK_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - CT_TP_SRC_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - CT_TP_DST_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); - PKT_MARK_RESOLVER.setAugmentations(AUGMENTATIONS_OF_EXTENSION); + 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); @@ -209,9 +178,9 @@ public final class MatchUtil { } public static > MatchEntryBuilder createExperimenterMatchEntryBuilder( - Class matchField, - long experimenterId, - NxExpMatchEntryValue value) { + final Class matchField, + final Uint32 experimenterId, + final NxExpMatchEntryValue value) { ExperimenterBuilder experimenterBuilder = new ExperimenterBuilder(); experimenterBuilder.setExperimenter(new ExperimenterId(experimenterId)); ExperimenterIdCaseBuilder expCaseBuilder = new ExperimenterIdCaseBuilder(); @@ -221,7 +190,7 @@ public final class MatchUtil { return createDefaultMatchEntryBuilder(matchField, ExperimenterClass.class, expCaseBuilder.build()); } - public static Long ipv4ToLong(Ipv4Address ipv4) { + 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++) { @@ -235,7 +204,15 @@ public final class MatchUtil { return result; } - public static Ipv4Address longToIpv4Address(Long value) { + 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++) {