Shard Status logic in genius
[genius.git] / mdsalutil / mdsalutil-api / src / main / java / org / opendaylight / genius / mdsalutil / NwConstants.java
1 /*
2  * Copyright (c) 2016 Ericsson India Global Services Pvt Ltd. 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.genius.mdsalutil;
9
10
11 import java.util.ArrayList;
12 import java.util.List;
13 import org.opendaylight.yangtools.yang.common.Uint64;
14
15 public interface NwConstants {
16
17     // EthType Values
18     int ETHTYPE_802_1Q            = 0X8100;
19     int ETHTYPE_IPV4              = 0X0800;
20     int ETHTYPE_IPV6              = 0x86dd;
21     int ETHTYPE_ARP               = 0X0806;
22
23     int ETHTYPE_MPLS_UC           = 0X8847;
24     int ETHTYPE_PBB               = 0X88E7;
25
26     String MACADDR_SEP = ":";
27
28     String IPV4PREFIX = "/32";
29     String IPV6PREFIX = "/128";
30     String IPV4_SEP = ".";
31     String IPV6_SEP = ":";
32
33     //Protocol Type
34     int IP_PROT_ICMP = 1;
35     int IP_PROT_TCP = 6;
36     int IP_PROT_UDP = 17;
37     int IP_PROT_GRE = 47;
38
39     //ARP TYPE
40     int ARP_REQUEST = 1;
41     int ARP_REPLY = 2;
42
43     //Default Port
44     int UDP_DEFAULT_PORT = 4789;
45
46
47     // Flow Actions
48     int ADD_FLOW = 0;
49     int DEL_FLOW = 1;
50     int MOD_FLOW = 2;
51
52     // Flow Constants
53     String FLOWID_SEPARATOR = ".";
54     int TABLE_MISS_FLOW = 0;
55     int TABLE_MISS_PRIORITY = 0;
56
57     int DEFAULT_ARP_FLOW_PRIORITY = 100;
58
59     // Ingress (w.r.t switch) service indexes
60     short DEFAULT_SERVICE_INDEX = 0;
61     short SFC_SERVICE_INDEX = 1;
62     short SCF_SERVICE_INDEX = 1;
63     short ACL_SERVICE_INDEX = 2;
64     short INGRESS_COUNTERS_SERVICE_INDEX = 3;
65     short SFC_CLASSIFIER_INDEX = 4;
66     short DHCP_SERVICE_INDEX = 5;
67     short QOS_SERVICE_INDEX = 6;
68     short IPV6_SERVICE_INDEX = 7;
69     short COE_KUBE_PROXY_SERVICE_INDEX = 8;
70     short L3VPN_SERVICE_INDEX = 9;
71     short L3_VPNV6_SERVICE_INDEX = 10;
72     short ELAN_SERVICE_INDEX = 11;
73
74     String DHCP_SERVICE_NAME = "DHCP_SERVICE";
75     String ACL_SERVICE_NAME = "ACL_SERVICE";
76     String QOS_SERVICE_NAME = "QOS_SERVICE";
77     String IPV6_SERVICE_NAME = "IPV6_SERVICE";
78     String SCF_SERVICE_NAME = "SCF_SERVICE";
79     String SFC_SERVICE_NAME = "SFC_SERVICE";
80     String L3VPN_SERVICE_NAME = "L3VPN_SERVICE";
81     String ELAN_SERVICE_NAME = "ELAN_SERVICE";
82     String SFC_CLASSIFIER_SERVICE_NAME = "SFC_CLASSIFIER_SERVICE";
83     String DEFAULT_EGRESS_SERVICE_NAME = "DEFAULT_EGRESS_SERVICE";
84     String L3_VPNV6_SERVICE_NAME = "VPNV6 SERVICE";
85     String COE_KUBE_PROXY_SERVICE_NAME = "COE_KUBE_PROXY_SERVICE";
86
87     // Egress (w.r.t switch) service indexes
88     short EGRESS_ACL_SERVICE_INDEX = 6;
89     short EGRESS_POLICY_SERVICE_INDEX = 6;
90     short EGRESS_COUNTERS_SERVICE_INDEX = 7;
91     short EGRESS_SFC_CLASSIFIER_SERVICE_INDEX = 8;
92     short DEFAULT_EGRESS_SERVICE_INDEX = 9;
93
94     String EGRESS_ACL_SERVICE_NAME = "EGRESS_ACL_SERVICE";
95     String EGRESS_POLICY_SERVICE_NAME = "EGRESS_POLICY_SERVICE";
96     String EGRESS_SFC_CLASSIFIER_SERVICE_NAME = "EGRESS_SFC_CLASSIFIER_SERVICE";
97     String INGRESS_COUNTERS_SERVICE_NAME = "INGRESS_COUNTERS_SERVICE";
98     String EGRESS_COUNTERS_SERVICE_NAME = "EGRESS_COUNTERS_SERVICE";
99
100     // FIXME: There are more efficient ways to express these constants
101     Uint64 COOKIE_IPV6_TABLE = Uint64.valueOf("4000000", 16).intern();
102     Uint64 COOKIE_QOS_TABLE = Uint64.valueOf("4000001", 16).intern();
103     Uint64 VLAN_TABLE_COOKIE = Uint64.valueOf("8000000", 16).intern();
104     Uint64 COOKIE_VM_INGRESS_TABLE = Uint64.valueOf("8000001", 16).intern();
105     Uint64 COOKIE_VM_LFIB_TABLE = Uint64.valueOf("8000002", 16).intern();
106     Uint64 COOKIE_VM_FIB_TABLE = Uint64.valueOf("8000003", 16).intern();
107     Uint64 COOKIE_DNAT_TABLE = Uint64.valueOf("8000004", 16).intern();
108     Uint64 COOKIE_TS_TABLE = Uint64.valueOf("8000005", 16).intern();
109     Uint64 COOKIE_SNAT_TABLE = Uint64.valueOf("8000006", 16).intern();
110     Uint64 EGRESS_DISPATCHER_TABLE_COOKIE = Uint64.valueOf("8000007", 16).intern();
111     Uint64 COOKIE_OUTBOUND_NAPT_TABLE = Uint64.valueOf("8000008", 16).intern();
112     Uint64 COOKIE_L3_GW_MAC_TABLE = Uint64.valueOf("8000009", 16).intern();
113     Uint64 COOKIE_SUBNET_ROUTE_TABLE_MISS = Uint64.valueOf("8000010", 16).intern();
114     Uint64 EGRESS_POLICY_CLASSIFIER_COOKIE = Uint64.valueOf("8000230", 16).intern();
115     Uint64 EGRESS_POLICY_ROUTING_COOKIE = Uint64.valueOf("8000231", 16).intern();
116     Uint64 COOKIE_VXLAN_TRUNK_L2_TABLE = Uint64.valueOf("1200000", 16).intern();
117     Uint64 COOKIE_GRE_TRUNK_L2_TABLE = Uint64.valueOf("1400000", 16).intern();
118     Uint64 COOKIE_ELAN_INGRESS_TABLE = Uint64.valueOf("8040000", 16).intern();
119     Uint64 TUNNEL_TABLE_COOKIE = Uint64.valueOf("9000000", 16).intern();
120     Uint64 COOKIE_ARP_RESPONDER = Uint64.valueOf("8220000", 16).intern();
121     Uint64 COOKIE_COE_KUBE_PROXY_TABLE = Uint64.valueOf("8230000", 16).intern();
122     Uint64 COOKIE_ITM_EGRESS_TUNNEL_TABLE = Uint64.valueOf("8000000", 16).intern();
123
124     //Table IDs
125     short VLAN_INTERFACE_INGRESS_TABLE = 0;
126     short VXLAN_TRUNK_INTERFACE_TABLE = 10;
127     short TRUNK_L2_TABLE = 11;
128     short GRE_TRUNK_INTERFACE_TABLE = 12;
129     short LPORT_DISPATCHER_TABLE = 17;
130     short DHCP_TABLE_EXTERNAL_TUNNEL = 18;
131     short L3_GW_MAC_TABLE = 19;
132     short L3_LFIB_TABLE = 20;
133     short L3_FIB_TABLE = 21;
134     short L3_SUBNET_ROUTE_TABLE = 22;
135     short L3VNI_EXTERNAL_TUNNEL_DEMUX_TABLE = 23;
136     short L2VNI_EXTERNAL_TUNNEL_DEMUX_TABLE = 24;
137     short PDNAT_TABLE = 25;
138     short PSNAT_TABLE = 26;
139     short DNAT_TABLE = 27;
140     short SNAT_TABLE = 28;
141     short INTERNAL_TUNNEL_TABLE = 36;
142     short EXTERNAL_TUNNEL_TABLE = 38;
143     short ARP_CHECK_TABLE = 43;
144     short ARP_LEARN_TABLE_1 = 195;
145     short ARP_LEARN_TABLE_2 = 196;
146     short INBOUND_NAPT_TABLE = 44;
147     short IPV6_TABLE = 45;
148     short OUTBOUND_NAPT_TABLE = 46;
149     short NAPT_PFIB_TABLE = 47;
150     short ELAN_BASE_TABLE = 48;
151     short ELAN_SMAC_LEARNED_TABLE = 49;
152     short ELAN_SMAC_TABLE = 50;
153     short ELAN_DMAC_TABLE = 51;
154     short ELAN_UNKNOWN_DMAC_TABLE = 52;
155     short ELAN_FILTER_EQUALS_TABLE = 55;
156     short DHCP_TABLE = 60;
157     short SCF_UP_SUB_FILTER_TCP_BASED_TABLE = 70;
158     short SCF_DOWN_SUB_FILTER_TCP_BASED_TABLE = 72;
159     short SCF_CHAIN_FWD_TABLE = 75;
160     short L3_INTERFACE_TABLE = 80;
161     short ARP_RESPONDER_TABLE = 81;
162     short SFC_TRANSPORT_CLASSIFIER_TABLE = 82;
163     short SFC_TRANSPORT_INGRESS_TABLE = 83;
164     short SFC_TRANSPORT_PATH_MAPPER_TABLE = 84;
165     short SFC_TRANSPORT_PATH_MAPPER_ACL_TABLE = 85;
166     short SFC_TRANSPORT_NEXT_HOP_TABLE = 86;
167     short SFC_TRANSPORT_EGRESS_TABLE = 87;
168     short QOS_DSCP_TABLE = 90;
169     short EGRESS_TUNNEL_TABLE = 95;
170     short INGRESS_SFC_CLASSIFIER_FILTER_TABLE = 100;
171     short INGRESS_SFC_CLASSIFIER_ACL_TABLE = 101;
172     short COE_KUBE_PROXY_TABLE = 180;
173     short INGRESS_ACL_ANTI_SPOOFING_TABLE = 210;
174     short INGRESS_ACL_CONNTRACK_CLASSIFIER_TABLE = 211;
175     short INGRESS_ACL_CONNTRACK_SENDER_TABLE = 212;
176     short INGRESS_ACL_FOR_EXISTING_TRAFFIC_TABLE = 213;
177     short INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE = 214;
178     short INGRESS_ACL_RULE_BASED_FILTER_TABLE = 215;
179     short INGRESS_REMOTE_ACL_TABLE = 216;
180     short INGRESS_ACL_COMMITTER_TABLE = 217;
181     short INGRESS_COUNTERS_TABLE = 219;
182     short EGRESS_LPORT_DISPATCHER_TABLE = 220;
183     short EGRESS_SFC_CLASSIFIER_FILTER_TABLE = 221;
184     short EGRESS_SFC_CLASSIFIER_NEXTHOP_TABLE = 222;
185     short EGRESS_SFC_CLASSIFIER_EGRESS_TABLE = 223;
186     short EGRESS_POLICY_CLASSIFIER_TABLE = 230;
187     short EGRESS_POLICY_ROUTING_TABLE = 231;
188     short EGRESS_ACL_DUMMY_TABLE = 239;
189     short EGRESS_ACL_ANTI_SPOOFING_TABLE = 240;
190     short EGRESS_ACL_CONNTRACK_CLASSIFIER_TABLE = 241;
191     short EGRESS_ACL_CONNTRACK_SENDER_TABLE = 242;
192     short EGRESS_ACL_FOR_EXISTING_TRAFFIC_TABLE = 243;
193     short EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE = 244;
194     short EGRESS_ACL_RULE_BASED_FILTER_TABLE = 245;
195     short EGRESS_REMOTE_ACL_TABLE = 246;
196     short EGRESS_ACL_COMMITTER_TABLE = 247;
197     short EGRESS_COUNTERS_TABLE = 249;
198
199     // Id Pool Details
200     String ODL_VNI_POOL_NAME = "opendaylight-vni-ranges";
201     long VNI_DEFAULT_LOW_VALUE = 70000L;
202     long VNI_DEFAULT_HIGH_VALUE = 99999L;
203
204     String ODL_RD_POOL_NAME = "opendaylight-rd-ranges";
205     String RD_DEFAULT_LOW_VALUE = "100:1";
206     long RD_DEFAULT_COUNT = 65535L;
207     long RD_MAX_VALUE_FIELD = 65535L;
208
209     enum NxmOfFieldType {
210         NXM_OF_IN_PORT(0x0000, 0, 2, 16),
211         NXM_OF_ETH_DST(0x0000, 1, 6, 48),
212         NXM_OF_ETH_SRC(0x0000, 2, 6, 48),
213         NXM_OF_ETH_TYPE(0x0000, 3, 2, 16),
214         NXM_OF_VLAN_TCI(0x0000, 4, 2, 12),
215         NXM_OF_IP_TOS(0x0000, 5, 1, 8),
216         NXM_OF_IP_PROTO(0x0000, 6, 1, 8),
217         NXM_OF_IP_SRC(0x0000, 7, 4, 32),
218         NXM_OF_IP_DST(0x0000, 8, 4, 32),
219         NXM_OF_TCP_SRC(0x0000, 9, 2, 16),
220         NXM_OF_TCP_DST(0x0000, 10, 2, 16),
221         NXM_OF_UDP_SRC(0x0000, 11, 2, 16),
222         NXM_OF_UDP_DST(0x0000, 12, 2, 16),
223         NXM_OF_ICMP_TYPE(0x0000, 13, 1, 8),
224         NXM_OF_ICMP_CODE(0x0000, 14, 1, 8),
225         NXM_OF_ARP_OP(0x0000, 15, 2, 16),
226         NXM_OF_ARP_SPA(0x0000, 16, 4, 32),
227         NXM_OF_ARP_TPA(0x0000, 17, 4, 32),
228         NXM_NX_IPV6_SRC(0x0001, 19, 16, 128),
229         NXM_NX_IPV6_DST(0x0001, 20, 16, 128),
230         NXM_OF_ICMPv6_TYPE(0x0001, 21, 1, 8),
231         NXM_OF_ICMPv6_CODE(0x0001, 22, 1, 8),
232         NXM_NX_ND_TARGET(0x0001, 23, 16, 128),
233         NXM_NX_ND_TARGET_W(0x0001, 23, 16, 128),
234         OXM_OF_ICMPV6_TYPE(0x8000L, 29, 1, 8),
235         OXM_OF_IPV6_ND_TARGET(0x8000L, 31, 16, 128),
236         NXM_NX_ND_SLL(0x0001, 24, 6, 48),
237         NXM_NX_ND_TLL(0x0001, 25, 6, 48),
238         NXM_NX_IP_FRAG(0x0001, 26, 1, 8),
239         NXM_NX_IP_FRAG_W(0x0001, 26, 1, 8),
240         NXM_NX_IPV6_LABEL(0x0001, 27, 4, 20),
241         NXM_NX_IP_ECN(0x0001, 28, 1, 2),
242         NXM_NX_IP_TTL(0x0001, 29, 1, 8),
243         NXM_NX_COOKIE(0x0001, 30, 8, 64),
244         NXM_NX_COOKIE_W(0x0001, 30, 8, 64),
245         OXM_OF_METADATA(0x8000L, 2, 8, -1),
246         NXM_NX_REG0(0x0001, 0, 4, -1),
247         NXM_NX_REG1(0x0001, 1, 4, -1),
248         NXM_NX_REG2(0x0001, 2, 4, -1),
249         NXM_NX_REG3(0x0001, 3, 4, -1),
250         NXM_NX_REG4(0x0001, 4, 4, -1),
251         NXM_NX_REG5(0x0001, 5, 4, -1),
252         NXM_NX_REG6(0x0001, 6, 4, -1),
253         NXM_NX_REG7(0x0001, 7, 4, -1);
254
255         long type;
256         int flowModHeaderLen;
257
258         NxmOfFieldType(long vendor, long field, long length, int flowModHeaderLen) {
259             type = nxmHeader(vendor, field, length);
260             this.flowModHeaderLen = flowModHeaderLen;
261         }
262
263         private static long nxmHeader(long vendor, long field, long length) {
264             return vendor << 16 | field << 9 | length;
265         }
266
267         @Deprecated
268         public String getHexType() {
269             return String.valueOf(type);
270         }
271
272         public long getType() {
273             return type;
274         }
275
276         @Deprecated
277         public String getFlowModHeaderLen() {
278             return String.valueOf(flowModHeaderLen);
279         }
280
281         public int getFlowModHeaderLenInt() {
282             return flowModHeaderLen;
283         }
284     }
285
286     enum IdManagerShards {
287         DefaultConfig("default:config"),
288         DefaultOper("default:oper"),
289         InventoryConfig("inventory:config"),
290         InventoryOper("inventory:oper"),
291         TopologyConfig("topology:config"),
292         TopologyOper("topology:oper"),
293         EntityOper("entity:oper");
294
295         private String shardName;
296
297         IdManagerShards(String shardName) {
298             this.shardName = shardName;
299         }
300
301         public static List<String> getShardList() {
302             List<String> list = new ArrayList<>();
303             for (IdManagerShards val : IdManagerShards.values()) {
304                 list.add(val.shardName);
305             }
306             return list;
307         }
308     }
309 }