Bump upstreams for 2022.09 Chlorine
[openflowplugin.git] / extension / openflowplugin-extension-nicira / src / main / java / org / opendaylight / openflowplugin / extension / vendor / nicira / NiciraExtensionProvider.java
1 /*
2  * Copyright (c) 2014, 2017 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.openflowplugin.extension.vendor.nicira;
9
10 import static java.util.Objects.requireNonNull;
11
12 import java.util.HashSet;
13 import java.util.Set;
14 import org.opendaylight.openflowjava.nx.api.NiciraUtil;
15 import org.opendaylight.openflowjava.nx.codec.action.ConntrackCodec;
16 import org.opendaylight.openflowjava.nx.codec.action.CtClearCodec;
17 import org.opendaylight.openflowjava.nx.codec.action.DecNshTtlCodec;
18 import org.opendaylight.openflowjava.nx.codec.action.DecapCodec;
19 import org.opendaylight.openflowjava.nx.codec.action.EncapCodec;
20 import org.opendaylight.openflowjava.nx.codec.action.FinTimeoutCodec;
21 import org.opendaylight.openflowjava.nx.codec.action.LearnCodec;
22 import org.opendaylight.openflowjava.nx.codec.action.MultipathCodec;
23 import org.opendaylight.openflowjava.nx.codec.action.OutputReg2Codec;
24 import org.opendaylight.openflowjava.nx.codec.action.OutputRegCodec;
25 import org.opendaylight.openflowjava.nx.codec.action.RegLoad2Codec;
26 import org.opendaylight.openflowjava.nx.codec.action.RegLoadCodec;
27 import org.opendaylight.openflowjava.nx.codec.action.RegMoveCodec;
28 import org.opendaylight.openflowjava.nx.codec.action.ResubmitCodec;
29 import org.opendaylight.openflowjava.nx.codec.match.ArpOpCodec;
30 import org.opendaylight.openflowjava.nx.codec.match.ArpShaCodec;
31 import org.opendaylight.openflowjava.nx.codec.match.ArpSpaCodec;
32 import org.opendaylight.openflowjava.nx.codec.match.ArpThaCodec;
33 import org.opendaylight.openflowjava.nx.codec.match.ArpTpaCodec;
34 import org.opendaylight.openflowjava.nx.codec.match.CtMarkCodec;
35 import org.opendaylight.openflowjava.nx.codec.match.CtStateCodec;
36 import org.opendaylight.openflowjava.nx.codec.match.CtTpDstCodec;
37 import org.opendaylight.openflowjava.nx.codec.match.CtTpSrcCodec;
38 import org.opendaylight.openflowjava.nx.codec.match.CtZoneCodec;
39 import org.opendaylight.openflowjava.nx.codec.match.EthDstCodec;
40 import org.opendaylight.openflowjava.nx.codec.match.EthSrcCodec;
41 import org.opendaylight.openflowjava.nx.codec.match.EthTypeCodec;
42 import org.opendaylight.openflowjava.nx.codec.match.InPortCodec;
43 import org.opendaylight.openflowjava.nx.codec.match.NshFlagsCodec;
44 import org.opendaylight.openflowjava.nx.codec.match.NshMdtypeCodec;
45 import org.opendaylight.openflowjava.nx.codec.match.NshNpCodec;
46 import org.opendaylight.openflowjava.nx.codec.match.NshTtlCodec;
47 import org.opendaylight.openflowjava.nx.codec.match.Nshc1Codec;
48 import org.opendaylight.openflowjava.nx.codec.match.Nshc2Codec;
49 import org.opendaylight.openflowjava.nx.codec.match.Nshc3Codec;
50 import org.opendaylight.openflowjava.nx.codec.match.Nshc4Codec;
51 import org.opendaylight.openflowjava.nx.codec.match.NsiCodec;
52 import org.opendaylight.openflowjava.nx.codec.match.NspCodec;
53 import org.opendaylight.openflowjava.nx.codec.match.PktMarkCodec;
54 import org.opendaylight.openflowjava.nx.codec.match.Reg0Codec;
55 import org.opendaylight.openflowjava.nx.codec.match.Reg1Codec;
56 import org.opendaylight.openflowjava.nx.codec.match.Reg2Codec;
57 import org.opendaylight.openflowjava.nx.codec.match.Reg3Codec;
58 import org.opendaylight.openflowjava.nx.codec.match.Reg4Codec;
59 import org.opendaylight.openflowjava.nx.codec.match.Reg5Codec;
60 import org.opendaylight.openflowjava.nx.codec.match.Reg6Codec;
61 import org.opendaylight.openflowjava.nx.codec.match.Reg7Codec;
62 import org.opendaylight.openflowjava.nx.codec.match.TcpDstCodec;
63 import org.opendaylight.openflowjava.nx.codec.match.TcpSrcCodec;
64 import org.opendaylight.openflowjava.nx.codec.match.TunIdCodec;
65 import org.opendaylight.openflowjava.nx.codec.match.TunIpv4DstCodec;
66 import org.opendaylight.openflowjava.nx.codec.match.TunIpv4SrcCodec;
67 import org.opendaylight.openflowjava.nx.codec.match.UdpDstCodec;
68 import org.opendaylight.openflowjava.nx.codec.match.UdpSrcCodec;
69 import org.opendaylight.openflowjava.protocol.api.keys.ActionSerializerKey;
70 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
71 import org.opendaylight.openflowplugin.extension.api.ConverterExtensionKey;
72 import org.opendaylight.openflowplugin.extension.api.ConvertorActionFromOFJava;
73 import org.opendaylight.openflowplugin.extension.api.ConvertorActionToOFJava;
74 import org.opendaylight.openflowplugin.extension.api.ExtensionConverterRegistrator;
75 import org.opendaylight.openflowplugin.extension.api.OpenFlowPluginExtensionRegistratorProvider;
76 import org.opendaylight.openflowplugin.extension.api.TypeVersionKey;
77 import org.opendaylight.openflowplugin.extension.api.path.ActionPath;
78 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action.ConntrackConvertor;
79 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action.CtClearConvertor;
80 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action.DecNshTtlConvertor;
81 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action.DecapConvertor;
82 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action.EncapConvertor;
83 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action.FinTimeoutConvertor;
84 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action.LearnConvertor;
85 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action.MultipathConvertor;
86 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action.OutputReg2Convertor;
87 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action.OutputRegConvertor;
88 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action.OutputRegConvertorProxy;
89 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action.RegLoad2Convertor;
90 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action.RegLoadConvertor;
91 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action.RegLoadConvertorProxy;
92 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action.RegMoveConvertor;
93 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action.ResubmitConvertor;
94 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.ArpOpConvertor;
95 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.ArpShaConvertor;
96 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.ArpSpaConvertor;
97 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.ArpThaConvertor;
98 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.ArpTpaConvertor;
99 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.CtMarkConvertor;
100 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.CtStateConvertor;
101 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.CtTpDstConvertor;
102 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.CtTpSrcConvertor;
103 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.CtZoneConvertor;
104 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.EthDstConvertor;
105 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.EthSrcConvertor;
106 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.EthTypeConvertor;
107 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.NshFlagsConvertor;
108 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.NshMdtypeConvertor;
109 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.NshNpConvertor;
110 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.NshTtlConvertor;
111 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.Nshc1Convertor;
112 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.Nshc2Convertor;
113 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.Nshc3Convertor;
114 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.Nshc4Convertor;
115 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.NsiConvertor;
116 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.NspConvertor;
117 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.NxmInPortConvertor;
118 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.PktMarkConvertor;
119 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.RegConvertor;
120 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.TcpDstConvertor;
121 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.TcpSrcConvertor;
122 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.TunIPv4DstConvertor;
123 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.TunIPv4SrcConvertor;
124 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.TunIdConvertor;
125 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.UdpDstConvertor;
126 import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match.UdpSrcConvertor;
127 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action;
128 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.ActionChoice;
129 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.aug.nx.action.ActionConntrack;
130 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.aug.nx.action.ActionCtClear;
131 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.aug.nx.action.ActionDecNshTtl;
132 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.aug.nx.action.ActionDecap;
133 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.aug.nx.action.ActionEncap;
134 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.aug.nx.action.ActionFinTimeout;
135 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.aug.nx.action.ActionLearn;
136 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.aug.nx.action.ActionMultipath;
137 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.aug.nx.action.ActionOutputReg;
138 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.aug.nx.action.ActionOutputReg2;
139 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.aug.nx.action.ActionRegLoad;
140 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.aug.nx.action.ActionRegLoad2;
141 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.aug.nx.action.ActionRegMove;
142 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.aug.nx.action.ActionResubmit;
143 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionConntrackRpcAddFlowApplyActionsCase;
144 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionCtClearRpcAddFlowApplyActionsCase;
145 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionDecNshTtlRpcAddFlowApplyActionsCase;
146 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionDecapRpcAddFlowApplyActionsCase;
147 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionEncapRpcAddFlowApplyActionsCase;
148 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionFinTimeoutRpcAddFlowApplyActionsCase;
149 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionLearnRpcAddFlowApplyActionsCase;
150 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionMultipathRpcAddFlowApplyActionsCase;
151 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionOutputRegRpcAddFlowApplyActionsCase;
152 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionRegLoadRpcAddFlowApplyActionsCase;
153 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionRegMoveRpcAddFlowApplyActionsCase;
154 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionResubmitRpcAddFlowApplyActionsCase;
155 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionConntrackRpcAddFlowWriteActionsCase;
156 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionCtClearRpcAddFlowWriteActionsCase;
157 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionDecNshTtlRpcAddFlowWriteActionsCase;
158 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionDecapRpcAddFlowWriteActionsCase;
159 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionEncapRpcAddFlowWriteActionsCase;
160 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionFinTimeoutRpcAddFlowWriteActionsCase;
161 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionLearnRpcAddFlowWriteActionsCase;
162 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionMultipathRpcAddFlowWriteActionsCase;
163 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionOutputRegRpcAddFlowWriteActionsCase;
164 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionRegLoadRpcAddFlowWriteActionsCase;
165 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionRegMoveRpcAddFlowWriteActionsCase;
166 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.flow.input.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionResubmitRpcAddFlowWriteActionsCase;
167 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.group.input.buckets.bucket.action.action.NxActionConntrackRpcAddGroupCase;
168 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.group.input.buckets.bucket.action.action.NxActionCtClearRpcAddGroupCase;
169 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.group.input.buckets.bucket.action.action.NxActionDecNshTtlRpcAddGroupCase;
170 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.group.input.buckets.bucket.action.action.NxActionDecapRpcAddGroupCase;
171 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.group.input.buckets.bucket.action.action.NxActionEncapRpcAddGroupCase;
172 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.group.input.buckets.bucket.action.action.NxActionFinTimeoutRpcAddGroupCase;
173 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.group.input.buckets.bucket.action.action.NxActionLearnRpcAddGroupCase;
174 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.group.input.buckets.bucket.action.action.NxActionMultipathRpcAddGroupCase;
175 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.group.input.buckets.bucket.action.action.NxActionOutputRegRpcAddGroupCase;
176 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.group.input.buckets.bucket.action.action.NxActionRegLoadRpcAddGroupCase;
177 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.group.input.buckets.bucket.action.action.NxActionRegMoveRpcAddGroupCase;
178 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.group.input.buckets.bucket.action.action.NxActionResubmitRpcAddGroupCase;
179 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionConntrackNodesNodeGroupBucketsBucketActionsCase;
180 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionCtClearNodesNodeGroupBucketsBucketActionsCase;
181 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionDecNshTtlNodesNodeGroupBucketsBucketActionsCase;
182 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionDecapNodesNodeGroupBucketsBucketActionsCase;
183 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionEncapNodesNodeGroupBucketsBucketActionsCase;
184 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionFinTimeoutNodesNodeGroupBucketsBucketActionsCase;
185 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionLearnNodesNodeGroupBucketsBucketActionsCase;
186 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionMultipathNodesNodeGroupBucketsBucketActionsCase;
187 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionOutputRegNodesNodeGroupBucketsBucketActionsCase;
188 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionRegLoadNodesNodeGroupBucketsBucketActionsCase;
189 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionRegMoveNodesNodeGroupBucketsBucketActionsCase;
190 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionResubmitNodesNodeGroupBucketsBucketActionsCase;
191 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionConntrackNodesNodeTableFlowApplyActionsCase;
192 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionCtClearNodesNodeTableFlowApplyActionsCase;
193 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionDecNshTtlNodesNodeTableFlowApplyActionsCase;
194 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionDecapNodesNodeTableFlowApplyActionsCase;
195 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionEncapNodesNodeTableFlowApplyActionsCase;
196 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionFinTimeoutNodesNodeTableFlowApplyActionsCase;
197 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionLearnNodesNodeTableFlowApplyActionsCase;
198 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionMultipathNodesNodeTableFlowApplyActionsCase;
199 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionOutputRegNodesNodeTableFlowApplyActionsCase;
200 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionRegLoadNodesNodeTableFlowApplyActionsCase;
201 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionRegMoveNodesNodeTableFlowApplyActionsCase;
202 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionResubmitNodesNodeTableFlowApplyActionsCase;
203 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionConntrackNodesNodeTableFlowWriteActionsCase;
204 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionCtClearNodesNodeTableFlowWriteActionsCase;
205 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionDecNshTtlNodesNodeTableFlowWriteActionsCase;
206 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionDecapNodesNodeTableFlowWriteActionsCase;
207 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionEncapNodesNodeTableFlowWriteActionsCase;
208 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionFinTimeoutNodesNodeTableFlowWriteActionsCase;
209 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionLearnNodesNodeTableFlowWriteActionsCase;
210 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionMultipathNodesNodeTableFlowWriteActionsCase;
211 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionOutputRegNodesNodeTableFlowWriteActionsCase;
212 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionRegLoadNodesNodeTableFlowWriteActionsCase;
213 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionRegMoveNodesNodeTableFlowWriteActionsCase;
214 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionResubmitNodesNodeTableFlowWriteActionsCase;
215 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.remove.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionRegLoadRpcRemoveFlowApplyActionsCase;
216 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.remove.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionRegMoveRpcRemoveFlowApplyActionsCase;
217 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.remove.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionResubmitRpcRemoveFlowApplyActionsCase;
218 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.remove.group.input.buckets.bucket.action.action.NxActionConntrackRpcRemoveGroupCase;
219 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.remove.group.input.buckets.bucket.action.action.NxActionCtClearRpcRemoveGroupCase;
220 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.remove.group.input.buckets.bucket.action.action.NxActionDecNshTtlRpcRemoveGroupCase;
221 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.remove.group.input.buckets.bucket.action.action.NxActionDecapRpcRemoveGroupCase;
222 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.remove.group.input.buckets.bucket.action.action.NxActionEncapRpcRemoveGroupCase;
223 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.remove.group.input.buckets.bucket.action.action.NxActionFinTimeoutRpcRemoveGroupCase;
224 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.remove.group.input.buckets.bucket.action.action.NxActionLearnRpcRemoveGroupCase;
225 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.remove.group.input.buckets.bucket.action.action.NxActionMultipathRpcRemoveGroupCase;
226 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.remove.group.input.buckets.bucket.action.action.NxActionOutputRegRpcRemoveGroupCase;
227 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.remove.group.input.buckets.bucket.action.action.NxActionRegLoadRpcRemoveGroupCase;
228 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.remove.group.input.buckets.bucket.action.action.NxActionRegMoveRpcRemoveGroupCase;
229 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.remove.group.input.buckets.bucket.action.action.NxActionResubmitRpcRemoveGroupCase;
230 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.transmit.packet.input.action.action.NxActionRegLoadRpcTransmitPacketCase;
231 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.transmit.packet.input.action.action.NxActionResubmitRpcTransmitPacketCase;
232 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.flow.input.original.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionRegLoadRpcUpdateFlowOriginalApplyActionsCase;
233 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.flow.input.updated.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionRegLoadRpcUpdateFlowUpdatedApplyActionsCase;
234 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.flow.input.updated.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionRegMoveRpcUpdateFlowUpdatedApplyActionsCase;
235 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.flow.input.updated.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionResubmitRpcUpdateFlowUpdatedApplyActionsCase;
236 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.original.group.buckets.bucket.action.action.NxActionConntrackRpcUpdateGroupOriginalCase;
237 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.original.group.buckets.bucket.action.action.NxActionCtClearRpcUpdateGroupOriginalCase;
238 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.original.group.buckets.bucket.action.action.NxActionDecNshTtlRpcUpdateGroupOriginalCase;
239 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.original.group.buckets.bucket.action.action.NxActionDecapRpcUpdateGroupOriginalCase;
240 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.original.group.buckets.bucket.action.action.NxActionEncapRpcUpdateGroupOriginalCase;
241 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.original.group.buckets.bucket.action.action.NxActionFinTimeoutRpcUpdateGroupOriginalCase;
242 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.original.group.buckets.bucket.action.action.NxActionLearnRpcUpdateGroupOriginalCase;
243 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.original.group.buckets.bucket.action.action.NxActionMultipathRpcUpdateGroupOriginalCase;
244 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.original.group.buckets.bucket.action.action.NxActionOutputRegRpcUpdateGroupOriginalCase;
245 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.original.group.buckets.bucket.action.action.NxActionRegLoadRpcUpdateGroupOriginalCase;
246 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.original.group.buckets.bucket.action.action.NxActionRegMoveRpcUpdateGroupOriginalCase;
247 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.original.group.buckets.bucket.action.action.NxActionResubmitRpcUpdateGroupOriginalCase;
248 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.updated.group.buckets.bucket.action.action.NxActionConntrackRpcUpdateGroupUpdatedCase;
249 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.updated.group.buckets.bucket.action.action.NxActionCtClearRpcUpdateGroupUpdatedCase;
250 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.updated.group.buckets.bucket.action.action.NxActionDecNshTtlRpcUpdateGroupUpdatedCase;
251 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.updated.group.buckets.bucket.action.action.NxActionDecapRpcUpdateGroupUpdatedCase;
252 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.updated.group.buckets.bucket.action.action.NxActionEncapRpcUpdateGroupUpdatedCase;
253 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.updated.group.buckets.bucket.action.action.NxActionFinTimeoutRpcUpdateGroupUpdatedCase;
254 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.updated.group.buckets.bucket.action.action.NxActionLearnRpcUpdateGroupUpdatedCase;
255 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.updated.group.buckets.bucket.action.action.NxActionMultipathRpcUpdateGroupUpdatedCase;
256 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.updated.group.buckets.bucket.action.action.NxActionOutputRegRpcUpdateGroupUpdatedCase;
257 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.updated.group.buckets.bucket.action.action.NxActionRegLoadRpcUpdateGroupUpdatedCase;
258 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.updated.group.buckets.bucket.action.action.NxActionRegMoveRpcUpdateGroupUpdatedCase;
259 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.update.group.input.updated.group.buckets.bucket.action.action.NxActionResubmitRpcUpdateGroupUpdatedCase;
260 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxArpShaKey;
261 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxArpThaKey;
262 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxCtMarkKey;
263 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxCtStateKey;
264 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxCtTpDstKey;
265 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxCtTpSrcKey;
266 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxCtZoneKey;
267 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNshFlagsKey;
268 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNshMdtypeKey;
269 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNshNpKey;
270 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNshTtlKey;
271 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNshc1Key;
272 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNshc2Key;
273 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNshc3Key;
274 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNshc4Key;
275 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNsiKey;
276 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNspKey;
277 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxPktMarkKey;
278 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxReg0Key;
279 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxReg1Key;
280 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxReg2Key;
281 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxReg3Key;
282 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxReg4Key;
283 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxReg5Key;
284 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxReg6Key;
285 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxReg7Key;
286 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxTunIdKey;
287 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxTunIpv4DstKey;
288 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxTunIpv4SrcKey;
289 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfArpOpKey;
290 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfArpSpaKey;
291 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfArpTpaKey;
292 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfEthDstKey;
293 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfEthSrcKey;
294 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfEthTypeKey;
295 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfInPortKey;
296 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfTcpDstKey;
297 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfTcpSrcKey;
298 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfUdpDstKey;
299 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmOfUdpSrcKey;
300 import org.opendaylight.yangtools.concepts.ObjectRegistration;
301 import org.opendaylight.yangtools.yang.common.Uint32;
302 import org.slf4j.Logger;
303 import org.slf4j.LoggerFactory;
304
305 public class NiciraExtensionProvider implements AutoCloseable {
306
307     private static final Logger LOG = LoggerFactory.getLogger(NiciraExtensionProvider.class);
308
309     private static final RegConvertor REG_CONVERTOR = new RegConvertor();
310     private static final TunIdConvertor TUN_ID_CONVERTOR = new TunIdConvertor();
311     private static final ArpOpConvertor ARP_OP_CONVERTOR = new ArpOpConvertor();
312     private static final ArpShaConvertor ARP_SHA_CONVERTOR = new ArpShaConvertor();
313     private static final ArpSpaConvertor ARP_SPA_CONVERTOR = new ArpSpaConvertor();
314     private static final ArpTpaConvertor ARP_TPA_CONVERTOR = new ArpTpaConvertor();
315     private static final ArpThaConvertor ARP_THA_CONVERTOR = new ArpThaConvertor();
316     private static final NxmInPortConvertor NXM_IN_PORT_CONVERTOR = new NxmInPortConvertor();
317     private static final EthDstConvertor ETH_DST_CONVERTOR = new EthDstConvertor();
318     private static final EthSrcConvertor ETH_SRC_CONVERTOR = new EthSrcConvertor();
319     private static final RegLoadConvertor REG_LOAD_CONVERTOR = new RegLoadConvertor();
320     private static final RegLoad2Convertor REG_LOAD2_CONVERTOR = new RegLoad2Convertor();
321     private static final RegLoadConvertorProxy REG_LOAD_CONVERTOR_PROXY = new RegLoadConvertorProxy();
322     private static final RegMoveConvertor REG_MOVE_CONVERTOR = new RegMoveConvertor();
323     private static final OutputRegConvertor OUTPUT_REG_CONVERTOR = new OutputRegConvertor();
324     private static final OutputReg2Convertor OUTPUT_REG2_CONVERTOR = new OutputReg2Convertor();
325     private static final OutputRegConvertorProxy OUTPUT_REG_CONVERTOR_PROXY = new OutputRegConvertorProxy();
326     private static final EthTypeConvertor ETH_TYPE_CONVERTOR = new EthTypeConvertor();
327     private static final ResubmitConvertor RESUBMIT_CONVERTOR = new ResubmitConvertor();
328     private static final FinTimeoutConvertor FIN_TIMEOUT_CONVERTOR = new FinTimeoutConvertor();
329     private static final MultipathConvertor MULTIPATH_CONVERTOR = new MultipathConvertor();
330     private static final NspConvertor NSP_CONVERTOR = new NspConvertor();
331     private static final NsiConvertor NSI_CONVERTOR = new NsiConvertor();
332     private static final Nshc1Convertor NSC1_CONVERTOR = new Nshc1Convertor();
333     private static final Nshc2Convertor NSC2_CONVERTOR = new Nshc2Convertor();
334     private static final Nshc3Convertor NSC3_CONVERTOR = new Nshc3Convertor();
335     private static final Nshc4Convertor NSC4_CONVERTOR = new Nshc4Convertor();
336     private static final NshFlagsConvertor NSH_FLAGS_CONVERTOR = new NshFlagsConvertor();
337     private static final NshTtlConvertor NSH_TTL_CONVERTOR = new NshTtlConvertor();
338     private static final TunIPv4SrcConvertor TUN_IPV4_SRC_CONVERTOR = new TunIPv4SrcConvertor();
339     private static final TunIPv4DstConvertor TUN_IPV4_DST_CONVERTOR = new TunIPv4DstConvertor();
340     private static final NshMdtypeConvertor NSH_MDTYPE_CONVERTOR = new NshMdtypeConvertor();
341     private static final NshNpConvertor NSH_NP_CONVERTOR = new NshNpConvertor();
342     private static final TcpSrcConvertor TCP_SRC_CONVERTOR = new TcpSrcConvertor();
343     private static final TcpDstConvertor TCP_DST_CONVERTOR = new TcpDstConvertor();
344     private static final UdpSrcConvertor UDP_SRC_CONVERTOR = new UdpSrcConvertor();
345     private static final UdpDstConvertor UDP_DST_CONVERTOR = new UdpDstConvertor();
346     private static final ConntrackConvertor CONNTRACK_CONVERTOR = new ConntrackConvertor();
347     private static final CtClearConvertor CT_CLEAR_CONVERTOR = new CtClearConvertor();
348     private static final LearnConvertor LEARN_CONVERTOR = new LearnConvertor();
349     private static final CtMarkConvertor CT_MARK_CONVERTOR = new CtMarkConvertor();
350     private static final CtStateConvertor CT_STATE_CONVERTOR = new CtStateConvertor();
351     private static final CtZoneConvertor CT_ZONE_CONVERTOR = new CtZoneConvertor();
352     private static final CtTpSrcConvertor CT_TP_SRC_CONVERTOR = new CtTpSrcConvertor();
353     private static final CtTpDstConvertor CT_TP_DST_CONVERTOR = new CtTpDstConvertor();
354     private static final PktMarkConvertor PKT_MARK_CONVERTOR = new PktMarkConvertor();
355     private static final EncapConvertor ENCAP_CONVERTOR = new EncapConvertor();
356     private static final DecapConvertor DECAP_CONVERTOR = new DecapConvertor();
357     private static final DecNshTtlConvertor DEC_NSH_TTL_CONVERTOR = new DecNshTtlConvertor();
358
359     private final ExtensionConverterRegistrator extensionConverterRegistrator;
360     private final Set<ObjectRegistration<?>> registrations;
361
362     /**
363      * Register appropriate converters.
364      */
365     public NiciraExtensionProvider(final OpenFlowPluginExtensionRegistratorProvider provider) {
366         extensionConverterRegistrator = requireNonNull(provider.getExtensionConverterRegistrator());
367         registrations = new HashSet<>();
368         // src=dataStore/config
369         registerAction13(NxActionRegLoadNodesNodeTableFlowApplyActionsCase.class, REG_LOAD_CONVERTOR_PROXY);
370         registerAction13(NxActionRegMoveNodesNodeTableFlowApplyActionsCase.class, REG_MOVE_CONVERTOR);
371         registerAction13(NxActionOutputRegNodesNodeTableFlowApplyActionsCase.class, OUTPUT_REG_CONVERTOR_PROXY);
372         registerAction13(NxActionResubmitNodesNodeTableFlowApplyActionsCase.class, RESUBMIT_CONVERTOR);
373         registerAction13(NxActionFinTimeoutNodesNodeTableFlowApplyActionsCase.class, FIN_TIMEOUT_CONVERTOR);
374         registerAction13(NxActionMultipathNodesNodeTableFlowApplyActionsCase.class, MULTIPATH_CONVERTOR);
375         registerAction13(NxActionConntrackNodesNodeTableFlowApplyActionsCase.class, CONNTRACK_CONVERTOR);
376         registerAction13(NxActionCtClearNodesNodeTableFlowApplyActionsCase.class, CT_CLEAR_CONVERTOR);
377         registerAction13(NxActionLearnNodesNodeTableFlowApplyActionsCase.class, LEARN_CONVERTOR);
378         registerAction13(NxActionEncapNodesNodeTableFlowApplyActionsCase.class, ENCAP_CONVERTOR);
379         registerAction13(NxActionDecapNodesNodeTableFlowApplyActionsCase.class, DECAP_CONVERTOR);
380         registerAction13(NxActionDecNshTtlNodesNodeTableFlowApplyActionsCase.class, DEC_NSH_TTL_CONVERTOR);
381
382         registerAction13(NxActionRegLoadNodesNodeTableFlowWriteActionsCase.class, REG_LOAD_CONVERTOR_PROXY);
383         registerAction13(NxActionRegMoveNodesNodeTableFlowWriteActionsCase.class, REG_MOVE_CONVERTOR);
384         registerAction13(NxActionOutputRegNodesNodeTableFlowWriteActionsCase.class, OUTPUT_REG_CONVERTOR_PROXY);
385         registerAction13(NxActionResubmitNodesNodeTableFlowWriteActionsCase.class, RESUBMIT_CONVERTOR);
386         registerAction13(NxActionFinTimeoutNodesNodeTableFlowWriteActionsCase.class, FIN_TIMEOUT_CONVERTOR);
387         registerAction13(NxActionMultipathNodesNodeTableFlowWriteActionsCase.class, MULTIPATH_CONVERTOR);
388         registerAction13(NxActionConntrackNodesNodeTableFlowWriteActionsCase.class, CONNTRACK_CONVERTOR);
389         registerAction13(NxActionCtClearNodesNodeTableFlowWriteActionsCase.class, CT_CLEAR_CONVERTOR);
390         registerAction13(NxActionLearnNodesNodeTableFlowWriteActionsCase.class, LEARN_CONVERTOR);
391         registerAction13(NxActionEncapNodesNodeTableFlowWriteActionsCase.class, ENCAP_CONVERTOR);
392         registerAction13(NxActionDecapNodesNodeTableFlowWriteActionsCase.class, DECAP_CONVERTOR);
393         registerAction13(NxActionDecNshTtlNodesNodeTableFlowWriteActionsCase.class, DEC_NSH_TTL_CONVERTOR);
394
395         registerAction13(NxActionRegLoadNodesNodeGroupBucketsBucketActionsCase.class, REG_LOAD_CONVERTOR_PROXY);
396         registerAction13(NxActionRegMoveNodesNodeGroupBucketsBucketActionsCase.class, REG_MOVE_CONVERTOR);
397         registerAction13(NxActionOutputRegNodesNodeGroupBucketsBucketActionsCase.class, OUTPUT_REG_CONVERTOR_PROXY);
398         registerAction13(NxActionResubmitNodesNodeGroupBucketsBucketActionsCase.class, RESUBMIT_CONVERTOR);
399         registerAction13(NxActionFinTimeoutNodesNodeGroupBucketsBucketActionsCase.class, FIN_TIMEOUT_CONVERTOR);
400         registerAction13(NxActionMultipathNodesNodeGroupBucketsBucketActionsCase.class, MULTIPATH_CONVERTOR);
401         registerAction13(NxActionConntrackNodesNodeGroupBucketsBucketActionsCase.class, CONNTRACK_CONVERTOR);
402         registerAction13(NxActionCtClearNodesNodeGroupBucketsBucketActionsCase.class, CT_CLEAR_CONVERTOR);
403         registerAction13(NxActionLearnNodesNodeGroupBucketsBucketActionsCase.class, LEARN_CONVERTOR);
404         registerAction13(NxActionEncapNodesNodeGroupBucketsBucketActionsCase.class, ENCAP_CONVERTOR);
405         registerAction13(NxActionDecapNodesNodeGroupBucketsBucketActionsCase.class, DECAP_CONVERTOR);
406         registerAction13(NxActionDecNshTtlNodesNodeGroupBucketsBucketActionsCase.class, DEC_NSH_TTL_CONVERTOR);
407
408         // src=rpc-addFlow
409         registerAction13(NxActionRegLoadRpcAddFlowApplyActionsCase.class, REG_LOAD_CONVERTOR_PROXY);
410         registerAction13(NxActionRegMoveRpcAddFlowApplyActionsCase.class, REG_MOVE_CONVERTOR);
411         registerAction13(NxActionOutputRegRpcAddFlowApplyActionsCase.class, OUTPUT_REG_CONVERTOR_PROXY);
412         registerAction13(NxActionResubmitRpcAddFlowApplyActionsCase.class, RESUBMIT_CONVERTOR);
413         registerAction13(NxActionFinTimeoutRpcAddFlowApplyActionsCase.class, FIN_TIMEOUT_CONVERTOR);
414         registerAction13(NxActionMultipathRpcAddFlowApplyActionsCase.class, MULTIPATH_CONVERTOR);
415         registerAction13(NxActionConntrackRpcAddFlowApplyActionsCase.class, CONNTRACK_CONVERTOR);
416         registerAction13(NxActionCtClearRpcAddFlowApplyActionsCase.class, CT_CLEAR_CONVERTOR);
417         registerAction13(NxActionLearnRpcAddFlowApplyActionsCase.class, LEARN_CONVERTOR);
418         registerAction13(NxActionEncapRpcAddFlowApplyActionsCase.class, ENCAP_CONVERTOR);
419         registerAction13(NxActionDecapRpcAddFlowApplyActionsCase.class, DECAP_CONVERTOR);
420         registerAction13(NxActionDecNshTtlRpcAddFlowApplyActionsCase.class, DEC_NSH_TTL_CONVERTOR);
421
422         registerAction13(NxActionRegLoadRpcAddFlowWriteActionsCase.class, REG_LOAD_CONVERTOR_PROXY);
423         registerAction13(NxActionRegMoveRpcAddFlowWriteActionsCase.class, REG_MOVE_CONVERTOR);
424         registerAction13(NxActionOutputRegRpcAddFlowWriteActionsCase.class, OUTPUT_REG_CONVERTOR_PROXY);
425         registerAction13(NxActionResubmitRpcAddFlowWriteActionsCase.class, RESUBMIT_CONVERTOR);
426         registerAction13(NxActionFinTimeoutRpcAddFlowWriteActionsCase.class, FIN_TIMEOUT_CONVERTOR);
427         registerAction13(NxActionMultipathRpcAddFlowWriteActionsCase.class, MULTIPATH_CONVERTOR);
428         registerAction13(NxActionConntrackRpcAddFlowWriteActionsCase.class, CONNTRACK_CONVERTOR);
429         registerAction13(NxActionCtClearRpcAddFlowWriteActionsCase.class, CT_CLEAR_CONVERTOR);
430         registerAction13(NxActionLearnRpcAddFlowWriteActionsCase.class, LEARN_CONVERTOR);
431         registerAction13(NxActionEncapRpcAddFlowWriteActionsCase.class, ENCAP_CONVERTOR);
432         registerAction13(NxActionDecapRpcAddFlowWriteActionsCase.class, DECAP_CONVERTOR);
433         registerAction13(NxActionDecNshTtlRpcAddFlowWriteActionsCase.class, DEC_NSH_TTL_CONVERTOR);
434
435         registerAction13(NxActionRegLoadRpcAddGroupCase.class, REG_LOAD_CONVERTOR_PROXY);
436         registerAction13(NxActionRegLoadRpcRemoveGroupCase.class, REG_LOAD_CONVERTOR_PROXY);
437         registerAction13(NxActionRegLoadRpcUpdateGroupOriginalCase.class, REG_LOAD_CONVERTOR_PROXY);
438         registerAction13(NxActionRegLoadRpcUpdateGroupUpdatedCase.class, REG_LOAD_CONVERTOR_PROXY);
439         registerAction13(NxActionRegMoveRpcAddGroupCase.class, REG_MOVE_CONVERTOR);
440         registerAction13(NxActionRegMoveRpcRemoveGroupCase.class, REG_MOVE_CONVERTOR);
441         registerAction13(NxActionRegMoveRpcUpdateGroupOriginalCase.class, REG_MOVE_CONVERTOR);
442         registerAction13(NxActionRegMoveRpcUpdateGroupUpdatedCase.class, REG_MOVE_CONVERTOR);
443         registerAction13(NxActionOutputRegRpcAddGroupCase.class, OUTPUT_REG_CONVERTOR_PROXY);
444         registerAction13(NxActionOutputRegRpcRemoveGroupCase.class, OUTPUT_REG_CONVERTOR_PROXY);
445         registerAction13(NxActionOutputRegRpcUpdateGroupOriginalCase.class, OUTPUT_REG_CONVERTOR_PROXY);
446         registerAction13(NxActionOutputRegRpcUpdateGroupUpdatedCase.class, OUTPUT_REG_CONVERTOR_PROXY);
447         registerAction13(NxActionResubmitRpcAddGroupCase.class, RESUBMIT_CONVERTOR);
448         registerAction13(NxActionResubmitRpcRemoveGroupCase.class, RESUBMIT_CONVERTOR);
449         registerAction13(NxActionResubmitRpcUpdateGroupOriginalCase.class, RESUBMIT_CONVERTOR);
450         registerAction13(NxActionResubmitRpcUpdateGroupUpdatedCase.class, RESUBMIT_CONVERTOR);
451         registerAction13(NxActionFinTimeoutRpcAddGroupCase.class, FIN_TIMEOUT_CONVERTOR);
452         registerAction13(NxActionFinTimeoutRpcRemoveGroupCase.class, FIN_TIMEOUT_CONVERTOR);
453         registerAction13(NxActionFinTimeoutRpcUpdateGroupOriginalCase.class, FIN_TIMEOUT_CONVERTOR);
454         registerAction13(NxActionFinTimeoutRpcUpdateGroupUpdatedCase.class, FIN_TIMEOUT_CONVERTOR);
455         registerAction13(NxActionMultipathRpcAddGroupCase.class, MULTIPATH_CONVERTOR);
456         registerAction13(NxActionMultipathRpcRemoveGroupCase.class, MULTIPATH_CONVERTOR);
457         registerAction13(NxActionMultipathRpcUpdateGroupOriginalCase.class, MULTIPATH_CONVERTOR);
458         registerAction13(NxActionMultipathRpcUpdateGroupUpdatedCase.class, MULTIPATH_CONVERTOR);
459         registerAction13(NxActionConntrackRpcAddGroupCase.class, CONNTRACK_CONVERTOR);
460         registerAction13(NxActionConntrackRpcRemoveGroupCase.class, CONNTRACK_CONVERTOR);
461         registerAction13(NxActionConntrackRpcUpdateGroupOriginalCase.class, CONNTRACK_CONVERTOR);
462         registerAction13(NxActionConntrackRpcUpdateGroupUpdatedCase.class, CONNTRACK_CONVERTOR);
463         registerAction13(NxActionCtClearRpcAddGroupCase.class, CT_CLEAR_CONVERTOR);
464         registerAction13(NxActionCtClearRpcRemoveGroupCase.class, CT_CLEAR_CONVERTOR);
465         registerAction13(NxActionCtClearRpcUpdateGroupOriginalCase.class, CT_CLEAR_CONVERTOR);
466         registerAction13(NxActionCtClearRpcUpdateGroupUpdatedCase.class, CT_CLEAR_CONVERTOR);
467         registerAction13(NxActionLearnRpcAddGroupCase.class, LEARN_CONVERTOR);
468         registerAction13(NxActionLearnRpcRemoveGroupCase.class, LEARN_CONVERTOR);
469         registerAction13(NxActionLearnRpcUpdateGroupOriginalCase.class, LEARN_CONVERTOR);
470         registerAction13(NxActionLearnRpcUpdateGroupUpdatedCase.class, LEARN_CONVERTOR);
471         registerAction13(NxActionEncapRpcAddGroupCase.class, ENCAP_CONVERTOR);
472         registerAction13(NxActionEncapRpcRemoveGroupCase.class, ENCAP_CONVERTOR);
473         registerAction13(NxActionEncapRpcUpdateGroupOriginalCase.class, ENCAP_CONVERTOR);
474         registerAction13(NxActionEncapRpcUpdateGroupUpdatedCase.class, ENCAP_CONVERTOR);
475         registerAction13(NxActionDecapRpcAddGroupCase.class, DECAP_CONVERTOR);
476         registerAction13(NxActionDecapRpcRemoveGroupCase.class, DECAP_CONVERTOR);
477         registerAction13(NxActionDecapRpcUpdateGroupOriginalCase.class, DECAP_CONVERTOR);
478         registerAction13(NxActionDecapRpcUpdateGroupUpdatedCase.class, DECAP_CONVERTOR);
479         registerAction13(NxActionDecNshTtlRpcAddGroupCase.class, DEC_NSH_TTL_CONVERTOR);
480         registerAction13(NxActionDecNshTtlRpcRemoveGroupCase.class, DEC_NSH_TTL_CONVERTOR);
481         registerAction13(NxActionDecNshTtlRpcUpdateGroupOriginalCase.class, DEC_NSH_TTL_CONVERTOR);
482         registerAction13(NxActionDecNshTtlRpcUpdateGroupUpdatedCase.class, DEC_NSH_TTL_CONVERTOR);
483
484         registerAction13(NxActionRegLoadRpcTransmitPacketCase.class, REG_LOAD_CONVERTOR_PROXY);
485         registerAction13(NxActionResubmitRpcTransmitPacketCase.class, RESUBMIT_CONVERTOR);
486         registerAction13(NxActionRegLoadRpcUpdateFlowOriginalApplyActionsCase.class, REG_LOAD_CONVERTOR_PROXY);
487         registerAction13(NxActionRegLoadRpcUpdateFlowUpdatedApplyActionsCase.class, REG_LOAD_CONVERTOR_PROXY);
488         registerAction13(NxActionResubmitRpcUpdateFlowUpdatedApplyActionsCase.class, RESUBMIT_CONVERTOR);
489         registerAction13(NxActionRegMoveRpcUpdateFlowUpdatedApplyActionsCase.class, REG_MOVE_CONVERTOR);
490         registerAction13(NxActionRegLoadRpcRemoveFlowApplyActionsCase.class, REG_LOAD_CONVERTOR_PROXY);
491         registerAction13(NxActionRegMoveRpcRemoveFlowApplyActionsCase.class, REG_MOVE_CONVERTOR);
492         registerAction13(NxActionResubmitRpcRemoveFlowApplyActionsCase.class, RESUBMIT_CONVERTOR);
493
494         registerAction13(ActionRegLoad.class, REG_LOAD_CONVERTOR);
495         registerAction13(ActionRegLoad2.class, REG_LOAD2_CONVERTOR);
496         registerAction13(ActionRegMove.class, REG_MOVE_CONVERTOR);
497         registerAction13(ActionOutputReg.class, OUTPUT_REG_CONVERTOR);
498         registerAction13(ActionOutputReg2.class, OUTPUT_REG2_CONVERTOR);
499         registerAction13(ActionResubmit.class, RESUBMIT_CONVERTOR);
500         registerAction13(ActionFinTimeout.class, FIN_TIMEOUT_CONVERTOR);
501         registerAction13(ActionMultipath.class, MULTIPATH_CONVERTOR);
502         registerAction13(ActionConntrack.class, CONNTRACK_CONVERTOR);
503         registerAction13(ActionCtClear.class, CT_CLEAR_CONVERTOR);
504         registerAction13(ActionLearn.class, LEARN_CONVERTOR);
505         registerAction13(ActionEncap.class, ENCAP_CONVERTOR);
506         registerAction13(ActionDecap.class, DECAP_CONVERTOR);
507         registerAction13(ActionDecNshTtl.class, DEC_NSH_TTL_CONVERTOR);
508
509         registrations.add(extensionConverterRegistrator.registerActionConvertor(
510                 NiciraUtil.createOfJavaKeyFrom(RegLoadCodec.SERIALIZER_KEY), REG_LOAD_CONVERTOR));
511         registrations.add(extensionConverterRegistrator.registerActionConvertor(
512                 NiciraUtil.createOfJavaKeyFrom(RegLoad2Codec.SERIALIZER_KEY), REG_LOAD2_CONVERTOR));
513         registrations.add(extensionConverterRegistrator.registerActionConvertor(
514                 NiciraUtil.createOfJavaKeyFrom(RegMoveCodec.SERIALIZER_KEY), REG_MOVE_CONVERTOR));
515         registrations.add(extensionConverterRegistrator.registerActionConvertor(
516                 NiciraUtil.createOfJavaKeyFrom(OutputRegCodec.SERIALIZER_KEY), OUTPUT_REG_CONVERTOR));
517         registrations.add(extensionConverterRegistrator.registerActionConvertor(
518                 NiciraUtil.createOfJavaKeyFrom(OutputReg2Codec.SERIALIZER_KEY), OUTPUT_REG2_CONVERTOR));
519         registrations.add(extensionConverterRegistrator.registerActionConvertor(
520                 NiciraUtil.createOfJavaKeyFrom(ResubmitCodec.SERIALIZER_KEY), RESUBMIT_CONVERTOR));
521         registrations.add(extensionConverterRegistrator.registerActionConvertor(
522                 NiciraUtil.createOfJavaKeyFrom(FinTimeoutCodec.SERIALIZER_KEY), FIN_TIMEOUT_CONVERTOR));
523         registrations.add(extensionConverterRegistrator.registerActionConvertor(
524                 NiciraUtil.createOfJavaKeyFrom(MultipathCodec.SERIALIZER_KEY), MULTIPATH_CONVERTOR));
525         registrations.add(extensionConverterRegistrator.registerActionConvertor(
526                 NiciraUtil.createOfJavaKeyFrom(ConntrackCodec.SERIALIZER_KEY), CONNTRACK_CONVERTOR));
527         registrations.add(extensionConverterRegistrator.registerActionConvertor(
528                 NiciraUtil.createOfJavaKeyFrom(CtClearCodec.SERIALIZER_KEY), CT_CLEAR_CONVERTOR));
529         registrations.add(extensionConverterRegistrator.registerActionConvertor(
530                 NiciraUtil.createOfJavaKeyFrom(LearnCodec.SERIALIZER_KEY), LEARN_CONVERTOR));
531         registrations.add(extensionConverterRegistrator.registerActionConvertor(
532                 NiciraUtil.createOfJavaKeyFrom(EncapCodec.SERIALIZER_KEY), ENCAP_CONVERTOR));
533         registrations.add(extensionConverterRegistrator.registerActionConvertor(
534                 NiciraUtil.createOfJavaKeyFrom(DecapCodec.SERIALIZER_KEY), DECAP_CONVERTOR));
535         registrations.add(extensionConverterRegistrator.registerActionConvertor(
536                 NiciraUtil.createOfJavaKeyFrom(LearnCodec.SERIALIZER_KEY), LEARN_CONVERTOR));
537         registrations.add(extensionConverterRegistrator.registerActionConvertor(
538                 NiciraUtil.createOfJavaKeyFrom(DecNshTtlCodec.SERIALIZER_KEY), DEC_NSH_TTL_CONVERTOR));
539
540         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
541                 new ConverterExtensionKey<>(NxmNxReg0Key.VALUE, EncodeConstants.OF_VERSION_1_3), REG_CONVERTOR));
542         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
543                 new ConverterExtensionKey<>(NxmNxReg1Key.VALUE, EncodeConstants.OF_VERSION_1_3), REG_CONVERTOR));
544         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
545                 new ConverterExtensionKey<>(NxmNxReg2Key.VALUE, EncodeConstants.OF_VERSION_1_3), REG_CONVERTOR));
546         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
547                 new ConverterExtensionKey<>(NxmNxReg3Key.VALUE, EncodeConstants.OF_VERSION_1_3), REG_CONVERTOR));
548         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
549                 new ConverterExtensionKey<>(NxmNxReg4Key.VALUE, EncodeConstants.OF_VERSION_1_3), REG_CONVERTOR));
550         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
551                 new ConverterExtensionKey<>(NxmNxReg5Key.VALUE, EncodeConstants.OF_VERSION_1_3), REG_CONVERTOR));
552         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
553                 new ConverterExtensionKey<>(NxmNxReg6Key.VALUE, EncodeConstants.OF_VERSION_1_3), REG_CONVERTOR));
554         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
555                 new ConverterExtensionKey<>(NxmNxReg7Key.VALUE, EncodeConstants.OF_VERSION_1_3), REG_CONVERTOR));
556
557         registrations
558                 .add(extensionConverterRegistrator.registerMatchConvertor(Reg0Codec.SERIALIZER_KEY, REG_CONVERTOR));
559         registrations
560                 .add(extensionConverterRegistrator.registerMatchConvertor(Reg1Codec.SERIALIZER_KEY, REG_CONVERTOR));
561         registrations
562                 .add(extensionConverterRegistrator.registerMatchConvertor(Reg2Codec.SERIALIZER_KEY, REG_CONVERTOR));
563         registrations
564                 .add(extensionConverterRegistrator.registerMatchConvertor(Reg3Codec.SERIALIZER_KEY, REG_CONVERTOR));
565         registrations
566                 .add(extensionConverterRegistrator.registerMatchConvertor(Reg4Codec.SERIALIZER_KEY, REG_CONVERTOR));
567         registrations
568                 .add(extensionConverterRegistrator.registerMatchConvertor(Reg5Codec.SERIALIZER_KEY, REG_CONVERTOR));
569         registrations
570                 .add(extensionConverterRegistrator.registerMatchConvertor(Reg6Codec.SERIALIZER_KEY, REG_CONVERTOR));
571         registrations
572                 .add(extensionConverterRegistrator.registerMatchConvertor(Reg7Codec.SERIALIZER_KEY, REG_CONVERTOR));
573         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
574                 new ConverterExtensionKey<>(NxmNxTunIdKey.VALUE, EncodeConstants.OF_VERSION_1_3), TUN_ID_CONVERTOR));
575         registrations
576                 .add(extensionConverterRegistrator.registerMatchConvertor(TunIdCodec.SERIALIZER_KEY, TUN_ID_CONVERTOR));
577         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
578                 new ConverterExtensionKey<>(NxmNxArpShaKey.VALUE, EncodeConstants.OF_VERSION_1_3), ARP_SHA_CONVERTOR));
579         registrations.add(
580                 extensionConverterRegistrator.registerMatchConvertor(ArpShaCodec.SERIALIZER_KEY, ARP_SHA_CONVERTOR));
581         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
582                 new ConverterExtensionKey<>(NxmNxArpThaKey.VALUE, EncodeConstants.OF_VERSION_1_3), ARP_THA_CONVERTOR));
583         registrations.add(
584                 extensionConverterRegistrator.registerMatchConvertor(ArpThaCodec.SERIALIZER_KEY, ARP_THA_CONVERTOR));
585         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
586                 new ConverterExtensionKey<>(NxmOfArpOpKey.VALUE, EncodeConstants.OF_VERSION_1_3), ARP_OP_CONVERTOR));
587         registrations
588                 .add(extensionConverterRegistrator.registerMatchConvertor(ArpOpCodec.SERIALIZER_KEY, ARP_OP_CONVERTOR));
589         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
590                 new ConverterExtensionKey<>(NxmOfArpSpaKey.VALUE, EncodeConstants.OF_VERSION_1_3), ARP_SPA_CONVERTOR));
591         registrations.add(
592                 extensionConverterRegistrator.registerMatchConvertor(ArpSpaCodec.SERIALIZER_KEY, ARP_SPA_CONVERTOR));
593         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
594                 new ConverterExtensionKey<>(NxmOfArpTpaKey.VALUE, EncodeConstants.OF_VERSION_1_3), ARP_TPA_CONVERTOR));
595         registrations.add(
596                 extensionConverterRegistrator.registerMatchConvertor(ArpTpaCodec.SERIALIZER_KEY, ARP_TPA_CONVERTOR));
597         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
598                 new ConverterExtensionKey<>(NxmOfInPortKey.VALUE, EncodeConstants.OF_VERSION_1_3),
599                 NXM_IN_PORT_CONVERTOR));
600         registrations.add(extensionConverterRegistrator.registerMatchConvertor(InPortCodec.SERIALIZER_KEY,
601                 NXM_IN_PORT_CONVERTOR));
602         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
603                 new ConverterExtensionKey<>(NxmOfEthSrcKey.VALUE, EncodeConstants.OF_VERSION_1_3), ETH_SRC_CONVERTOR));
604         registrations.add(
605                 extensionConverterRegistrator.registerMatchConvertor(EthSrcCodec.SERIALIZER_KEY, ETH_SRC_CONVERTOR));
606         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
607                 new ConverterExtensionKey<>(NxmOfEthDstKey.VALUE, EncodeConstants.OF_VERSION_1_3), ETH_DST_CONVERTOR));
608         registrations.add(
609                 extensionConverterRegistrator.registerMatchConvertor(EthDstCodec.SERIALIZER_KEY, ETH_DST_CONVERTOR));
610         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
611                 new ConverterExtensionKey<>(NxmOfEthTypeKey.VALUE, EncodeConstants.OF_VERSION_1_3),
612                 ETH_TYPE_CONVERTOR));
613         registrations.add(
614                 extensionConverterRegistrator.registerMatchConvertor(EthTypeCodec.SERIALIZER_KEY, ETH_TYPE_CONVERTOR));
615         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
616                 new ConverterExtensionKey<>(NxmNxNspKey.VALUE, EncodeConstants.OF_VERSION_1_3), NSP_CONVERTOR));
617         registrations.add(extensionConverterRegistrator.registerMatchConvertor(NspCodec.SERIALIZER_KEY, NSP_CONVERTOR));
618         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
619                 new ConverterExtensionKey<>(NxmNxNsiKey.VALUE, EncodeConstants.OF_VERSION_1_3), NSI_CONVERTOR));
620         registrations.add(extensionConverterRegistrator.registerMatchConvertor(NsiCodec.SERIALIZER_KEY, NSI_CONVERTOR));
621         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
622                 new ConverterExtensionKey<>(NxmNxNshc1Key.VALUE, EncodeConstants.OF_VERSION_1_3), NSC1_CONVERTOR));
623         registrations
624                 .add(extensionConverterRegistrator.registerMatchConvertor(Nshc1Codec.SERIALIZER_KEY, NSC1_CONVERTOR));
625         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
626                 new ConverterExtensionKey<>(NxmNxNshc2Key.VALUE, EncodeConstants.OF_VERSION_1_3), NSC2_CONVERTOR));
627         registrations
628                 .add(extensionConverterRegistrator.registerMatchConvertor(Nshc2Codec.SERIALIZER_KEY, NSC2_CONVERTOR));
629         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
630                 new ConverterExtensionKey<>(NxmNxNshc3Key.VALUE, EncodeConstants.OF_VERSION_1_3), NSC3_CONVERTOR));
631         registrations
632                 .add(extensionConverterRegistrator.registerMatchConvertor(Nshc3Codec.SERIALIZER_KEY, NSC3_CONVERTOR));
633         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
634                 new ConverterExtensionKey<>(NxmNxNshc4Key.VALUE, EncodeConstants.OF_VERSION_1_3), NSC4_CONVERTOR));
635         registrations
636                 .add(extensionConverterRegistrator.registerMatchConvertor(Nshc4Codec.SERIALIZER_KEY, NSC4_CONVERTOR));
637         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
638                 new ConverterExtensionKey<>(NxmNxNshFlagsKey.VALUE, EncodeConstants.OF_VERSION_1_3),
639                 NSH_FLAGS_CONVERTOR));
640         registrations.add(extensionConverterRegistrator.registerMatchConvertor(NshFlagsCodec.SERIALIZER_KEY,
641                 NSH_FLAGS_CONVERTOR));
642         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
643                 new ConverterExtensionKey<>(NxmNxNshTtlKey.VALUE, EncodeConstants.OF_VERSION_1_3),
644                 NSH_TTL_CONVERTOR));
645         registrations.add(extensionConverterRegistrator.registerMatchConvertor(NshTtlCodec.SERIALIZER_KEY,
646                 NSH_TTL_CONVERTOR));
647         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
648                 new ConverterExtensionKey<>(NxmNxTunIpv4SrcKey.VALUE, EncodeConstants.OF_VERSION_1_3),
649                 TUN_IPV4_SRC_CONVERTOR));
650         registrations.add(extensionConverterRegistrator.registerMatchConvertor(TunIpv4SrcCodec.SERIALIZER_KEY,
651                 TUN_IPV4_SRC_CONVERTOR));
652         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
653                 new ConverterExtensionKey<>(NxmNxTunIpv4DstKey.VALUE, EncodeConstants.OF_VERSION_1_3),
654                 TUN_IPV4_DST_CONVERTOR));
655         registrations.add(extensionConverterRegistrator.registerMatchConvertor(TunIpv4DstCodec.SERIALIZER_KEY,
656                 TUN_IPV4_DST_CONVERTOR));
657         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
658                 new ConverterExtensionKey<>(NxmNxNshMdtypeKey.VALUE, EncodeConstants.OF_VERSION_1_3),
659                 NSH_MDTYPE_CONVERTOR));
660         registrations.add(extensionConverterRegistrator.registerMatchConvertor(NshMdtypeCodec.SERIALIZER_KEY,
661                 NSH_MDTYPE_CONVERTOR));
662         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
663                 new ConverterExtensionKey<>(NxmNxNshNpKey.VALUE, EncodeConstants.OF_VERSION_1_3), NSH_NP_CONVERTOR));
664         registrations.add(
665                 extensionConverterRegistrator.registerMatchConvertor(NshNpCodec.SERIALIZER_KEY, NSH_NP_CONVERTOR));
666         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
667                 new ConverterExtensionKey<>(NxmOfTcpSrcKey.VALUE, EncodeConstants.OF_VERSION_1_3), TCP_SRC_CONVERTOR));
668         registrations.add(
669                 extensionConverterRegistrator.registerMatchConvertor(TcpSrcCodec.SERIALIZER_KEY, TCP_SRC_CONVERTOR));
670         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
671                 new ConverterExtensionKey<>(NxmOfTcpDstKey.VALUE, EncodeConstants.OF_VERSION_1_3), TCP_DST_CONVERTOR));
672         registrations.add(
673                 extensionConverterRegistrator.registerMatchConvertor(TcpDstCodec.SERIALIZER_KEY, TCP_DST_CONVERTOR));
674         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
675                 new ConverterExtensionKey<>(NxmOfUdpSrcKey.VALUE, EncodeConstants.OF_VERSION_1_3), UDP_SRC_CONVERTOR));
676         registrations.add(
677                 extensionConverterRegistrator.registerMatchConvertor(UdpSrcCodec.SERIALIZER_KEY, UDP_SRC_CONVERTOR));
678         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
679                 new ConverterExtensionKey<>(NxmOfUdpDstKey.VALUE, EncodeConstants.OF_VERSION_1_3), UDP_DST_CONVERTOR));
680         registrations.add(
681                 extensionConverterRegistrator.registerMatchConvertor(UdpDstCodec.SERIALIZER_KEY, UDP_DST_CONVERTOR));
682         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
683                 new ConverterExtensionKey<>(NxmNxCtStateKey.VALUE, EncodeConstants.OF_VERSION_1_3),
684                 CT_STATE_CONVERTOR));
685         registrations.add(
686                 extensionConverterRegistrator.registerMatchConvertor(CtStateCodec.SERIALIZER_KEY, CT_STATE_CONVERTOR));
687         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
688                 new ConverterExtensionKey<>(NxmNxCtZoneKey.VALUE, EncodeConstants.OF_VERSION_1_3), CT_ZONE_CONVERTOR));
689         registrations.add(
690                 extensionConverterRegistrator.registerMatchConvertor(CtZoneCodec.SERIALIZER_KEY, CT_ZONE_CONVERTOR));
691         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
692                 new ConverterExtensionKey<>(NxmNxCtMarkKey.VALUE, EncodeConstants.OF_VERSION_1_3), CT_MARK_CONVERTOR));
693         registrations.add(
694                 extensionConverterRegistrator.registerMatchConvertor(CtMarkCodec.SERIALIZER_KEY, CT_MARK_CONVERTOR));
695         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
696                 new ConverterExtensionKey<>(NxmNxCtTpSrcKey.VALUE, EncodeConstants.OF_VERSION_1_3),
697                 CT_TP_SRC_CONVERTOR));
698         registrations.add(
699                 extensionConverterRegistrator.registerMatchConvertor(CtTpSrcCodec.SERIALIZER_KEY, CT_TP_SRC_CONVERTOR));
700         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
701                 new ConverterExtensionKey<>(NxmNxCtTpDstKey.VALUE, EncodeConstants.OF_VERSION_1_3),
702                 CT_TP_DST_CONVERTOR));
703         registrations.add(
704                 extensionConverterRegistrator.registerMatchConvertor(CtTpDstCodec.SERIALIZER_KEY, CT_TP_DST_CONVERTOR));
705         registrations.add(extensionConverterRegistrator.registerMatchConvertor(
706                 new ConverterExtensionKey<>(NxmNxPktMarkKey.VALUE, EncodeConstants.OF_VERSION_1_3),
707                 PKT_MARK_CONVERTOR));
708         registrations.add(
709                 extensionConverterRegistrator.registerMatchConvertor(PktMarkCodec.SERIALIZER_KEY, PKT_MARK_CONVERTOR));
710     }
711
712     @Override
713     @SuppressWarnings("checkstyle:IllegalCatch")
714     public void close() {
715         registrations.forEach(janitor -> {
716             try {
717                 janitor.close();
718             } catch (RuntimeException e) {
719                 LOG.warn("closing of extension converter failed", e);
720             }
721         });
722
723         registrations.clear();
724     }
725
726     private void registerAction13(final Class<? extends Action> actionCaseType, final ConvertorActionToOFJava<
727             org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action,
728             org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action>
729                 actionConvertor) {
730         TypeVersionKey<? extends Action> key = new TypeVersionKey<>(actionCaseType, EncodeConstants.OF_VERSION_1_3);
731         registrations.add(extensionConverterRegistrator.registerActionConvertor(key, actionConvertor));
732     }
733
734     private void registerAction13(final Class<? extends ActionChoice> actionCaseType,
735         final ConvertorActionFromOFJava<
736                 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action,
737                 ActionPath> actionConvertor) {
738         ActionSerializerKey<?> key = new ActionSerializerKey<>(EncodeConstants.OF_VERSION_1_3, actionCaseType,
739                 (Uint32) null);
740         registrations.add(extensionConverterRegistrator.registerActionConvertor(key, actionConvertor));
741     }
742 }