Merge "AsyncEventsWaiter with TestableDataTreeChangeListener"
[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 import java.math.BigInteger;
11
12 public final class NwConstants {
13
14     // EthType Values
15     public static final int ETHTYPE_802_1Q            = 0X8100;
16     public static final int ETHTYPE_IPV4              = 0X0800;
17     public static final int ETHTYPE_IPV6              = 0x86dd;
18     public static final int ETHTYPE_ARP               = 0X0806;
19
20     public static final int ETHTYPE_MPLS_UC           = 0X8847;
21     public static final int ETHTYPE_PBB               = 0X88E7;
22
23     public static final String IPV4PREFIX = "/32";
24     public static final String IPV6PREFIX = "/128";
25
26     //Protocol Type
27     public static final int IP_PROT_ICMP = 1;
28     public static final int IP_PROT_TCP = 6;
29     public static final int IP_PROT_UDP = 17;
30     public static final int IP_PROT_GRE = 47;
31
32     //ARP TYPE
33     public static final int ARP_REQUEST = 1;
34     public static final int ARP_REPLY = 2;
35
36     //Default Port
37     public static final int UDP_DEFAULT_PORT = 4789;
38
39
40     // Flow Actions
41     public static final int ADD_FLOW = 0;
42     public static final int DEL_FLOW = 1;
43     public static final int MOD_FLOW = 2;
44
45     // Flow Constants
46     public static final String FLOWID_SEPARATOR = ".";
47     public static final int TABLE_MISS_FLOW = 0;
48     public static final int TABLE_MISS_PRIORITY = 0;
49
50     public static final int DEFAULT_ARP_FLOW_PRIORITY = 100;
51
52     // Ingress (w.r.t switch) service indexes
53     public static final short DEFAULT_SERVICE_INDEX = 0;
54     public static final short ACL_SERVICE_INDEX = 1;
55     public static final short DHCP_SERVICE_INDEX = 2;
56     public static final short IPV6_SERVICE_INDEX = 3;
57     public static final short SCF_SERVICE_INDEX = 4;
58     public static final short SFC_SERVICE_INDEX = 4;
59     public static final short L3VPN_SERVICE_INDEX = 5;
60     public static final short ELAN_SERVICE_INDEX = 6;
61     public static final short DEFAULT_EGRESS_SERVICE_INDEX = 7;
62
63     public static final String DHCP_SERVICE_NAME = "DHCP_SERVICE";
64     public static final String ACL_SERVICE_NAME = "ACL_SERVICE";
65     public static final String IPV6_SERVICE_NAME = "IPV6_SERVICE";
66     public static final String SCF_SERVICE_NAME = "SCF_SERVICE";
67     public static final String SFC_SERVICE_NAME = "SFC_SERVICE";
68     public static final String L3VPN_SERVICE_NAME = "L3VPN_SERVICE";
69     public static final String ELAN_SERVICE_NAME = "ELAN_SERVICE";
70     public static final String DEFAULT_EGRESS_SERVICE_NAME = "DEFAULT_EGRESS_SERVICE";
71
72     // Egress (w.r.t switch) service indexes
73     public static final short EGRESS_ACL_SERVICE_INDEX = 6;
74
75     public static final String EGRESS_ACL_SERVICE_NAME = "EGRESS_ACL_SERVICE";
76
77     public static final BigInteger COOKIE_IPV6_TABLE = new BigInteger("4000000", 16);
78     public static final BigInteger VLAN_TABLE_COOKIE = new BigInteger("8000000", 16);
79     public static final BigInteger COOKIE_VM_INGRESS_TABLE = new BigInteger("8000001", 16);
80     public static final BigInteger COOKIE_VM_LFIB_TABLE = new BigInteger("8000002", 16);
81     public static final BigInteger COOKIE_VM_FIB_TABLE =  new BigInteger("8000003", 16);
82     public static final BigInteger COOKIE_DNAT_TABLE = new BigInteger("8000004", 16);
83     public static final BigInteger COOKIE_TS_TABLE = new BigInteger("8000005", 16);
84     public static final BigInteger COOKIE_SNAT_TABLE = new BigInteger("8000006", 16);
85     public static final BigInteger EGRESS_DISPATCHER_TABLE_COOKIE = new BigInteger("8000007", 16);
86     public static final BigInteger COOKIE_OUTBOUND_NAPT_TABLE = new BigInteger("8000008", 16);
87     public static final BigInteger COOKIE_L3_GW_MAC_TABLE = new BigInteger("8000009", 16);
88     public static final BigInteger COOKIE_VXLAN_TRUNK_L2_TABLE = new BigInteger("1200000", 16);
89     public static final BigInteger COOKIE_GRE_TRUNK_L2_TABLE = new BigInteger("1400000", 16);
90     public static final BigInteger COOKIE_ELAN_INGRESS_TABLE = new BigInteger("8040000", 16);
91     public static final BigInteger TUNNEL_TABLE_COOKIE = new BigInteger("9000000", 16);
92     public static final BigInteger COOKIE_ARP_RESPONDER = new BigInteger("8220000", 16);
93
94     //Table IDs
95     public static final short VLAN_INTERFACE_INGRESS_TABLE = 0;
96     public static final short VXLAN_TRUNK_INTERFACE_TABLE = 10;
97     public static final short TRUNK_L2_TABLE = 11;
98     public static final short GRE_TRUNK_INTERFACE_TABLE = 12;
99     public static final short LPORT_DISPATCHER_TABLE = 17;
100     public static final short DHCP_TABLE_EXTERNAL_TUNNEL = 18;
101     public static final short L3_GW_MAC_TABLE = 19;
102     public static final short L3_LFIB_TABLE = 20;
103     public static final short L3_FIB_TABLE = 21;
104     public static final short L3_SUBNET_ROUTE_TABLE=22;
105     public static final short PDNAT_TABLE = 25;
106     public static final short PSNAT_TABLE = 26;
107     public static final short DNAT_TABLE = 27;
108     public static final short SNAT_TABLE = 28;
109     public static final short INTERNAL_TUNNEL_TABLE = 36;
110     public static final short EXTERNAL_TUNNEL_TABLE = 38;
111     public static final short INGRESS_ACL_TABLE = 40;
112     public static final short INGRESS_ACL_FILTER_TABLE = 41;
113     public static final short INGRESS_LEARN_TABLE = 41;
114     public static final short INGRESS_LEARN2_TABLE = 42;
115     public static final short INBOUND_NAPT_TABLE = 44;
116     public static final short IPV6_TABLE = 45;
117     public static final short OUTBOUND_NAPT_TABLE = 46;
118     public static final short NAPT_PFIB_TABLE = 47;
119     public static final short ELAN_SMAC_TABLE = 50;
120     public static final short ELAN_DMAC_TABLE = 51;
121     public static final short ELAN_UNKNOWN_DMAC_TABLE = 52;
122     public static final short ELAN_FILTER_EQUALS_TABLE = 55;
123     public static final short DHCP_TABLE = 60;
124     public static final short SCF_UP_SUB_FILTER_TCP_BASED_TABLE = 70;
125     public static final short SCF_DOWN_SUB_FILTER_TCP_BASED_TABLE = 72;
126     public static final short SCF_CHAIN_FWD_TABLE = 75;
127     public static final short L3_INTERFACE_TABLE = 80;
128     public static final short ARP_RESPONDER_TABLE= 81;
129     public static final short SFC_TRANSPORT_CLASSIFIER_TABLE = 82;
130     public static final short SFC_TRANSPORT_INGRESS_TABLE = 83;
131     public static final short SFC_TRANSPORT_PATH_MAPPER_TABLE = 84;
132     public static final short SFC_TRANSPORT_PATH_MAPPER_ACL_TABLE = 85;
133     public static final short SFC_TRANSPORT_NEXT_HOP_TABLE = 86;
134     public static final short SFC_TRANSPORT_EGRESS_TABLE = 87;
135     public static final short EGRESS_LPORT_DISPATCHER_TABLE = 220;
136     public static final short EGRESS_ACL_TABLE = 251;
137     public static final short EGRESS_ACL_FILTER_TABLE = 252;
138     public static final short EGRESS_LEARN_TABLE = 252;
139     public static final short EGRESS_LEARN2_TABLE = 253;
140
141     public enum NxmOfFieldType {
142         NXM_OF_IN_PORT(0x0000, 0, 2, 16),
143         NXM_OF_ETH_DST(0x0000, 1, 6, 48),
144         NXM_OF_ETH_SRC(0x0000, 2, 6, 48),
145         NXM_OF_ETH_TYPE(0x0000, 3, 2, 16),
146         NXM_OF_VLAN_TCI(0x0000, 4, 2, 12),
147         NXM_OF_IP_TOS(0x0000, 5, 1, 8),
148         NXM_OF_IP_PROTO(0x0000, 6, 1, 8),
149         NXM_OF_IP_SRC(0x0000, 7, 4, 32),
150         NXM_OF_IP_DST(0x0000, 8, 4, 32),
151         NXM_OF_TCP_SRC(0x0000, 9, 2, 16),
152         NXM_OF_TCP_DST(0x0000, 10, 2, 16),
153         NXM_OF_UDP_SRC(0x0000, 11, 2, 16),
154         NXM_OF_UDP_DST(0x0000, 12, 2, 16),
155         NXM_OF_ICMP_TYPE(0x0000, 13, 1, 8),
156         NXM_OF_ICMP_CODE(0x0000, 14, 1, 8),
157         NXM_OF_ARP_OP(0x0000, 15, 2, 16),
158         NXM_OF_ARP_SPA(0x0000, 16, 4, 16),
159         NXM_OF_ARP_TPA(0x0000, 17, 4, 16),
160         NXM_NX_REG0(0x0001, 0, 4, -1),
161         NXM_NX_REG1(0x0001, 1, 4, -1),
162         NXM_NX_REG2(0x0001, 2, 4, -1),
163         NXM_NX_REG3(0x0001, 3, 4, -1),
164         NXM_NX_REG4(0x0001, 4, 4, -1),
165         NXM_NX_REG5(0x0001, 5, 4, -1),
166         NXM_NX_REG6(0x0001, 6, 4, -1),
167         NXM_NX_REG7(0x0001, 7, 4, -1);
168
169         long hexType;
170         long flowModHeaderLen;
171
172         NxmOfFieldType(long vendor, long field, long length, long flowModHeaderLen) {
173             hexType = nxmHeader(vendor, field, length);
174             this.flowModHeaderLen = flowModHeaderLen;
175         }
176
177         private static long nxmHeader(long vendor, long field, long length) {
178             return ((vendor) << 16) | ((field) << 9) | (length);
179         }
180
181         public String getHexType() {
182             return String.valueOf(hexType);
183         }
184
185         public String getFlowModHeaderLen() {
186             return String.valueOf(flowModHeaderLen);
187         }
188     }
189
190     public enum LearnFlowModsType {
191         MATCH_FROM_FIELD, MATCH_FROM_VALUE, COPY_FROM_FIELD, COPY_FROM_VALUE, OUTPUT_TO_PORT
192     }
193 }