FD.io VPP  v18.04-17-g3a0d853
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 {
31 
32 typedef struct
33 {
34  union
35  {
36  struct
37  {
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 
61 } nat66_main_t;
62 
66 
67 void nat66_init (void);
68 typedef int (*nat66_interface_walk_fn_t) (snat_interface_t * i, void *ctx);
70 int nat66_interface_add_del (u32 sw_if_index, u8 is_inside, u8 is_add);
72  void *ctx);
74  void *ctx);
76  u32 fib_index, u8 is_local);
78  ip6_address_t * e_addr, u32 vrf_id,
79  u8 is_add);
80 
81 #endif /* __included_nat66_h__ */
82 
83 /*
84  * fd.io coding-style-patch-verification: ON
85  *
86  * Local Variables:
87  * eval: (c-set-style "gnu")
88  * End:
89  */
u32 rsvd
Definition: nat66.h:40
u64 as_u64
Definition: bihash_doc.h:63
u32 fib_index
Definition: nat66.h:39
int i
clib_bihash_24_8_t sm_e
Static mapping by external address lookup table.
Definition: nat66.h:55
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:139
void nat66_static_mappings_walk(nat66_static_mapping_walk_fn_t fn, void *ctx)
Definition: nat66.c:219
unsigned long u64
Definition: types.h:89
vlib_node_registration_t nat66_in2out_node
(constructor) VLIB_REGISTER_NODE (nat66_in2out_node)
Definition: nat66_in2out.c:242
vlib_node_registration_t nat66_out2in_node
(constructor) VLIB_REGISTER_NODE (nat66_out2in_node)
Definition: nat66_out2in.c:200
nat66_main_t nat66_main
Definition: nat66.c:23
int(* nat66_static_mapping_walk_fn_t)(nat66_static_mapping_t *sm, void *ctx)
Definition: nat66.h:71
nat66_static_mapping_t * nat66_static_mapping_get(ip6_address_t *addr, u32 fib_index, u8 is_local)
Definition: nat66.c:115
void nat66_interfaces_walk(nat66_interface_walk_fn_t fn, void *ctx)
Definition: nat66.c:100
ip6_address_t e_addr
Definition: nat66.h:28
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
void nat66_init(void)
Definition: nat66.c:43
unsigned int u32
Definition: types.h:88
long ctx[MAX_CONNS]
Definition: main.c:126
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:68
unsigned char u8
Definition: types.h:56
u32 outside_fib_index
Definition: nat66.h:60
A collection of combined counters.
Definition: counter.h:180
ip6_address_t addr
Definition: nat66.h:38
u32 outside_vrf_id
Definition: nat66.h:59
nat66_static_mapping_t * sm
Static mapping pool.
Definition: nat66.h:51
vhost_vring_addr_t addr
Definition: vhost-user.h:83
int nat66_interface_add_del(u32 sw_if_index, u8 is_inside, u8 is_add)
Definition: nat66.c:58