2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match;
10 import java.util.HashSet;
13 import org.opendaylight.openflowjava.nx.api.NiciraConstants;
14 import org.opendaylight.openflowplugin.extension.api.GroupingResolver;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.ExperimenterId;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchField;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OxmClassBase;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchField;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntry;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntryBuilder;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.MatchEntryValue;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.general.extension.grouping.Extension;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNodesNodeTableFlow;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNotifPacketIn;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNotifSwitchFlowRemoved;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNotifUpdateFlowStats;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchRpcAddFlow;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchRpcRemoveFlow;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchRpcUpdateFlowOriginal;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchRpcUpdateFlowUpdated;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxArpShaGrouping;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxArpThaGrouping;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxRegGrouping;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxTunIdGrouping;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxTunIpv4DstGrouping;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxTunIpv4SrcGrouping;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfArpOpGrouping;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfArpSpaGrouping;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfArpTpaGrouping;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfEthDstGrouping;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfEthSrcGrouping;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfEthTypeGrouping;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNspGrouping;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNsiGrouping;
45 import org.opendaylight.yangtools.yang.binding.Augmentation;
51 public class MatchUtil {
53 private final static Set<Class<? extends Augmentation<Extension>>> augmentationsOfExtension = new HashSet<>();
54 public final static GroupingResolver<NxmNxRegGrouping, Extension> regResolver = new GroupingResolver<>(
55 NxmNxRegGrouping.class);
56 public final static GroupingResolver<NxmNxTunIdGrouping, Extension> tunIdResolver = new GroupingResolver<>(
57 NxmNxTunIdGrouping.class);
58 public final static GroupingResolver<NxmNxArpShaGrouping, Extension> arpShaResolver = new GroupingResolver<>(
59 NxmNxArpShaGrouping.class);
60 public final static GroupingResolver<NxmNxArpThaGrouping, Extension> arpThaResolver = new GroupingResolver<>(
61 NxmNxArpThaGrouping.class);
62 public final static GroupingResolver<NxmOfArpOpGrouping, Extension> arpOpResolver = new GroupingResolver<>(
63 NxmOfArpOpGrouping.class);
64 public final static GroupingResolver<NxmOfArpSpaGrouping, Extension> arpSpaResolver = new GroupingResolver<>(
65 NxmOfArpSpaGrouping.class);
66 public final static GroupingResolver<NxmOfArpTpaGrouping, Extension> arpTpaResolver = new GroupingResolver<>(
67 NxmOfArpTpaGrouping.class);
68 public final static GroupingResolver<NxmNxTunIpv4DstGrouping, Extension> tunIpv4DstResolver = new GroupingResolver<>(
69 NxmNxTunIpv4DstGrouping.class);
70 public final static GroupingResolver<NxmNxTunIpv4SrcGrouping, Extension> tunIpv4SrcResolver = new GroupingResolver<>(
71 NxmNxTunIpv4SrcGrouping.class);
72 public final static GroupingResolver<NxmOfEthDstGrouping, Extension> ethDstResolver = new GroupingResolver<>(
73 NxmOfEthDstGrouping.class);
74 public final static GroupingResolver<NxmOfEthSrcGrouping, Extension> ethSrcResolver = new GroupingResolver<>(
75 NxmOfEthSrcGrouping.class);
76 public final static GroupingResolver<NxmOfEthTypeGrouping, Extension> ethTypeResolver = new GroupingResolver<>(
77 NxmOfEthTypeGrouping.class);
78 public final static GroupingResolver<NxmNxNsiGrouping, Extension> nsiResolver = new GroupingResolver<>(
79 NxmNxNsiGrouping.class);
80 public final static GroupingResolver<NxmNxNspGrouping, Extension> nspResolver = new GroupingResolver<>(
81 NxmNxNspGrouping.class);
84 augmentationsOfExtension.add(NxAugMatchRpcAddFlow.class);
85 augmentationsOfExtension.add(NxAugMatchRpcRemoveFlow.class);
86 augmentationsOfExtension.add(NxAugMatchRpcUpdateFlowOriginal.class);
87 augmentationsOfExtension.add(NxAugMatchRpcUpdateFlowUpdated.class);
88 augmentationsOfExtension.add(NxAugMatchNodesNodeTableFlow.class);
89 augmentationsOfExtension.add(NxAugMatchNotifSwitchFlowRemoved.class);
90 augmentationsOfExtension.add(NxAugMatchNotifPacketIn.class);
91 augmentationsOfExtension.add(NxAugMatchNotifUpdateFlowStats.class);
92 regResolver.setAugmentations(augmentationsOfExtension);
93 tunIdResolver.setAugmentations(augmentationsOfExtension);
94 arpShaResolver.setAugmentations(augmentationsOfExtension);
95 arpThaResolver.setAugmentations(augmentationsOfExtension);
96 arpOpResolver.setAugmentations(augmentationsOfExtension);
97 arpSpaResolver.setAugmentations(augmentationsOfExtension);
98 arpTpaResolver.setAugmentations(augmentationsOfExtension);
99 tunIpv4DstResolver.setAugmentations(augmentationsOfExtension);
100 tunIpv4SrcResolver.setAugmentations(augmentationsOfExtension);
101 ethDstResolver.setAugmentations(augmentationsOfExtension);
102 ethSrcResolver.setAugmentations(augmentationsOfExtension);
103 ethTypeResolver.setAugmentations(augmentationsOfExtension);
104 nspResolver.setAugmentations(augmentationsOfExtension);
105 nsiResolver.setAugmentations(augmentationsOfExtension);
109 public static MatchEntryBuilder createDefaultMatchEntryBuilder(Class<? extends MatchField> matchField,
110 Class<? extends OxmClassBase> oxmClass,
111 MatchEntryValue matchEntryValue){
112 MatchEntryBuilder matchEntryBuilder = new MatchEntryBuilder();
113 matchEntryBuilder.setHasMask(false);
114 matchEntryBuilder.setOxmMatchField(matchField);
115 matchEntryBuilder.setOxmClass(oxmClass);
116 matchEntryBuilder.setMatchEntryValue(matchEntryValue);
117 return matchEntryBuilder;