1 package org.opendaylight.openflowjava.nx;
5 import org.opendaylight.openflowjava.nx.codec.action.ActionCodec;
6 import org.opendaylight.openflowjava.nx.codec.match.ArpOpCodec;
7 import org.opendaylight.openflowjava.nx.codec.match.ArpShaCodec;
8 import org.opendaylight.openflowjava.nx.codec.match.ArpSpaCodec;
9 import org.opendaylight.openflowjava.nx.codec.match.ArpThaCodec;
10 import org.opendaylight.openflowjava.nx.codec.match.ArpTpaCodec;
11 import org.opendaylight.openflowjava.nx.codec.match.EthDstCodec;
12 import org.opendaylight.openflowjava.nx.codec.match.EthSrcCodec;
13 import org.opendaylight.openflowjava.nx.codec.match.Reg0Codec;
14 import org.opendaylight.openflowjava.nx.codec.match.Reg1Codec;
15 import org.opendaylight.openflowjava.nx.codec.match.Reg2Codec;
16 import org.opendaylight.openflowjava.nx.codec.match.Reg3Codec;
17 import org.opendaylight.openflowjava.nx.codec.match.Reg4Codec;
18 import org.opendaylight.openflowjava.nx.codec.match.Reg5Codec;
19 import org.opendaylight.openflowjava.nx.codec.match.Reg6Codec;
20 import org.opendaylight.openflowjava.nx.codec.match.Reg7Codec;
21 import org.opendaylight.openflowjava.nx.codec.match.TunIdCodec;
22 import org.opendaylight.openflowjava.nx.codec.match.TunIpv4DstCodec;
23 import org.opendaylight.openflowjava.nx.codec.match.TunIpv4SrcCodec;
24 import org.opendaylight.openflowjava.protocol.spi.connection.SwitchConnectionProvider;
26 import com.google.common.base.Preconditions;
28 public class NiciraExtensionsRegistrator implements AutoCloseable {
30 private static final ActionCodec ACTION_CODEC = new ActionCodec();
31 private final List<SwitchConnectionProvider> providers;
34 * @param providers cannot be null
36 public NiciraExtensionsRegistrator(List<SwitchConnectionProvider> providers) {
37 Preconditions.checkNotNull(providers);
38 this.providers = providers;
41 public void registerNiciraExtensions() {
42 for (SwitchConnectionProvider provider : providers) {
43 provider.registerActionDeserializer(ActionCodec.DESERIALIZER_KEY, ACTION_CODEC);
44 provider.registerActionSerializer(ActionCodec.SERIALIZER_KEY, ACTION_CODEC);
45 provider.registerMatchEntrySerializer(Reg0Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG0_CODEC);
46 provider.registerMatchEntryDeserializer(Reg0Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG0_CODEC);
47 provider.registerMatchEntrySerializer(Reg1Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG1_CODEC);
48 provider.registerMatchEntryDeserializer(Reg1Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG1_CODEC);
49 provider.registerMatchEntrySerializer(Reg2Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG2_CODEC);
50 provider.registerMatchEntryDeserializer(Reg2Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG2_CODEC);
51 provider.registerMatchEntrySerializer(Reg3Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG3_CODEC);
52 provider.registerMatchEntryDeserializer(Reg3Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG3_CODEC);
53 provider.registerMatchEntrySerializer(Reg4Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG4_CODEC);
54 provider.registerMatchEntryDeserializer(Reg4Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG4_CODEC);
55 provider.registerMatchEntrySerializer(Reg5Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG5_CODEC);
56 provider.registerMatchEntryDeserializer(Reg5Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG5_CODEC);
57 provider.registerMatchEntrySerializer(Reg6Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG6_CODEC);
58 provider.registerMatchEntryDeserializer(Reg6Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG6_CODEC);
59 provider.registerMatchEntrySerializer(Reg7Codec.SERIALIZER_KEY, NiciraMatchCodecs.REG7_CODEC);
60 provider.registerMatchEntryDeserializer(Reg7Codec.DESERIALIZER_KEY, NiciraMatchCodecs.REG7_CODEC);
61 provider.registerMatchEntrySerializer(TunIdCodec.SERIALIZER_KEY, NiciraMatchCodecs.TUN_ID_CODEC);
62 provider.registerMatchEntryDeserializer(TunIdCodec.DESERIALIZER_KEY, NiciraMatchCodecs.TUN_ID_CODEC);
63 provider.registerMatchEntrySerializer(ArpOpCodec.SERIALIZER_KEY, NiciraMatchCodecs.ARP_OP_CODEC);
64 provider.registerMatchEntryDeserializer(ArpOpCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ARP_OP_CODEC);
65 provider.registerMatchEntrySerializer(ArpShaCodec.SERIALIZER_KEY, NiciraMatchCodecs.ARP_SHA_CODEC);
66 provider.registerMatchEntryDeserializer(ArpShaCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ARP_SHA_CODEC);
67 provider.registerMatchEntrySerializer(ArpSpaCodec.SERIALIZER_KEY, NiciraMatchCodecs.ARP_SPA_CODEC);
68 provider.registerMatchEntryDeserializer(ArpSpaCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ARP_SPA_CODEC);
69 provider.registerMatchEntrySerializer(ArpThaCodec.SERIALIZER_KEY, NiciraMatchCodecs.ARP_THA_CODEC);
70 provider.registerMatchEntryDeserializer(ArpThaCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ARP_THA_CODEC);
71 provider.registerMatchEntrySerializer(ArpTpaCodec.SERIALIZER_KEY, NiciraMatchCodecs.ARP_TPA_CODEC);
72 provider.registerMatchEntryDeserializer(ArpTpaCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ARP_TPA_CODEC);
73 provider.registerMatchEntrySerializer(EthDstCodec.SERIALIZER_KEY, NiciraMatchCodecs.ETH_DST_CODEC);
74 provider.registerMatchEntryDeserializer(EthDstCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ETH_DST_CODEC);
75 provider.registerMatchEntrySerializer(EthSrcCodec.SERIALIZER_KEY, NiciraMatchCodecs.ETH_SRC_CODEC);
76 provider.registerMatchEntryDeserializer(EthSrcCodec.DESERIALIZER_KEY, NiciraMatchCodecs.ETH_SRC_CODEC);
77 provider.registerMatchEntrySerializer(TunIpv4DstCodec.SERIALIZER_KEY, NiciraMatchCodecs.TUN_IPV4_DST_CODEC);
78 provider.registerMatchEntryDeserializer(TunIpv4DstCodec.DESERIALIZER_KEY, NiciraMatchCodecs.TUN_IPV4_DST_CODEC);
79 provider.registerMatchEntrySerializer(TunIpv4SrcCodec.SERIALIZER_KEY, NiciraMatchCodecs.TUN_IPV4_SRC_CODEC);
80 provider.registerMatchEntryDeserializer(TunIpv4SrcCodec.DESERIALIZER_KEY, NiciraMatchCodecs.TUN_IPV4_SRC_CODEC);
84 public void unregisterExtensions() {
85 for (SwitchConnectionProvider provider : providers) {
86 provider.unregisterSerializer(ActionCodec.SERIALIZER_KEY);
87 provider.unregisterDeserializer(ActionCodec.DESERIALIZER_KEY);
88 provider.unregisterSerializer(Reg0Codec.SERIALIZER_KEY);
89 provider.unregisterDeserializer(Reg0Codec.DESERIALIZER_KEY);
90 provider.unregisterSerializer(Reg1Codec.SERIALIZER_KEY);
91 provider.unregisterDeserializer(Reg1Codec.DESERIALIZER_KEY);
92 provider.unregisterSerializer(Reg2Codec.SERIALIZER_KEY);
93 provider.unregisterDeserializer(Reg2Codec.DESERIALIZER_KEY);
94 provider.unregisterSerializer(Reg3Codec.SERIALIZER_KEY);
95 provider.unregisterDeserializer(Reg3Codec.DESERIALIZER_KEY);
96 provider.unregisterSerializer(Reg4Codec.SERIALIZER_KEY);
97 provider.unregisterDeserializer(Reg4Codec.DESERIALIZER_KEY);
98 provider.unregisterSerializer(Reg5Codec.SERIALIZER_KEY);
99 provider.unregisterDeserializer(Reg5Codec.DESERIALIZER_KEY);
100 provider.unregisterSerializer(Reg6Codec.SERIALIZER_KEY);
101 provider.unregisterDeserializer(Reg6Codec.DESERIALIZER_KEY);
102 provider.unregisterSerializer(Reg7Codec.SERIALIZER_KEY);
103 provider.unregisterDeserializer(Reg7Codec.DESERIALIZER_KEY);
104 provider.unregisterSerializer(TunIdCodec.SERIALIZER_KEY);
105 provider.unregisterDeserializer(TunIdCodec.DESERIALIZER_KEY);
106 provider.unregisterSerializer(ArpOpCodec.SERIALIZER_KEY);
107 provider.unregisterDeserializer(ArpOpCodec.DESERIALIZER_KEY);
108 provider.unregisterSerializer(ArpShaCodec.SERIALIZER_KEY);
109 provider.unregisterDeserializer(ArpShaCodec.DESERIALIZER_KEY);
110 provider.unregisterSerializer(ArpSpaCodec.SERIALIZER_KEY);
111 provider.unregisterDeserializer(ArpSpaCodec.DESERIALIZER_KEY);
112 provider.unregisterSerializer(ArpThaCodec.SERIALIZER_KEY);
113 provider.unregisterDeserializer(ArpThaCodec.DESERIALIZER_KEY);
114 provider.unregisterSerializer(ArpTpaCodec.SERIALIZER_KEY);
115 provider.unregisterDeserializer(ArpTpaCodec.DESERIALIZER_KEY);
116 provider.unregisterSerializer(EthDstCodec.SERIALIZER_KEY);
117 provider.unregisterDeserializer(EthDstCodec.DESERIALIZER_KEY);
118 provider.unregisterSerializer(EthSrcCodec.SERIALIZER_KEY);
119 provider.unregisterDeserializer(EthSrcCodec.DESERIALIZER_KEY);
120 provider.unregisterSerializer(TunIpv4DstCodec.SERIALIZER_KEY);
121 provider.unregisterDeserializer(TunIpv4DstCodec.DESERIALIZER_KEY);
122 provider.unregisterSerializer(TunIpv4SrcCodec.SERIALIZER_KEY);
123 provider.unregisterDeserializer(TunIpv4SrcCodec.DESERIALIZER_KEY);
128 public void close() throws Exception {
129 unregisterExtensions();