FD.io VPP
v18.04-17-g3a0d853
Vector Packet Processing
|
NAT64 DB. More...
Go to the source code of this file.
Data Structures | |
struct | nat64_db_bib_entry_key_t |
struct | nat64_db_bib_t |
struct | nat64_db_st_entry_key_t |
struct | nat64_db_st_t |
struct | nat64_db_s |
Typedefs | |
typedef void(* | nat64_db_free_addr_port_function_t) (struct nat64_db_s *db, ip4_address_t *addr, u16 port, u8 proto) |
Call back function to free NAT64 pool address and port when BIB entry is deleted. More... | |
typedef struct nat64_db_s | nat64_db_t |
typedef int(* | nat64_db_bib_walk_fn_t) (nat64_db_bib_entry_t *bibe, void *ctx) |
Call back function when walking NAT64 BIB, non-zero return value stop walk. More... | |
typedef int(* | nat64_db_st_walk_fn_t) (nat64_db_st_entry_t *ste, void *ctx) |
Call back function when walking NAT64 session table, non-zero return value stop walk. More... | |
Functions | |
typedef | CLIB_PACKED (struct{ip6_address_t in_addr;u16 in_port;ip4_address_t out_addr;u16 out_port;u32 fib_index;u32 ses_num;u8 proto;u8 is_static;}) nat64_db_bib_entry_t |
typedef | CLIB_PACKED (struct{ip6_address_t in_r_addr;ip4_address_t out_r_addr;u16 r_port;u32 bibe_index;u32 expire;u8 proto;u8 tcp_state;}) nat64_db_st_entry_t |
int | nat64_db_init (nat64_db_t *db, u32 bib_buckets, u32 bib_memory_size, u32 st_buckets, u32 st_memory_size, nat64_db_free_addr_port_function_t free_addr_port_cb) |
Initialize NAT64 DB. More... | |
nat64_db_bib_entry_t * | nat64_db_bib_entry_create (nat64_db_t *db, ip6_address_t *in_addr, ip4_address_t *out_addr, u16 in_port, u16 out_port, u32 fib_index, u8 proto, u8 is_static) |
Create new NAT64 BIB entry. More... | |
void | nat64_db_bib_entry_free (nat64_db_t *db, nat64_db_bib_entry_t *bibe) |
Free NAT64 BIB entry. More... | |
void | nat64_db_bib_walk (nat64_db_t *db, u8 proto, nat64_db_bib_walk_fn_t fn, void *ctx) |
Walk NAT64 BIB. More... | |
nat64_db_bib_entry_t * | nat64_db_bib_entry_find (nat64_db_t *db, ip46_address_t *addr, u16 port, u8 proto, u32 fib_index, u8 is_ip6) |
Find NAT64 BIB entry. More... | |
nat64_db_bib_entry_t * | nat64_db_bib_entry_by_index (nat64_db_t *db, u8 proto, u32 bibe_index) |
Get BIB entry by index and protocol. More... | |
nat64_db_st_entry_t * | nat64_db_st_entry_create (nat64_db_t *db, nat64_db_bib_entry_t *bibe, ip6_address_t *in_r_addr, ip4_address_t *out_r_addr, u16 r_port) |
Create new NAT64 session table entry. More... | |
void | nat64_db_st_entry_free (nat64_db_t *db, nat64_db_st_entry_t *ste) |
Free NAT64 session table entry. More... | |
nat64_db_st_entry_t * | nat64_db_st_entry_find (nat64_db_t *db, ip46_address_t *l_addr, ip46_address_t *r_addr, u16 l_port, u16 r_port, u8 proto, u32 fib_index, u8 is_ip6) |
Find NAT64 session table entry. More... | |
void | nat64_db_st_walk (nat64_db_t *db, u8 proto, nat64_db_st_walk_fn_t fn, void *ctx) |
Walk NAT64 session table. More... | |
void | nad64_db_st_free_expired (nat64_db_t *db, u32 now) |
Free expired session entries in session tables. More... | |
void | nat64_db_free_out_addr (nat64_db_t *db, ip4_address_t *out_addr) |
Free sessions using specific outside address. More... | |
u32 | nat64_db_st_entry_get_index (nat64_db_t *db, nat64_db_st_entry_t *ste) |
nat64_db_st_entry_t * | nat64_db_st_entry_by_index (nat64_db_t *db, u8 proto, u32 ste_index) |
Get ST entry by index and protocol. More... | |
NAT64 DB.
Definition in file nat64_db.h.
typedef int(* nat64_db_bib_walk_fn_t) (nat64_db_bib_entry_t *bibe, void *ctx) |
Call back function when walking NAT64 BIB, non-zero return value stop walk.
Definition at line 193 of file nat64_db.h.
typedef void(* nat64_db_free_addr_port_function_t) (struct nat64_db_s *db, ip4_address_t *addr, u16 port, u8 proto) |
Call back function to free NAT64 pool address and port when BIB entry is deleted.
Definition at line 132 of file nat64_db.h.
typedef int(* nat64_db_st_walk_fn_t) (nat64_db_st_entry_t *ste, void *ctx) |
Call back function when walking NAT64 session table, non-zero return value stop walk.
Definition at line 290 of file nat64_db.h.
typedef struct nat64_db_s nat64_db_t |
typedef CLIB_PACKED | ( | struct{ip6_address_t in_addr;u16 in_port;ip4_address_t out_addr;u16 out_port;u32 fib_index;u32 ses_num;u8 proto;u8 is_static;} | ) |
typedef CLIB_PACKED | ( | struct{ip6_address_t in_r_addr;ip4_address_t out_r_addr;u16 r_port;u32 bibe_index;u32 expire;u8 proto;u8 tcp_state;} | ) |
void nad64_db_st_free_expired | ( | nat64_db_t * | db, |
u32 | now | ||
) |
Free expired session entries in session tables.
db | NAT64 DB. |
now | Current time. |
Definition at line 637 of file nat64_db.c.
nat64_db_bib_entry_t* nat64_db_bib_entry_by_index | ( | nat64_db_t * | db, |
u8 | proto, | ||
u32 | bibe_index | ||
) |
Get BIB entry by index and protocol.
db | NAT64 DB. |
proto | L4 protocol. |
bibe_index | BIB entry index. |
Definition at line 297 of file nat64_db.c.
nat64_db_bib_entry_t* nat64_db_bib_entry_create | ( | nat64_db_t * | db, |
ip6_address_t * | in_addr, | ||
ip4_address_t * | out_addr, | ||
u16 | in_port, | ||
u16 | out_port, | ||
u32 | fib_index, | ||
u8 | proto, | ||
u8 | is_static | ||
) |
Create new NAT64 BIB entry.
db | NAT64 DB. |
in_addr | Inside IPv6 address. |
out_addr | Outside IPv4 address. |
in_port | Inside port number. |
out_port | Outside port number. |
fib_index | FIB index. |
proto | L4 protocol. |
is_static | 1 if static, 0 if dynamic. |
Definition at line 51 of file nat64_db.c.
nat64_db_bib_entry_t* nat64_db_bib_entry_find | ( | nat64_db_t * | db, |
ip46_address_t * | addr, | ||
u16 | port, | ||
u8 | proto, | ||
u32 | fib_index, | ||
u8 | is_ip6 | ||
) |
Find NAT64 BIB entry.
db | NAT64 DB. |
addr | IP address. |
port | Port number. |
proto | L4 protocol. |
fib_index | FIB index. |
is_ip6 | 1 if find by IPv6 (inside) address, 0 by IPv4 (outside). |
Definition at line 204 of file nat64_db.c.
void nat64_db_bib_entry_free | ( | nat64_db_t * | db, |
nat64_db_bib_entry_t * | bibe | ||
) |
Free NAT64 BIB entry.
db | NAT64 DB. |
bibe | BIB entry. |
Definition at line 126 of file nat64_db.c.
void nat64_db_bib_walk | ( | nat64_db_t * | db, |
u8 | proto, | ||
nat64_db_bib_walk_fn_t | fn, | ||
void * | ctx | ||
) |
Walk NAT64 BIB.
db | NAT64 DB. |
proto | BIB L4 protocol:
|
fn | The function to invoke on each entry visited. |
ctx | A context passed in the visit function. |
Definition at line 246 of file nat64_db.c.
void nat64_db_free_out_addr | ( | nat64_db_t * | db, |
ip4_address_t * | out_addr | ||
) |
Free sessions using specific outside address.
db | NAT64 DB. |
out_addr | Outside address to match. |
Definition at line 669 of file nat64_db.c.
int nat64_db_init | ( | nat64_db_t * | db, |
u32 | bib_buckets, | ||
u32 | bib_memory_size, | ||
u32 | st_buckets, | ||
u32 | st_memory_size, | ||
nat64_db_free_addr_port_function_t | free_addr_port_cb | ||
) |
Initialize NAT64 DB.
db | NAT64 DB. |
bib_buckets | Number of BIB hash buckets. |
bib_memory_size | Memory size of BIB hash. |
st_buckets | Number of session table hash buckets. |
st_memory_size | Memory size of session table hash. |
free_addr_port_cb | Call back function to free address and port. |
Definition at line 24 of file nat64_db.c.
nat64_db_st_entry_t* nat64_db_st_entry_by_index | ( | nat64_db_t * | db, |
u8 | proto, | ||
u32 | ste_index | ||
) |
Get ST entry by index and protocol.
db | NAT64 DB. |
proto | L4 protocol. |
bibe_index | ST entry index. |
Definition at line 614 of file nat64_db.c.
nat64_db_st_entry_t* nat64_db_st_entry_create | ( | nat64_db_t * | db, |
nat64_db_bib_entry_t * | bibe, | ||
ip6_address_t * | in_r_addr, | ||
ip4_address_t * | out_r_addr, | ||
u16 | r_port | ||
) |
Create new NAT64 session table entry.
db | NAT64 DB. |
bibe | Corresponding BIB entry. |
in_r_addr | Inside IPv6 address of the remote host. |
out_r_addr | Outside IPv4 address of the remote host. |
r_port | Remote host port number. |
Definition at line 371 of file nat64_db.c.
nat64_db_st_entry_t* nat64_db_st_entry_find | ( | nat64_db_t * | db, |
ip46_address_t * | l_addr, | ||
ip46_address_t * | r_addr, | ||
u16 | l_port, | ||
u16 | r_port, | ||
u8 | proto, | ||
u32 | fib_index, | ||
u8 | is_ip6 | ||
) |
Find NAT64 session table entry.
db | NAT64 DB. |
l_addr | Local host address. |
r_addr | Remote host address. |
l_port | Local host port number. |
r_port | Remote host port number. |
proto | L4 protocol. |
fib_index | FIB index. |
is_ip6 | 1 if find by IPv6 (inside) address, 0 by IPv4 (outside). |
Definition at line 543 of file nat64_db.c.
void nat64_db_st_entry_free | ( | nat64_db_t * | db, |
nat64_db_st_entry_t * | ste | ||
) |
Free NAT64 session table entry.
db | NAT64 DB. |
ste | Session table entry. |
Definition at line 463 of file nat64_db.c.
u32 nat64_db_st_entry_get_index | ( | nat64_db_t * | db, |
nat64_db_st_entry_t * | ste | ||
) |
Definition at line 591 of file nat64_db.c.
void nat64_db_st_walk | ( | nat64_db_t * | db, |
u8 | proto, | ||
nat64_db_st_walk_fn_t | fn, | ||
void * | ctx | ||
) |
Walk NAT64 session table.
db | NAT64 DB. |
proto | L4 protocol:
|
fn | The function to invoke on each entry visited. |
ctx | A context passed in the visit function. |
Definition at line 320 of file nat64_db.c.