Created experimenter subtype for vendor's actions
[openflowjava.git] / openflow-extension-nicira / src / main / java / org / opendaylight / openflowjava / nx / NiciraExtensionsRegistrator.java
1 package org.opendaylight.openflowjava.nx;
2
3 import java.util.List;
4
5 import org.opendaylight.openflowjava.nx.codec.action.ActionDeserializer;
6 import org.opendaylight.openflowjava.nx.codec.action.NiciraActionCodecs;
7 import org.opendaylight.openflowjava.nx.codec.action.RegLoadCodec;
8 import org.opendaylight.openflowjava.nx.codec.action.RegMoveCodec;
9 import org.opendaylight.openflowjava.nx.codec.match.ArpOpCodec;
10 import org.opendaylight.openflowjava.nx.codec.match.ArpShaCodec;
11 import org.opendaylight.openflowjava.nx.codec.match.ArpSpaCodec;
12 import org.opendaylight.openflowjava.nx.codec.match.ArpThaCodec;
13 import org.opendaylight.openflowjava.nx.codec.match.ArpTpaCodec;
14 import org.opendaylight.openflowjava.nx.codec.match.EthDstCodec;
15 import org.opendaylight.openflowjava.nx.codec.match.EthSrcCodec;
16 import org.opendaylight.openflowjava.nx.codec.match.EthTypeCodec;
17 import org.opendaylight.openflowjava.nx.codec.match.Reg0Codec;
18 import org.opendaylight.openflowjava.nx.codec.match.Reg1Codec;
19 import org.opendaylight.openflowjava.nx.codec.match.Reg2Codec;
20 import org.opendaylight.openflowjava.nx.codec.match.Reg3Codec;
21 import org.opendaylight.openflowjava.nx.codec.match.Reg4Codec;
22 import org.opendaylight.openflowjava.nx.codec.match.Reg5Codec;
23 import org.opendaylight.openflowjava.nx.codec.match.Reg6Codec;
24 import org.opendaylight.openflowjava.nx.codec.match.Reg7Codec;
25 import org.opendaylight.openflowjava.nx.codec.match.TunIdCodec;
26 import org.opendaylight.openflowjava.nx.codec.match.TunIpv4DstCodec;
27 import org.opendaylight.openflowjava.nx.codec.match.TunIpv4SrcCodec;
28 import org.opendaylight.openflowjava.protocol.spi.connection.SwitchConnectionProvider;
29
30 import com.google.common.base.Preconditions;
31
32 public class NiciraExtensionsRegistrator implements AutoCloseable {
33
34     private final List<SwitchConnectionProvider> providers;
35
36     /**
37      * @param providers cannot be null
38      */
39     public NiciraExtensionsRegistrator(List<SwitchConnectionProvider> providers) {
40         Preconditions.checkNotNull(providers);
41         this.providers = providers;
42     }
43
44     public void registerNiciraExtensions() {
45         for (SwitchConnectionProvider provider : providers) {
46             provider.registerActionDeserializer(ActionDeserializer.DESERIALIZER_KEY, NiciraActionCodecs.ACTION_DESERIALIZER);
47             provider.registerActionSerializer(RegLoadCodec.SERIALIZER_KEY, NiciraActionCodecs.REG_LOAD_CODEC);
48             provider.registerActionSerializer(RegMoveCodec.SERIALIZER_KEY, NiciraActionCodecs.REG_MOVE_CODEC);
49             provider.registerMatchEntrySerializer(Reg0Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG0_CODEC);
50             provider.registerMatchEntryDeserializer(Reg0Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG0_CODEC);
51             provider.registerMatchEntrySerializer(Reg1Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG1_CODEC);
52             provider.registerMatchEntryDeserializer(Reg1Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG1_CODEC);
53             provider.registerMatchEntrySerializer(Reg2Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG2_CODEC);
54             provider.registerMatchEntryDeserializer(Reg2Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG2_CODEC);
55             provider.registerMatchEntrySerializer(Reg3Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG3_CODEC);
56             provider.registerMatchEntryDeserializer(Reg3Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG3_CODEC);
57             provider.registerMatchEntrySerializer(Reg4Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG4_CODEC);
58             provider.registerMatchEntryDeserializer(Reg4Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG4_CODEC);
59             provider.registerMatchEntrySerializer(Reg5Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG5_CODEC);
60             provider.registerMatchEntryDeserializer(Reg5Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG5_CODEC);
61             provider.registerMatchEntrySerializer(Reg6Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG6_CODEC);
62             provider.registerMatchEntryDeserializer(Reg6Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG6_CODEC);
63             provider.registerMatchEntrySerializer(Reg7Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG7_CODEC);
64             provider.registerMatchEntryDeserializer(Reg7Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG7_CODEC);
65             provider.registerMatchEntrySerializer(TunIdCodec.SERIALIZER_KEY, NiciraMatchCodecs.TUN_ID_CODEC);
66             provider.registerMatchEntryDeserializer(TunIdCodec.DESERIALIZER_KEY, NiciraMatchCodecs.TUN_ID_CODEC);
67             provider.registerMatchEntrySerializer(ArpOpCodec.SERIALIZER_KEY, NiciraMatchCodecs.ARP_OP_CODEC);
68             provider.registerMatchEntryDeserializer(ArpOpCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ARP_OP_CODEC);
69             provider.registerMatchEntrySerializer(ArpShaCodec.SERIALIZER_KEY, NiciraMatchCodecs.ARP_SHA_CODEC);
70             provider.registerMatchEntryDeserializer(ArpShaCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ARP_SHA_CODEC);
71             provider.registerMatchEntrySerializer(ArpSpaCodec.SERIALIZER_KEY, NiciraMatchCodecs.ARP_SPA_CODEC);
72             provider.registerMatchEntryDeserializer(ArpSpaCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ARP_SPA_CODEC);
73             provider.registerMatchEntrySerializer(ArpThaCodec.SERIALIZER_KEY, NiciraMatchCodecs.ARP_THA_CODEC);
74             provider.registerMatchEntryDeserializer(ArpThaCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ARP_THA_CODEC);
75             provider.registerMatchEntrySerializer(ArpTpaCodec.SERIALIZER_KEY, NiciraMatchCodecs.ARP_TPA_CODEC);
76             provider.registerMatchEntryDeserializer(ArpTpaCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ARP_TPA_CODEC);
77             provider.registerMatchEntrySerializer(EthDstCodec.SERIALIZER_KEY, NiciraMatchCodecs.ETH_DST_CODEC);
78             provider.registerMatchEntryDeserializer(EthDstCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ETH_DST_CODEC);
79             provider.registerMatchEntrySerializer(EthSrcCodec.SERIALIZER_KEY, NiciraMatchCodecs.ETH_SRC_CODEC);
80             provider.registerMatchEntryDeserializer(EthSrcCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ETH_SRC_CODEC);
81             provider.registerMatchEntrySerializer(TunIpv4DstCodec.SERIALIZER_KEY, NiciraMatchCodecs.TUN_IPV4_DST_CODEC);
82             provider.registerMatchEntryDeserializer(TunIpv4DstCodec.DESERIALIZER_KEY, NiciraMatchCodecs.TUN_IPV4_DST_CODEC);
83             provider.registerMatchEntrySerializer(TunIpv4SrcCodec.SERIALIZER_KEY, NiciraMatchCodecs.TUN_IPV4_SRC_CODEC);
84             provider.registerMatchEntryDeserializer(TunIpv4SrcCodec.DESERIALIZER_KEY, NiciraMatchCodecs.TUN_IPV4_SRC_CODEC);
85             provider.registerMatchEntrySerializer(EthTypeCodec.SERIALIZER_KEY, NiciraMatchCodecs.ETH_TYPE_CODEC);
86             provider.registerMatchEntryDeserializer(EthTypeCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ETH_TYPE_CODEC);
87         }
88     }
89
90     public void unregisterExtensions() {
91         for (SwitchConnectionProvider provider : providers) {
92             provider.unregisterDeserializer(ActionDeserializer.DESERIALIZER_KEY);
93             provider.unregisterSerializer(RegLoadCodec.SERIALIZER_KEY);
94             provider.unregisterSerializer(RegMoveCodec.SERIALIZER_KEY);
95             provider.unregisterSerializer(Reg0Codec.SERIALIZER_KEY);
96             provider.unregisterDeserializer(Reg0Codec.DESERIALIZER_KEY);
97             provider.unregisterSerializer(Reg1Codec.SERIALIZER_KEY);
98             provider.unregisterDeserializer(Reg1Codec.DESERIALIZER_KEY);
99             provider.unregisterSerializer(Reg2Codec.SERIALIZER_KEY);
100             provider.unregisterDeserializer(Reg2Codec.DESERIALIZER_KEY);
101             provider.unregisterSerializer(Reg3Codec.SERIALIZER_KEY);
102             provider.unregisterDeserializer(Reg3Codec.DESERIALIZER_KEY);
103             provider.unregisterSerializer(Reg4Codec.SERIALIZER_KEY);
104             provider.unregisterDeserializer(Reg4Codec.DESERIALIZER_KEY);
105             provider.unregisterSerializer(Reg5Codec.SERIALIZER_KEY);
106             provider.unregisterDeserializer(Reg5Codec.DESERIALIZER_KEY);
107             provider.unregisterSerializer(Reg6Codec.SERIALIZER_KEY);
108             provider.unregisterDeserializer(Reg6Codec.DESERIALIZER_KEY);
109             provider.unregisterSerializer(Reg7Codec.SERIALIZER_KEY);
110             provider.unregisterDeserializer(Reg7Codec.DESERIALIZER_KEY);
111             provider.unregisterSerializer(TunIdCodec.SERIALIZER_KEY);
112             provider.unregisterDeserializer(TunIdCodec.DESERIALIZER_KEY);
113             provider.unregisterSerializer(ArpOpCodec.SERIALIZER_KEY);
114             provider.unregisterDeserializer(ArpOpCodec.DESERIALIZER_KEY);
115             provider.unregisterSerializer(ArpShaCodec.SERIALIZER_KEY);
116             provider.unregisterDeserializer(ArpShaCodec.DESERIALIZER_KEY);
117             provider.unregisterSerializer(ArpSpaCodec.SERIALIZER_KEY);
118             provider.unregisterDeserializer(ArpSpaCodec.DESERIALIZER_KEY);
119             provider.unregisterSerializer(ArpThaCodec.SERIALIZER_KEY);
120             provider.unregisterDeserializer(ArpThaCodec.DESERIALIZER_KEY);
121             provider.unregisterSerializer(ArpTpaCodec.SERIALIZER_KEY);
122             provider.unregisterDeserializer(ArpTpaCodec.DESERIALIZER_KEY);
123             provider.unregisterSerializer(EthDstCodec.SERIALIZER_KEY);
124             provider.unregisterDeserializer(EthDstCodec.DESERIALIZER_KEY);
125             provider.unregisterSerializer(EthSrcCodec.SERIALIZER_KEY);
126             provider.unregisterDeserializer(EthSrcCodec.DESERIALIZER_KEY);
127             provider.unregisterSerializer(TunIpv4DstCodec.SERIALIZER_KEY);
128             provider.unregisterDeserializer(TunIpv4DstCodec.DESERIALIZER_KEY);
129             provider.unregisterSerializer(TunIpv4SrcCodec.SERIALIZER_KEY);
130             provider.unregisterDeserializer(TunIpv4SrcCodec.DESERIALIZER_KEY);
131             provider.unregisterSerializer(EthTypeCodec.SERIALIZER_KEY);
132             provider.unregisterDeserializer(EthTypeCodec.DESERIALIZER_KEY);
133         }
134     }
135
136     @Override
137     public void close() throws Exception {
138         unregisterExtensions();
139     }
140
141 }