2 * Copyright (c) 2016 Ericsson India Global Services Pvt Ltd. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.genius.mdsalutil;
10 import org.opendaylight.yangtools.yang.common.Uint64;
12 public interface NwConstants {
15 int ETHTYPE_802_1Q = 0X8100;
16 int ETHTYPE_IPV4 = 0X0800;
17 int ETHTYPE_IPV6 = 0x86dd;
18 int ETHTYPE_ARP = 0X0806;
20 int ETHTYPE_MPLS_UC = 0X8847;
21 int ETHTYPE_PBB = 0X88E7;
23 String MACADDR_SEP = ":";
25 String IPV4PREFIX = "/32";
26 String IPV6PREFIX = "/128";
27 String IPV4_SEP = ".";
28 String IPV6_SEP = ":";
41 int UDP_DEFAULT_PORT = 4789;
50 String FLOWID_SEPARATOR = ".";
51 int TABLE_MISS_FLOW = 0;
52 int TABLE_MISS_PRIORITY = 0;
54 int DEFAULT_ARP_FLOW_PRIORITY = 100;
56 // Ingress (w.r.t switch) service indexes
57 short DEFAULT_SERVICE_INDEX = 0;
58 short SFC_SERVICE_INDEX = 1;
59 short SCF_SERVICE_INDEX = 1;
60 short ACL_SERVICE_INDEX = 2;
61 short INGRESS_COUNTERS_SERVICE_INDEX = 3;
62 short SFC_CLASSIFIER_INDEX = 4;
63 short DHCP_SERVICE_INDEX = 5;
64 short QOS_SERVICE_INDEX = 6;
65 short IPV6_SERVICE_INDEX = 7;
66 short COE_KUBE_PROXY_SERVICE_INDEX = 8;
67 short L3VPN_SERVICE_INDEX = 9;
68 short L3_VPNV6_SERVICE_INDEX = 10;
69 short ELAN_SERVICE_INDEX = 11;
71 String DHCP_SERVICE_NAME = "DHCP_SERVICE";
72 String ACL_SERVICE_NAME = "ACL_SERVICE";
73 String QOS_SERVICE_NAME = "QOS_SERVICE";
74 String IPV6_SERVICE_NAME = "IPV6_SERVICE";
75 String SCF_SERVICE_NAME = "SCF_SERVICE";
76 String SFC_SERVICE_NAME = "SFC_SERVICE";
77 String L3VPN_SERVICE_NAME = "L3VPN_SERVICE";
78 String ELAN_SERVICE_NAME = "ELAN_SERVICE";
79 String SFC_CLASSIFIER_SERVICE_NAME = "SFC_CLASSIFIER_SERVICE";
80 String DEFAULT_EGRESS_SERVICE_NAME = "DEFAULT_EGRESS_SERVICE";
81 String L3_VPNV6_SERVICE_NAME = "VPNV6 SERVICE";
82 String COE_KUBE_PROXY_SERVICE_NAME = "COE_KUBE_PROXY_SERVICE";
84 // Egress (w.r.t switch) service indexes
85 short EGRESS_ACL_SERVICE_INDEX = 6;
86 short EGRESS_POLICY_SERVICE_INDEX = 6;
87 short EGRESS_COUNTERS_SERVICE_INDEX = 7;
88 short EGRESS_SFC_CLASSIFIER_SERVICE_INDEX = 8;
89 short DEFAULT_EGRESS_SERVICE_INDEX = 9;
91 String EGRESS_ACL_SERVICE_NAME = "EGRESS_ACL_SERVICE";
92 String EGRESS_POLICY_SERVICE_NAME = "EGRESS_POLICY_SERVICE";
93 String EGRESS_SFC_CLASSIFIER_SERVICE_NAME = "EGRESS_SFC_CLASSIFIER_SERVICE";
94 String INGRESS_COUNTERS_SERVICE_NAME = "INGRESS_COUNTERS_SERVICE";
95 String EGRESS_COUNTERS_SERVICE_NAME = "EGRESS_COUNTERS_SERVICE";
97 // FIXME: There are more efficient ways to express these constants
98 Uint64 COOKIE_IPV6_TABLE = Uint64.valueOf("4000000", 16).intern();
99 Uint64 COOKIE_QOS_TABLE = Uint64.valueOf("4000001", 16).intern();
100 Uint64 VLAN_TABLE_COOKIE = Uint64.valueOf("8000000", 16).intern();
101 Uint64 COOKIE_VM_INGRESS_TABLE = Uint64.valueOf("8000001", 16).intern();
102 Uint64 COOKIE_VM_LFIB_TABLE = Uint64.valueOf("8000002", 16).intern();
103 Uint64 COOKIE_VM_FIB_TABLE = Uint64.valueOf("8000003", 16).intern();
104 Uint64 COOKIE_DNAT_TABLE = Uint64.valueOf("8000004", 16).intern();
105 Uint64 COOKIE_TS_TABLE = Uint64.valueOf("8000005", 16).intern();
106 Uint64 COOKIE_SNAT_TABLE = Uint64.valueOf("8000006", 16).intern();
107 Uint64 EGRESS_DISPATCHER_TABLE_COOKIE = Uint64.valueOf("8000007", 16).intern();
108 Uint64 COOKIE_OUTBOUND_NAPT_TABLE = Uint64.valueOf("8000008", 16).intern();
109 Uint64 COOKIE_L3_GW_MAC_TABLE = Uint64.valueOf("8000009", 16).intern();
110 Uint64 COOKIE_SUBNET_ROUTE_TABLE_MISS = Uint64.valueOf("8000010", 16).intern();
111 Uint64 EGRESS_POLICY_CLASSIFIER_COOKIE = Uint64.valueOf("8000230", 16).intern();
112 Uint64 EGRESS_POLICY_ROUTING_COOKIE = Uint64.valueOf("8000231", 16).intern();
113 Uint64 COOKIE_VXLAN_TRUNK_L2_TABLE = Uint64.valueOf("1200000", 16).intern();
114 Uint64 COOKIE_GRE_TRUNK_L2_TABLE = Uint64.valueOf("1400000", 16).intern();
115 Uint64 COOKIE_ELAN_INGRESS_TABLE = Uint64.valueOf("8040000", 16).intern();
116 Uint64 TUNNEL_TABLE_COOKIE = Uint64.valueOf("9000000", 16).intern();
117 Uint64 COOKIE_ARP_RESPONDER = Uint64.valueOf("8220000", 16).intern();
118 Uint64 COOKIE_COE_KUBE_PROXY_TABLE = Uint64.valueOf("8230000", 16).intern();
119 Uint64 COOKIE_ITM_EGRESS_TUNNEL_TABLE = Uint64.valueOf("8000000", 16).intern();
122 short VLAN_INTERFACE_INGRESS_TABLE = 0;
123 short VXLAN_TRUNK_INTERFACE_TABLE = 10;
124 short TRUNK_L2_TABLE = 11;
125 short GRE_TRUNK_INTERFACE_TABLE = 12;
126 short LPORT_DISPATCHER_TABLE = 17;
127 short DHCP_TABLE_EXTERNAL_TUNNEL = 18;
128 short L3_GW_MAC_TABLE = 19;
129 short L3_LFIB_TABLE = 20;
130 short L3_FIB_TABLE = 21;
131 short L3_SUBNET_ROUTE_TABLE = 22;
132 short L3VNI_EXTERNAL_TUNNEL_DEMUX_TABLE = 23;
133 short L2VNI_EXTERNAL_TUNNEL_DEMUX_TABLE = 24;
134 short PDNAT_TABLE = 25;
135 short PSNAT_TABLE = 26;
136 short DNAT_TABLE = 27;
137 short SNAT_TABLE = 28;
138 short INTERNAL_TUNNEL_TABLE = 36;
139 short EXTERNAL_TUNNEL_TABLE = 38;
140 short ARP_CHECK_TABLE = 43;
141 short ARP_LEARN_TABLE_1 = 195;
142 short ARP_LEARN_TABLE_2 = 196;
143 short INBOUND_NAPT_TABLE = 44;
144 short IPV6_TABLE = 45;
145 short OUTBOUND_NAPT_TABLE = 46;
146 short NAPT_PFIB_TABLE = 47;
147 short ELAN_BASE_TABLE = 48;
148 short ELAN_SMAC_LEARNED_TABLE = 49;
149 short ELAN_SMAC_TABLE = 50;
150 short ELAN_DMAC_TABLE = 51;
151 short ELAN_UNKNOWN_DMAC_TABLE = 52;
152 short ELAN_FILTER_EQUALS_TABLE = 55;
153 short DHCP_TABLE = 60;
154 short SCF_UP_SUB_FILTER_TCP_BASED_TABLE = 70;
155 short SCF_DOWN_SUB_FILTER_TCP_BASED_TABLE = 72;
156 short SCF_CHAIN_FWD_TABLE = 75;
157 short L3_INTERFACE_TABLE = 80;
158 short ARP_RESPONDER_TABLE = 81;
159 short SFC_TRANSPORT_CLASSIFIER_TABLE = 82;
160 short SFC_TRANSPORT_INGRESS_TABLE = 83;
161 short SFC_TRANSPORT_PATH_MAPPER_TABLE = 84;
162 short SFC_TRANSPORT_PATH_MAPPER_ACL_TABLE = 85;
163 short SFC_TRANSPORT_NEXT_HOP_TABLE = 86;
164 short SFC_TRANSPORT_EGRESS_TABLE = 87;
165 short QOS_DSCP_TABLE = 90;
166 short EGRESS_TUNNEL_TABLE = 95;
167 short INGRESS_SFC_CLASSIFIER_FILTER_TABLE = 100;
168 short INGRESS_SFC_CLASSIFIER_ACL_TABLE = 101;
169 short COE_KUBE_PROXY_TABLE = 180;
170 short INGRESS_ACL_ANTI_SPOOFING_TABLE = 210;
171 short INGRESS_ACL_CONNTRACK_CLASSIFIER_TABLE = 211;
172 short INGRESS_ACL_CONNTRACK_SENDER_TABLE = 212;
173 short INGRESS_ACL_FOR_EXISTING_TRAFFIC_TABLE = 213;
174 short INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE = 214;
175 short INGRESS_ACL_RULE_BASED_FILTER_TABLE = 215;
176 short INGRESS_REMOTE_ACL_TABLE = 216;
177 short INGRESS_ACL_COMMITTER_TABLE = 217;
178 short INGRESS_COUNTERS_TABLE = 219;
179 short EGRESS_LPORT_DISPATCHER_TABLE = 220;
180 short EGRESS_SFC_CLASSIFIER_FILTER_TABLE = 221;
181 short EGRESS_SFC_CLASSIFIER_NEXTHOP_TABLE = 222;
182 short EGRESS_SFC_CLASSIFIER_EGRESS_TABLE = 223;
183 short EGRESS_POLICY_CLASSIFIER_TABLE = 230;
184 short EGRESS_POLICY_ROUTING_TABLE = 231;
185 short EGRESS_ACL_DUMMY_TABLE = 239;
186 short EGRESS_ACL_ANTI_SPOOFING_TABLE = 240;
187 short EGRESS_ACL_CONNTRACK_CLASSIFIER_TABLE = 241;
188 short EGRESS_ACL_CONNTRACK_SENDER_TABLE = 242;
189 short EGRESS_ACL_FOR_EXISTING_TRAFFIC_TABLE = 243;
190 short EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE = 244;
191 short EGRESS_ACL_RULE_BASED_FILTER_TABLE = 245;
192 short EGRESS_REMOTE_ACL_TABLE = 246;
193 short EGRESS_ACL_COMMITTER_TABLE = 247;
194 short EGRESS_COUNTERS_TABLE = 249;
197 String ODL_VNI_POOL_NAME = "opendaylight-vni-ranges";
198 long VNI_DEFAULT_LOW_VALUE = 70000L;
199 long VNI_DEFAULT_HIGH_VALUE = 99999L;
201 String ODL_RD_POOL_NAME = "opendaylight-rd-ranges";
202 String RD_DEFAULT_LOW_VALUE = "100:1";
203 long RD_DEFAULT_COUNT = 65535L;
204 long RD_MAX_VALUE_FIELD = 65535L;
206 enum NxmOfFieldType {
207 NXM_OF_IN_PORT(0x0000, 0, 2, 16),
208 NXM_OF_ETH_DST(0x0000, 1, 6, 48),
209 NXM_OF_ETH_SRC(0x0000, 2, 6, 48),
210 NXM_OF_ETH_TYPE(0x0000, 3, 2, 16),
211 NXM_OF_VLAN_TCI(0x0000, 4, 2, 12),
212 NXM_OF_IP_TOS(0x0000, 5, 1, 8),
213 NXM_OF_IP_PROTO(0x0000, 6, 1, 8),
214 NXM_OF_IP_SRC(0x0000, 7, 4, 32),
215 NXM_OF_IP_DST(0x0000, 8, 4, 32),
216 NXM_OF_TCP_SRC(0x0000, 9, 2, 16),
217 NXM_OF_TCP_DST(0x0000, 10, 2, 16),
218 NXM_OF_UDP_SRC(0x0000, 11, 2, 16),
219 NXM_OF_UDP_DST(0x0000, 12, 2, 16),
220 NXM_OF_ICMP_TYPE(0x0000, 13, 1, 8),
221 NXM_OF_ICMP_CODE(0x0000, 14, 1, 8),
222 NXM_OF_ARP_OP(0x0000, 15, 2, 16),
223 NXM_OF_ARP_SPA(0x0000, 16, 4, 32),
224 NXM_OF_ARP_TPA(0x0000, 17, 4, 32),
225 NXM_NX_IPV6_SRC(0x0001, 19, 16, 128),
226 NXM_NX_IPV6_DST(0x0001, 20, 16, 128),
227 NXM_OF_ICMPv6_TYPE(0x0001, 21, 1, 8),
228 NXM_OF_ICMPv6_CODE(0x0001, 22, 1, 8),
229 NXM_NX_ND_TARGET(0x0001, 23, 16, 128),
230 NXM_NX_ND_TARGET_W(0x0001, 23, 16, 128),
231 OXM_OF_ICMPV6_TYPE(0x8000L, 29, 1, 8),
232 OXM_OF_IPV6_ND_TARGET(0x8000L, 31, 16, 128),
233 NXM_NX_ND_SLL(0x0001, 24, 6, 48),
234 NXM_NX_ND_TLL(0x0001, 25, 6, 48),
235 NXM_NX_IP_FRAG(0x0001, 26, 1, 8),
236 NXM_NX_IP_FRAG_W(0x0001, 26, 1, 8),
237 NXM_NX_IPV6_LABEL(0x0001, 27, 4, 20),
238 NXM_NX_IP_ECN(0x0001, 28, 1, 2),
239 NXM_NX_IP_TTL(0x0001, 29, 1, 8),
240 NXM_NX_COOKIE(0x0001, 30, 8, 64),
241 NXM_NX_COOKIE_W(0x0001, 30, 8, 64),
242 OXM_OF_METADATA(0x8000L, 2, 8, -1),
243 NXM_NX_REG0(0x0001, 0, 4, -1),
244 NXM_NX_REG1(0x0001, 1, 4, -1),
245 NXM_NX_REG2(0x0001, 2, 4, -1),
246 NXM_NX_REG3(0x0001, 3, 4, -1),
247 NXM_NX_REG4(0x0001, 4, 4, -1),
248 NXM_NX_REG5(0x0001, 5, 4, -1),
249 NXM_NX_REG6(0x0001, 6, 4, -1),
250 NXM_NX_REG7(0x0001, 7, 4, -1);
253 int flowModHeaderLen;
255 NxmOfFieldType(long vendor, long field, long length, int flowModHeaderLen) {
256 type = nxmHeader(vendor, field, length);
257 this.flowModHeaderLen = flowModHeaderLen;
260 private static long nxmHeader(long vendor, long field, long length) {
261 return vendor << 16 | field << 9 | length;
265 public String getHexType() {
266 return String.valueOf(type);
269 public long getType() {
274 public String getFlowModHeaderLen() {
275 return String.valueOf(flowModHeaderLen);
278 public int getFlowModHeaderLenInt() {
279 return flowModHeaderLen;