FD.io VPP  v20.05.1-6-gf53edbc3b
Vector Packet Processing
nat66.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2018 Cisco and/or its affiliates.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at:
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 /**
16  * @file
17  * @brief NAT66 global declarations
18  */
19 #ifndef __included_nat66_h__
20 #define __included_nat66_h__
21 
22 #include <vppinfra/bihash_24_8.h>
23 #include <nat/nat.h>
24 
25 typedef struct
26 {
27  ip6_address_t l_addr;
28  ip6_address_t e_addr;
31 
32 typedef struct
33 {
34  union
35  {
36  struct
37  {
38  ip6_address_t addr;
41  };
42  u64 as_u64[3];
43  };
45 
46 typedef struct
47 {
48  /** Interface pool */
50  /** Static mapping pool */
52  /** Static mapping by local address lookup table */
53  clib_bihash_24_8_t sm_l;
54  /** Static mapping by external address lookup table */
55  clib_bihash_24_8_t sm_e;
56  /** Session counters */
58  /** node index **/
61 
64 } nat66_main_t;
65 
69 
70 void nat66_init (vlib_main_t * vm);
71 typedef int (*nat66_interface_walk_fn_t) (snat_interface_t * i, void *ctx);
73 int nat66_interface_add_del (u32 sw_if_index, u8 is_inside, u8 is_add);
75  void *ctx);
77  void *ctx);
79  u32 fib_index, u8 is_local);
80 int nat66_static_mapping_add_del (ip6_address_t * l_addr,
81  ip6_address_t * e_addr, u32 vrf_id,
82  u8 is_add);
83 
84 #endif /* __included_nat66_h__ */
85 
86 /*
87  * fd.io coding-style-patch-verification: ON
88  *
89  * Local Variables:
90  * eval: (c-set-style "gnu")
91  * End:
92  */
u32 rsvd
Definition: nat66.h:40
u64 as_u64
Definition: bihash_doc.h:63
unsigned long u64
Definition: types.h:89
u32 fib_index
Definition: nat66.h:39
u32 out2in_node_index
Definition: nat66.h:60
clib_bihash_24_8_t sm_e
Static mapping by external address lookup table.
Definition: nat66.h:55
vhost_vring_addr_t addr
Definition: vhost_user.h:254
unsigned char u8
Definition: types.h:56
int nat66_static_mapping_add_del(ip6_address_t *l_addr, ip6_address_t *e_addr, u32 vrf_id, u8 is_add)
Definition: nat66.c:152
void nat66_init(vlib_main_t *vm)
Definition: nat66.c:46
void nat66_static_mappings_walk(nat66_static_mapping_walk_fn_t fn, void *ctx)
Definition: nat66.c:231
vl_api_interface_index_t sw_if_index
Definition: gre.api:53
unsigned int u32
Definition: types.h:88
vlib_node_registration_t nat66_in2out_node
(constructor) VLIB_REGISTER_NODE (nat66_in2out_node)
Definition: nat66_in2out.c:240
long ctx[MAX_CONNS]
Definition: main.c:144
vlib_node_registration_t nat66_out2in_node
(constructor) VLIB_REGISTER_NODE (nat66_out2in_node)
Definition: nat66_out2in.c:198
nat66_main_t nat66_main
Definition: nat66.c:24
int(* nat66_static_mapping_walk_fn_t)(nat66_static_mapping_t *sm, void *ctx)
Definition: nat66.h:74
vlib_main_t * vm
Definition: in2out_ed.c:1599
nat66_static_mapping_t * nat66_static_mapping_get(ip6_address_t *addr, u32 fib_index, u8 is_local)
Definition: nat66.c:128
void nat66_interfaces_walk(nat66_interface_walk_fn_t fn, void *ctx)
Definition: nat66.c:113
ip6_address_t e_addr
Definition: nat66.h:28
sll srl srl sll sra u16x4 i
Definition: vector_sse42.h:317
snat_interface_t * interfaces
Interface pool.
Definition: nat66.h:49
clib_bihash_24_8_t sm_l
Static mapping by local address lookup table.
Definition: nat66.h:53
struct _vlib_node_registration vlib_node_registration_t
ip6_address_t l_addr
Definition: nat66.h:27
vlib_combined_counter_main_t session_counters
Session counters.
Definition: nat66.h:57
int(* nat66_interface_walk_fn_t)(snat_interface_t *i, void *ctx)
Definition: nat66.h:71
u32 outside_fib_index
Definition: nat66.h:63
A collection of combined counters.
Definition: counter.h:188
ip6_address_t addr
Definition: nat66.h:38
u32 outside_vrf_id
Definition: nat66.h:62
nat66_static_mapping_t * sm
Static mapping pool.
Definition: nat66.h:51
u32 vrf_id
Definition: nat.api:856
u32 in2out_node_index
node index
Definition: nat66.h:59
int nat66_interface_add_del(u32 sw_if_index, u8 is_inside, u8 is_add)
Definition: nat66.c:68