More janitorial work
[vpp.git] / plugins / plugins / vcgn / cnat_cli.h
1 /* *------------------------------------------------------------------
2  * cnat_cli.h - CLI definitions
3  *
4  * Copyright (c) 2007-2013 Cisco and/or its affiliates.
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at:
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *------------------------------------------------------------------
17  */
18
19 #ifndef __CNAT_CLI_H__
20 #define __CNAT_CLI_H__
21
22 #include "cnat_config_api.h"
23 #include "cnat_show_api.h"
24
25 /* from iox cli error */
26 typedef enum {
27     CNAT_SUCCESS = 0,
28     CNAT_NO_CONFIG, 
29     CNAT_NO_VRF_RUN,
30     CNAT_NO_POOL_ANY,
31     CNAT_NO_PORT_ANY,
32 #ifndef NO_BULK_LOGGING
33     CNAT_NO_PORT_FROM_BULK,
34     CNAT_NO_PRE_ALLOCATED_BULK_PORTS,
35 #endif /* NO_BULK_LOGGING */
36     CNAT_BAD_INUSE_ANY,
37     CNAT_NOT_FOUND_ANY, 
38     CNAT_INV_PORT_DIRECT,
39     CNAT_DEL_PORT_DIRECT,
40     CNAT_BAD_INUSE_DIRECT,
41     CNAT_NOT_FOUND_DIRECT,
42     CNAT_OUT_LIMIT,
43     CNAT_MAIN_DB_LIMIT,
44     CNAT_USER_DB_LIMIT,
45     CNAT_NOT_STATIC_PORT,
46     CNAT_BAD_STATIC_PORT_REQ,
47     CNAT_NOT_THIS_CORE,
48     CNAT_ERR_PARSER,
49     CNAT_ERR_INVALID_MSG_ID,
50     CNAT_ERR_INVALID_MSG_SIZE,
51     CNAT_ERR_INVALID_PAYLOAD_SIZE,
52     CNAT_ERR_BAD_TCP_UDP_PORT,
53     CNAT_ERR_BULK_SINGLE_FAILURE,
54     CNAT_ERR_XLAT_ID_INVALID,
55     CNAT_ERR_XLAT_V6_PREFIX_INVALID,
56     CNAT_ERR_XLAT_V4_PREFIX_INVALID,
57     CNAT_ERR_XLAT_TCP_MSS_INVALID,
58     CNAT_ERR_6RD_ID_INVALID,
59     CNAT_ERR_6RD_V4_TUNNEL_SRC_INVALID,
60     CNAT_ERR_6RD_V6_PREFIX_INVALID, 
61     CNAT_ERR_6RD_V6_BR_UNICAST_INVALID,
62     CNAT_ERR_6RD_V4_PREFIX_MASK_LEN_INVALID,
63     CNAT_ERR_6RD_V4_SUFFIX_MASK_LEN_INVALID,
64     CNAT_ERR_6RD_V4_COMBO_MASK_LEN_INVALID,
65     CNAT_ERR_6RD_TUNNEL_MTU_INVALID,
66     CNAT_ERR_6RD_TUNNEL_TTL_INVALID,
67     CNAT_ERR_6RD_TUNNEL_TOS_INVALID,
68     CNAT_ERR_NAT64_NO_VRF_RUN,
69     CNAT_ERR_NAT64_ID_INVALID,
70     CNAT_ERR_NAT64_V6_PREFIX_INVALID,
71     CNAT_ERR_NAT64_V4_PREFIX_INVALID,
72     CNAT_ERR_NAT64_TCP_MSS_INVALID,
73 #ifdef CGSE_DS_LITE
74     CNAT_ERR_DS_LITE_ID_INVALID,
75 #endif /* CGSE_DS_LITE */
76     CNAT_ERR_NO_SESSION_DB,     
77     CNAT_ERR_MAPE_ID_INVALID,
78     CNAT_ERR_MAX
79 } cnat_errno_t;
80
81 #define CNAT_TRUE  1
82 #define CNAT_FALSE 0
83
84
85 #define CNAT_DEBUG_NONE         (0) 
86 #define CNAT_DEBUG_GLOBAL_ERR   (1 << 0) 
87 #define CNAT_DEBUG_DROP_TCP     (1 << 0)   
88 #define CNAT_DEBUG_DROP_UDP     (1 << 1) 
89 #define CNAT_DEBUG_DROP_ICMP    (1 << 2) 
90 #define CNAT_DEBUG_ERR_TCP      (1 << 3) 
91 #define CNAT_DEBUG_ERR_UDP      (1 << 4) 
92 #define CNAT_DEBUG_ERR_ICMP     (1 << 5)
93 #define CNAT_DEBUG_ERR_ALG      (1 << 6)
94 #define CNAT_DEBUG_GLOBAL_ALL   (1 << 7) 
95 #define CNAT_DEBUG_FTP_ALG      (1 << 8)
96
97
98
99 #define CNAT_DEBUG_ALL  0x1FF /*all of above*/
100 #define CNAT_DEBUG_ERR_ALL   0x38
101
102 #define CNAT_DB_CLEAR_SPECIFIC (0)
103 #define CNAT_DB_CLEAR_ALL      (1 << 0)
104 #define CNAT_DB_CLEAR_VRF      (1 << 1)
105 #define CNAT_DB_CLEAR_ADDR     (1 << 2)
106 #define CNAT_DB_CLEAR_PROTO    (1 << 3)
107 #define CNAT_DB_CLEAR_PORT     (1 << 4)
108
109
110 #define MAX_UIDX 0x3fff    /*the max svi app uidb index */
111 /* address mask per core */
112 #define ADDR_MASK_PER_CORE PLATFORM_ADDR_MASK_PER_CORE
113 #define ADDR_MASK_PER_CORE_PER_PARTITION \
114             PLATFORM_ADDR_MASK_PER_CORE_PER_PARTITION
115
116 #define MAX_CORES          PLATFORM_MAX_CORES
117 #define MAX_CORES_PER_PARTITION          PLATFORM_MAX_CORES_PER_PARTITION
118
119 /*
120  * Maximum pool size that is supported by platform
121  */
122 #define CNAT_MAX_ADDR_POOL_SIZE PLATFORM_CNAT_MAX_ADDR_POOL_SIZE
123 #define CNAT_MAX_ADDR_POOL_SIZE_PER_CORE \
124             (CNAT_MAX_ADDR_POOL_SIZE / MAX_CORES_PER_PARTITION)
125
126 #define BOUNDARY_VALUE 256
127  
128 #define BOUNDARY_VALUE_MASK 0xff
129  
130 #define NUM_ADDR_IN_RANGE(range, value, instance) \
131     ((range / value) + ((instance % MAX_CORES_PER_PARTITION) < (range%value) ? 1 : 0))
132
133 typedef enum {
134     CNAT_DEBUG_FLAGS_DUMP = 0,
135     CNAT_DEBUG_FLAG_UDP_INSIDE_CHECKSUM_DISABLE, 
136     CNAT_DEBUG_FLAG_UDP_OUTSIDE_CHECKSUM_DISABLE,
137     CNAT_DEBUG_FLAG_UDP_OUTSIDE_PKT_DUMP_ENABLE,
138     CNAT_DEBUG_FLAG_UDP_INSIDE_PKT_DUMP_ENABLE,
139     CNAT_DEBUG_FLAG_ICMP_PKT_DUMP_ENABLE,
140     CNAT_DEBUG_FLAG_FRAG_PKT_DUMP_ENABLE,
141     CNAT_DEBUG_FLAG_CONFIG_DEBUG_ENABLE, 
142     CNAT_DEBUG_FLAG_GLOBAL_DEBUG_ALL_ENABLE,
143     CNAT_DEBUG_FLAG_SUMMARY_STATS_DEBUG_ENABLE,
144     CNAT_DEBUG_FLAG_SHOW_DEBUG_ENABLE, 
145     CNAT_DEBUG_FLAG_XLAT_CONFIG_DEBUG_ENABLE, 
146     CNAT_DEBUG_FLAG_XLAT_DATA_PATH_DEBUG_ENABLE, 
147     CNAT_DEBUG_FLAG_TCP_LOGGING_ENABLE,
148     CNAT_DEBUG_FLAG_NFV9_LOGGING_DUMP_ENABLE,
149     CNAT_DEBUG_FLAG_SYSLOG_LOGGING_DUMP_ENABLE,
150     CNAT_DEBUG_SET_STATIC_PORT_RANGE,
151     CNAT_DEBUG_FLAG_V6RD_DATA_PATH_DEBUG_ENABLE,
152     CNAT_DEBUG_FLAG_V6RD_CONFIG_DEBUG_ENABLE,
153     CNAT_DEBUG_FLAG_V6RD_DEFRAG_DEBUG_ENABLE,
154     CNAT_DEBUG_FLAG_NAT64_CONFIG_DEBUG_ENABLE, 
155     CNAT_DEBUG_FLAG_NAT64_DATA_PATH_DEBUG_ENABLE, 
156     CNAT_DEBUG_FLAG_DSLITE_DP_ENABLE, 
157     CNAT_DEBUG_FLAG_DSLITE_CONFIG_DEBUG_ENABLE, 
158     CNAT_DEBUG_FLAG_CONFIG_PPTP_ENABLE = 24, 
159     CNAT_DEBUG_FLAG_CONFIG_PCP_ENABLE = 25, 
160     CNAT_DEBUG_FLAG_MAPE_CONFIG_DEBUG_ENABLE,
161     CNAT_DEBUG_FLAG_MAPE_DATA_PATH_DEBUG_ENABLE,
162     CNAT_DEBUG_FLAG_MAX,
163 } cnat_debug_variable_value;
164
165 /*
166  * Don't use too small values for PATH MTU 
167  */
168 #define MIN_NFV9_PATH_MTU 100
169
170 extern u32 global_debug_flag;
171 extern u16 debug_i_vrf;
172 extern u32 debug_i_flag;
173 extern u32 debug_i_addr_start;
174 extern u32 debug_i_addr_end;
175 extern u16 debug_o_vrf;
176 extern u32 debug_o_flag;
177 extern u32 debug_o_addr_start;
178 extern u32 debug_o_addr_end;
179 extern u32 tcp_logging_enable_flag;
180 extern u32 nfv9_logging_debug_flag;
181
182 extern u32 udp_inside_checksum_disable;
183 extern u32 udp_outside_checksum_disable;
184 extern u32 udp_inside_packet_dump_enable;
185 extern u32 udp_outside_packet_dump_enable;
186
187 extern u32 icmp_debug_flag;
188 extern u32 frag_debug_flag;
189
190 extern u32 summary_stats_debug_flag;
191
192 extern u32 config_debug_level;
193 extern u32 show_debug_level;
194
195
196 /* CLI API prototypes called from vcgn_classify.c */
197 extern void cnat_nat44_add_vrf_map_t_handler(spp_api_cnat_v4_add_vrf_map_t *mp,
198                                             vlib_main_t *vm);
199 extern void cnat_nat44_handle_show_stats(vlib_main_t *vm);
200 extern void cnat_nat44_handle_show_config(vlib_main_t *vm);
201 extern void cnat_nat44_set_protocol_timeout_value(u16 active, 
202                            u16 init, u8 *proto, u8 reset, vlib_main_t *vm);
203 extern void cnat_v4_show_inside_entry_req_t_handler
204 (spp_api_cnat_v4_show_inside_entry_req_t *mp, vlib_main_t *vm);
205
206 #endif /* __CNAT_CLI_H__ */