2 * Copyright (c) 2014, 2015 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
9 package org.opendaylight.openflowjava.nx;
11 import org.opendaylight.openflowjava.nx.api.NiciraExtensionCodecRegistrator;
12 import org.opendaylight.openflowjava.nx.codec.action.MultipathCodec;
13 import org.opendaylight.openflowjava.nx.codec.action.NiciraActionCodecs;
14 import org.opendaylight.openflowjava.nx.codec.action.OutputRegCodec;
15 import org.opendaylight.openflowjava.nx.codec.action.RegLoadCodec;
16 import org.opendaylight.openflowjava.nx.codec.action.RegMoveCodec;
17 import org.opendaylight.openflowjava.nx.codec.action.ResubmitCodec;
18 import org.opendaylight.openflowjava.nx.codec.action.SetNshc1Codec;
19 import org.opendaylight.openflowjava.nx.codec.action.SetNshc2Codec;
20 import org.opendaylight.openflowjava.nx.codec.action.SetNshc3Codec;
21 import org.opendaylight.openflowjava.nx.codec.action.SetNshc4Codec;
22 import org.opendaylight.openflowjava.nx.codec.action.SetNsiCodec;
23 import org.opendaylight.openflowjava.nx.codec.action.SetNspCodec;
24 import org.opendaylight.openflowjava.nx.codec.match.ArpOpCodec;
25 import org.opendaylight.openflowjava.nx.codec.match.ArpShaCodec;
26 import org.opendaylight.openflowjava.nx.codec.match.ArpSpaCodec;
27 import org.opendaylight.openflowjava.nx.codec.match.ArpThaCodec;
28 import org.opendaylight.openflowjava.nx.codec.match.ArpTpaCodec;
29 import org.opendaylight.openflowjava.nx.codec.match.EthDstCodec;
30 import org.opendaylight.openflowjava.nx.codec.match.EthSrcCodec;
31 import org.opendaylight.openflowjava.nx.codec.match.EthTypeCodec;
32 import org.opendaylight.openflowjava.nx.codec.match.Nshc1Codec;
33 import org.opendaylight.openflowjava.nx.codec.match.Nshc2Codec;
34 import org.opendaylight.openflowjava.nx.codec.match.Nshc3Codec;
35 import org.opendaylight.openflowjava.nx.codec.match.Nshc4Codec;
36 import org.opendaylight.openflowjava.nx.codec.match.NsiCodec;
37 import org.opendaylight.openflowjava.nx.codec.match.NspCodec;
38 import org.opendaylight.openflowjava.nx.codec.match.Reg0Codec;
39 import org.opendaylight.openflowjava.nx.codec.match.Reg1Codec;
40 import org.opendaylight.openflowjava.nx.codec.match.Reg2Codec;
41 import org.opendaylight.openflowjava.nx.codec.match.Reg3Codec;
42 import org.opendaylight.openflowjava.nx.codec.match.Reg4Codec;
43 import org.opendaylight.openflowjava.nx.codec.match.Reg5Codec;
44 import org.opendaylight.openflowjava.nx.codec.match.Reg6Codec;
45 import org.opendaylight.openflowjava.nx.codec.match.Reg7Codec;
46 import org.opendaylight.openflowjava.nx.codec.match.TunIdCodec;
47 import org.opendaylight.openflowjava.nx.codec.match.TunIpv4DstCodec;
48 import org.opendaylight.openflowjava.nx.codec.match.TunIpv4SrcCodec;
50 import com.google.common.base.Preconditions;
52 public class NiciraExtensionsRegistrator implements AutoCloseable {
54 private final NiciraExtensionCodecRegistrator registrator;
57 * @param registrator cannot be null
59 public NiciraExtensionsRegistrator(NiciraExtensionCodecRegistrator registrator) {
60 this.registrator = Preconditions.checkNotNull(registrator);
63 public void registerNiciraExtensions() {
64 registrator.registerActionDeserializer(RegLoadCodec.DESERIALIZER_KEY, NiciraActionCodecs.REG_LOAD_CODEC);
65 registrator.registerActionSerializer(RegLoadCodec.SERIALIZER_KEY, NiciraActionCodecs.REG_LOAD_CODEC);
66 registrator.registerActionDeserializer(RegMoveCodec.DESERIALIZER_KEY, NiciraActionCodecs.REG_MOVE_CODEC);
67 registrator.registerActionSerializer(RegMoveCodec.SERIALIZER_KEY, NiciraActionCodecs.REG_MOVE_CODEC);
68 registrator.registerActionDeserializer(OutputRegCodec.DESERIALIZER_KEY, NiciraActionCodecs.OUTPUT_REG_CODEC);
69 registrator.registerActionSerializer(OutputRegCodec.SERIALIZER_KEY, NiciraActionCodecs.OUTPUT_REG_CODEC);
70 registrator.registerActionSerializer(ResubmitCodec.SERIALIZER_KEY, NiciraActionCodecs.RESUBMIT_CODEC);
71 registrator.registerActionDeserializer(ResubmitCodec.DESERIALIZER_KEY, NiciraActionCodecs.RESUBMIT_CODEC);
72 registrator.registerActionDeserializer(ResubmitCodec.TABLE_DESERIALIZER_KEY, NiciraActionCodecs.RESUBMIT_CODEC);
73 registrator.registerActionSerializer(MultipathCodec.SERIALIZER_KEY, NiciraActionCodecs.MULTIPATH_CODEC);
74 registrator.registerActionDeserializer(MultipathCodec.DESERIALIZER_KEY, NiciraActionCodecs.MULTIPATH_CODEC);
75 registrator.registerActionDeserializer(SetNspCodec.DESERIALIZER_KEY, NiciraActionCodecs.SET_NSP_CODEC);
76 registrator.registerActionSerializer(SetNspCodec.SERIALIZER_KEY, NiciraActionCodecs.SET_NSP_CODEC);
77 registrator.registerActionDeserializer(SetNshc1Codec.DESERIALIZER_KEY, NiciraActionCodecs.SET_NSC1_CODEC);
78 registrator.registerActionSerializer(SetNshc1Codec.SERIALIZER_KEY, NiciraActionCodecs.SET_NSC1_CODEC);
79 registrator.registerActionDeserializer(SetNshc2Codec.DESERIALIZER_KEY, NiciraActionCodecs.SET_NSC2_CODEC);
80 registrator.registerActionSerializer(SetNshc2Codec.SERIALIZER_KEY, NiciraActionCodecs.SET_NSC2_CODEC);
81 registrator.registerActionDeserializer(SetNshc3Codec.DESERIALIZER_KEY, NiciraActionCodecs.SET_NSC3_CODEC);
82 registrator.registerActionSerializer(SetNshc3Codec.SERIALIZER_KEY, NiciraActionCodecs.SET_NSC3_CODEC);
83 registrator.registerActionDeserializer(SetNshc4Codec.DESERIALIZER_KEY, NiciraActionCodecs.SET_NSC4_CODEC);
84 registrator.registerActionSerializer(SetNshc4Codec.SERIALIZER_KEY, NiciraActionCodecs.SET_NSC4_CODEC);
85 registrator.registerActionDeserializer(SetNsiCodec.DESERIALIZER_KEY, NiciraActionCodecs.SET_NSI_CODEC);
86 registrator.registerActionSerializer(SetNsiCodec.SERIALIZER_KEY, NiciraActionCodecs.SET_NSI_CODEC);
88 registrator.registerMatchEntrySerializer(Reg0Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG0_CODEC);
89 registrator.registerMatchEntryDeserializer(Reg0Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG0_CODEC);
90 registrator.registerMatchEntrySerializer(Reg1Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG1_CODEC);
91 registrator.registerMatchEntryDeserializer(Reg1Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG1_CODEC);
92 registrator.registerMatchEntrySerializer(Reg2Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG2_CODEC);
93 registrator.registerMatchEntryDeserializer(Reg2Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG2_CODEC);
94 registrator.registerMatchEntrySerializer(Reg3Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG3_CODEC);
95 registrator.registerMatchEntryDeserializer(Reg3Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG3_CODEC);
96 registrator.registerMatchEntrySerializer(Reg4Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG4_CODEC);
97 registrator.registerMatchEntryDeserializer(Reg4Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG4_CODEC);
98 registrator.registerMatchEntrySerializer(Reg5Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG5_CODEC);
99 registrator.registerMatchEntryDeserializer(Reg5Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG5_CODEC);
100 registrator.registerMatchEntrySerializer(Reg6Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG6_CODEC);
101 registrator.registerMatchEntryDeserializer(Reg6Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG6_CODEC);
102 registrator.registerMatchEntrySerializer(Reg7Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG7_CODEC);
103 registrator.registerMatchEntryDeserializer(Reg7Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG7_CODEC);
104 registrator.registerMatchEntrySerializer(TunIdCodec.SERIALIZER_KEY, NiciraMatchCodecs.TUN_ID_CODEC);
105 registrator.registerMatchEntryDeserializer(TunIdCodec.DESERIALIZER_KEY, NiciraMatchCodecs.TUN_ID_CODEC);
106 registrator.registerMatchEntrySerializer(ArpOpCodec.SERIALIZER_KEY, NiciraMatchCodecs.ARP_OP_CODEC);
107 registrator.registerMatchEntryDeserializer(ArpOpCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ARP_OP_CODEC);
108 registrator.registerMatchEntrySerializer(ArpShaCodec.SERIALIZER_KEY, NiciraMatchCodecs.ARP_SHA_CODEC);
109 registrator.registerMatchEntryDeserializer(ArpShaCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ARP_SHA_CODEC);
110 registrator.registerMatchEntrySerializer(ArpSpaCodec.SERIALIZER_KEY, NiciraMatchCodecs.ARP_SPA_CODEC);
111 registrator.registerMatchEntryDeserializer(ArpSpaCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ARP_SPA_CODEC);
112 registrator.registerMatchEntrySerializer(ArpThaCodec.SERIALIZER_KEY, NiciraMatchCodecs.ARP_THA_CODEC);
113 registrator.registerMatchEntryDeserializer(ArpThaCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ARP_THA_CODEC);
114 registrator.registerMatchEntrySerializer(ArpTpaCodec.SERIALIZER_KEY, NiciraMatchCodecs.ARP_TPA_CODEC);
115 registrator.registerMatchEntryDeserializer(ArpTpaCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ARP_TPA_CODEC);
116 registrator.registerMatchEntrySerializer(EthDstCodec.SERIALIZER_KEY, NiciraMatchCodecs.ETH_DST_CODEC);
117 registrator.registerMatchEntryDeserializer(EthDstCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ETH_DST_CODEC);
118 registrator.registerMatchEntrySerializer(EthSrcCodec.SERIALIZER_KEY, NiciraMatchCodecs.ETH_SRC_CODEC);
119 registrator.registerMatchEntryDeserializer(EthSrcCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ETH_SRC_CODEC);
120 registrator.registerMatchEntrySerializer(EthTypeCodec.SERIALIZER_KEY, NiciraMatchCodecs.ETH_TYPE_CODEC);
121 registrator.registerMatchEntryDeserializer(EthTypeCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ETH_TYPE_CODEC);
122 registrator.registerMatchEntrySerializer(NspCodec.SERIALIZER_KEY, NiciraMatchCodecs.NSP_CODEC);
123 registrator.registerMatchEntryDeserializer(NspCodec.DESERIALIZER_KEY, NiciraMatchCodecs.NSP_CODEC);
124 registrator.registerMatchEntrySerializer(Nshc1Codec.SERIALIZER_KEY, NiciraMatchCodecs.NSC1_CODEC);
125 registrator.registerMatchEntryDeserializer(Nshc1Codec.DESERIALIZER_KEY, NiciraMatchCodecs.NSC1_CODEC);
126 registrator.registerMatchEntrySerializer(Nshc2Codec.SERIALIZER_KEY, NiciraMatchCodecs.NSC2_CODEC);
127 registrator.registerMatchEntryDeserializer(Nshc2Codec.DESERIALIZER_KEY, NiciraMatchCodecs.NSC2_CODEC);
128 registrator.registerMatchEntrySerializer(Nshc3Codec.SERIALIZER_KEY, NiciraMatchCodecs.NSC3_CODEC);
129 registrator.registerMatchEntryDeserializer(Nshc3Codec.DESERIALIZER_KEY, NiciraMatchCodecs.NSC3_CODEC);
130 registrator.registerMatchEntrySerializer(Nshc4Codec.SERIALIZER_KEY, NiciraMatchCodecs.NSC4_CODEC);
131 registrator.registerMatchEntryDeserializer(Nshc4Codec.DESERIALIZER_KEY, NiciraMatchCodecs.NSC4_CODEC);
132 registrator.registerMatchEntrySerializer(NsiCodec.SERIALIZER_KEY, NiciraMatchCodecs.NSI_CODEC);
133 registrator.registerMatchEntryDeserializer(NsiCodec.DESERIALIZER_KEY, NiciraMatchCodecs.NSI_CODEC);
134 registrator.registerMatchEntrySerializer(TunIpv4DstCodec.SERIALIZER_KEY, NiciraMatchCodecs.TUN_IPV4_DST_CODEC);
135 registrator.registerMatchEntryDeserializer(TunIpv4DstCodec.DESERIALIZER_KEY, NiciraMatchCodecs.TUN_IPV4_DST_CODEC);
136 registrator.registerMatchEntrySerializer(TunIpv4SrcCodec.SERIALIZER_KEY, NiciraMatchCodecs.TUN_IPV4_SRC_CODEC);
137 registrator.registerMatchEntryDeserializer(TunIpv4SrcCodec.DESERIALIZER_KEY, NiciraMatchCodecs.TUN_IPV4_SRC_CODEC);
140 public void unregisterExtensions() {
141 registrator.unregisterActionDeserializer(RegLoadCodec.DESERIALIZER_KEY);
142 registrator.unregisterActionSerializer(RegLoadCodec.SERIALIZER_KEY);
143 registrator.unregisterActionDeserializer(RegMoveCodec.DESERIALIZER_KEY);
144 registrator.unregisterActionSerializer(RegMoveCodec.SERIALIZER_KEY);
145 registrator.unregisterActionDeserializer(OutputRegCodec.DESERIALIZER_KEY);
146 registrator.unregisterActionSerializer(OutputRegCodec.SERIALIZER_KEY);
147 registrator.unregisterActionSerializer(ResubmitCodec.SERIALIZER_KEY);
148 registrator.unregisterActionDeserializer(ResubmitCodec.TABLE_DESERIALIZER_KEY);
149 registrator.unregisterActionDeserializer(ResubmitCodec.DESERIALIZER_KEY);
150 registrator.unregisterActionSerializer(MultipathCodec.SERIALIZER_KEY);
151 registrator.unregisterActionDeserializer(MultipathCodec.DESERIALIZER_KEY);
152 registrator.unregisterActionDeserializer(SetNsiCodec.DESERIALIZER_KEY);
153 registrator.unregisterActionSerializer(SetNsiCodec.SERIALIZER_KEY);
154 registrator.unregisterActionDeserializer(SetNspCodec.DESERIALIZER_KEY);
155 registrator.unregisterActionSerializer(SetNspCodec.SERIALIZER_KEY);
156 registrator.unregisterActionSerializer(SetNshc1Codec.SERIALIZER_KEY);
157 registrator.unregisterActionDeserializer(SetNshc2Codec.DESERIALIZER_KEY);
158 registrator.unregisterActionSerializer(SetNshc2Codec.SERIALIZER_KEY);
159 registrator.unregisterActionDeserializer(SetNshc3Codec.DESERIALIZER_KEY);
160 registrator.unregisterActionSerializer(SetNshc3Codec.SERIALIZER_KEY);
161 registrator.unregisterActionDeserializer(SetNshc4Codec.DESERIALIZER_KEY);
162 registrator.unregisterActionSerializer(SetNshc4Codec.SERIALIZER_KEY);
164 registrator.unregisterMatchEntrySerializer(Reg0Codec.SERIALIZER_KEY);
165 registrator.unregisterMatchEntryDeserializer(Reg0Codec.DESERIALIZER_KEY);
166 registrator.unregisterMatchEntrySerializer(Reg1Codec.SERIALIZER_KEY);
167 registrator.unregisterMatchEntryDeserializer(Reg1Codec.DESERIALIZER_KEY);
168 registrator.unregisterMatchEntrySerializer(Reg2Codec.SERIALIZER_KEY);
169 registrator.unregisterMatchEntryDeserializer(Reg2Codec.DESERIALIZER_KEY);
170 registrator.unregisterMatchEntrySerializer(Reg3Codec.SERIALIZER_KEY);
171 registrator.unregisterMatchEntryDeserializer(Reg3Codec.DESERIALIZER_KEY);
172 registrator.unregisterMatchEntrySerializer(Reg4Codec.SERIALIZER_KEY);
173 registrator.unregisterMatchEntryDeserializer(Reg4Codec.DESERIALIZER_KEY);
174 registrator.unregisterMatchEntrySerializer(Reg5Codec.SERIALIZER_KEY);
175 registrator.unregisterMatchEntryDeserializer(Reg5Codec.DESERIALIZER_KEY);
176 registrator.unregisterMatchEntrySerializer(Reg6Codec.SERIALIZER_KEY);
177 registrator.unregisterMatchEntryDeserializer(Reg6Codec.DESERIALIZER_KEY);
178 registrator.unregisterMatchEntrySerializer(Reg7Codec.SERIALIZER_KEY);
179 registrator.unregisterMatchEntryDeserializer(Reg7Codec.DESERIALIZER_KEY);
180 registrator.unregisterMatchEntrySerializer(TunIdCodec.SERIALIZER_KEY);
181 registrator.unregisterMatchEntryDeserializer(TunIdCodec.DESERIALIZER_KEY);
182 registrator.unregisterMatchEntrySerializer(ArpOpCodec.SERIALIZER_KEY);
183 registrator.unregisterMatchEntryDeserializer(ArpOpCodec.DESERIALIZER_KEY);
184 registrator.unregisterMatchEntrySerializer(ArpShaCodec.SERIALIZER_KEY);
185 registrator.unregisterMatchEntryDeserializer(ArpShaCodec.DESERIALIZER_KEY);
186 registrator.unregisterMatchEntrySerializer(ArpSpaCodec.SERIALIZER_KEY);
187 registrator.unregisterMatchEntryDeserializer(ArpSpaCodec.DESERIALIZER_KEY);
188 registrator.unregisterMatchEntrySerializer(ArpThaCodec.SERIALIZER_KEY);
189 registrator.unregisterMatchEntryDeserializer(ArpThaCodec.DESERIALIZER_KEY);
190 registrator.unregisterMatchEntrySerializer(ArpTpaCodec.SERIALIZER_KEY);
191 registrator.unregisterMatchEntryDeserializer(ArpTpaCodec.DESERIALIZER_KEY);
192 registrator.unregisterMatchEntrySerializer(EthDstCodec.SERIALIZER_KEY);
193 registrator.unregisterMatchEntryDeserializer(EthDstCodec.DESERIALIZER_KEY);
194 registrator.unregisterMatchEntrySerializer(EthSrcCodec.SERIALIZER_KEY);
195 registrator.unregisterMatchEntryDeserializer(EthSrcCodec.DESERIALIZER_KEY);
196 registrator.unregisterMatchEntrySerializer(EthTypeCodec.SERIALIZER_KEY);
197 registrator.unregisterMatchEntryDeserializer(EthTypeCodec.DESERIALIZER_KEY);
198 registrator.unregisterMatchEntrySerializer(NspCodec.SERIALIZER_KEY);
199 registrator.unregisterMatchEntryDeserializer(NspCodec.DESERIALIZER_KEY);
200 registrator.unregisterMatchEntrySerializer(NsiCodec.SERIALIZER_KEY);
201 registrator.unregisterMatchEntryDeserializer(NsiCodec.DESERIALIZER_KEY);
202 registrator.unregisterMatchEntrySerializer(Nshc1Codec.SERIALIZER_KEY);
203 registrator.unregisterMatchEntryDeserializer(Nshc1Codec.DESERIALIZER_KEY);
204 registrator.unregisterMatchEntrySerializer(Nshc2Codec.SERIALIZER_KEY);
205 registrator.unregisterMatchEntryDeserializer(Nshc2Codec.DESERIALIZER_KEY);
206 registrator.unregisterMatchEntrySerializer(Nshc3Codec.SERIALIZER_KEY);
207 registrator.unregisterMatchEntryDeserializer(Nshc3Codec.DESERIALIZER_KEY);
208 registrator.unregisterMatchEntrySerializer(Nshc4Codec.SERIALIZER_KEY);
209 registrator.unregisterMatchEntryDeserializer(Nshc4Codec.DESERIALIZER_KEY);
210 registrator.unregisterMatchEntrySerializer(TunIpv4DstCodec.SERIALIZER_KEY);
211 registrator.unregisterMatchEntryDeserializer(TunIpv4DstCodec.DESERIALIZER_KEY);
212 registrator.unregisterMatchEntrySerializer(TunIpv4SrcCodec.SERIALIZER_KEY);
213 registrator.unregisterMatchEntryDeserializer(TunIpv4SrcCodec.DESERIALIZER_KEY);
217 public void close() throws Exception {
218 unregisterExtensions();