![]() |
FD.io VPP
v20.09-64-g4f7b92f0a
Vector Packet Processing
|
NAT64 implementation. More...
Include dependency graph for nat64.c:Go to the source code of this file.
Functions | |
| VNET_FEATURE_INIT (nat64_in2out, static) | |
| VNET_FEATURE_INIT (nat64_out2in, static) | |
| VNET_FEATURE_INIT (nat64_in2out_handoff, static) | |
| VNET_FEATURE_INIT (nat64_out2in_handoff, static) | |
| static void | nat64_ip4_add_del_interface_address_cb (ip4_main_t *im, uword opaque, u32 sw_if_index, ip4_address_t *address, u32 address_length, u32 if_address_index, u32 is_delete) |
| u32 | nat64_get_worker_in2out (ip6_address_t *addr) |
| Get worker thread index for NAT64 in2out. More... | |
| u32 | nat64_get_worker_out2in (vlib_buffer_t *b, ip4_header_t *ip) |
| Get worker thread index for NAT64 out2in. More... | |
| clib_error_t * | nat64_init (vlib_main_t *vm) |
| Initialize NAT64. More... | |
| static void | nat64_free_out_addr_and_port (struct nat64_db_s *db, ip4_address_t *addr, u16 port, u8 protocol) |
| void | nat64_set_hash (u32 bib_buckets, uword bib_memory_size, u32 st_buckets, uword st_memory_size) |
| Set NAT64 hash tables configuration. More... | |
| int | nat64_add_del_pool_addr (u32 thread_index, ip4_address_t *addr, u32 vrf_id, u8 is_add) |
| Add/delete address to NAT64 pool. More... | |
| void | nat64_pool_addr_walk (nat64_pool_addr_walk_fn_t fn, void *ctx) |
| Walk NAT64 pool. More... | |
| int | nat64_add_interface_address (u32 sw_if_index, int is_add) |
| NAT64 pool address from specific (DHCP addressed) interface. More... | |
| static void | nat64_validate_counters (nat64_main_t *nm, u32 sw_if_index) |
| int | nat64_add_del_interface (u32 sw_if_index, u8 is_inside, u8 is_add) |
| Enable/disable NAT64 feature on the interface. More... | |
| void | nat64_interfaces_walk (nat64_interface_walk_fn_t fn, void *ctx) |
| Walk NAT64 interfaces. More... | |
| int | nat64_alloc_out_addr_and_port (u32 fib_index, nat_protocol_t proto, ip4_address_t *addr, u16 *port, u32 thread_index) |
| Alloce IPv4 address and port pair from NAT64 pool. More... | |
| static uword | nat64_static_bib_worker_fn (vlib_main_t *vm, vlib_node_runtime_t *rt, vlib_frame_t *f) |
| Add/delete static BIB entry in worker thread. More... | |
| int | nat64_add_del_static_bib_entry (ip6_address_t *in_addr, ip4_address_t *out_addr, u16 in_port, u16 out_port, u8 proto, u32 vrf_id, u8 is_add) |
| Add/delete static NAT64 BIB entry. More... | |
| int | nat64_set_udp_timeout (u32 timeout) |
| Set UDP session timeout. More... | |
| u32 | nat64_get_udp_timeout (void) |
| Get UDP session timeout. More... | |
| int | nat64_set_icmp_timeout (u32 timeout) |
| Set ICMP session timeout. More... | |
| u32 | nat64_get_icmp_timeout (void) |
| Get ICMP session timeout. More... | |
| int | nat64_set_tcp_timeouts (u32 trans, u32 est) |
| Set TCP session timeouts. More... | |
| u32 | nat64_get_tcp_trans_timeout (void) |
| Get TCP transitory timeout. More... | |
| u32 | nat64_get_tcp_est_timeout (void) |
| Get TCP established timeout. More... | |
| void | nat64_session_reset_timeout (nat64_db_st_entry_t *ste, vlib_main_t *vm) |
| Reset NAT64 session timeout. More... | |
| void | nat64_tcp_session_set_state (nat64_db_st_entry_t *ste, tcp_header_t *tcp, u8 is_ip6) |
| Set NAT64 TCP session state. More... | |
| int | nat64_add_del_prefix (ip6_address_t *prefix, u8 plen, u32 vrf_id, u8 is_add) |
| Add/delete NAT64 prefix. More... | |
| void | nat64_prefix_walk (nat64_prefix_walk_fn_t fn, void *ctx) |
| Walk NAT64 prefixes. More... | |
| void | nat64_compose_ip6 (ip6_address_t *ip6, ip4_address_t *ip4, u32 fib_index) |
| Compose IPv4-embedded IPv6 addresses. More... | |
| void | nat64_extract_ip4 (ip6_address_t *ip6, ip4_address_t *ip4, u32 fib_index) |
| Extract IPv4 address from the IPv4-embedded IPv6 addresses. More... | |
| static uword | nat64_expire_worker_walk_fn (vlib_main_t *vm, vlib_node_runtime_t *rt, vlib_frame_t *f) |
| Per worker process checking expire time for NAT64 sessions. More... | |
| static uword | nat64_expire_walk_fn (vlib_main_t *vm, vlib_node_runtime_t *rt, vlib_frame_t *f) |
| Centralized process to drive per worker expire walk. More... | |
Variables | |
| nat64_main_t | nat64_main |
| static u8 | well_known_prefix [] |
| static vlib_node_registration_t | nat64_static_bib_worker_node |
| (constructor) VLIB_REGISTER_NODE (nat64_static_bib_worker_node) More... | |
| static vlib_node_registration_t | nat64_expire_worker_walk_node |
| (constructor) VLIB_REGISTER_NODE (nat64_expire_worker_walk_node) More... | |
| static vlib_node_registration_t | nat64_expire_walk_node |
| (constructor) VLIB_REGISTER_NODE (nat64_expire_walk_node) More... | |
NAT64 implementation.
Definition in file nat64.c.
Enable/disable NAT64 feature on the interface.
| sw_if_index | Index of the interface. |
| is_inside | 1 if inside, 0 if outside. |
| is_add | 1 if add, 0 if delete. |
Definition at line 433 of file nat64.c.
Here is the call graph for this function:
Here is the caller graph for this function:| int nat64_add_del_pool_addr | ( | u32 | thread_index, |
| ip4_address_t * | addr, | ||
| u32 | vrf_id, | ||
| u8 | is_add | ||
| ) |
Add/delete address to NAT64 pool.
| thread_index | Thread index used by ipfix nat logging (not address per thread). |
| addr | IPv4 address. |
| vrf_id | VRF id of tenant, ~0 means independent of VRF. |
| is_add | 1 if add, 0 if delete. |
Definition at line 288 of file nat64.c.
Here is the call graph for this function:
Here is the caller graph for this function:Add/delete NAT64 prefix.
| prefix | NAT64 prefix. |
| plen | Prefix length. |
| vrf_id | VRF id of tenant. |
| is_add | 1 if add, 0 if delete. |
Definition at line 986 of file nat64.c.
Here is the call graph for this function:
Here is the caller graph for this function:| int nat64_add_del_static_bib_entry | ( | ip6_address_t * | in_addr, |
| ip4_address_t * | out_addr, | ||
| u16 | in_port, | ||
| u16 | out_port, | ||
| u8 | proto, | ||
| u32 | vrf_id, | ||
| u8 | is_add | ||
| ) |
Add/delete static NAT64 BIB entry.
| in_addr | Inside IPv6 address. |
| out_addr | Outside IPv4 address. |
| in_port | Inside port number. |
| out_port | Outside port number. |
| proto | L4 protocol. |
| vrf_id | VRF id of tenant. |
| is_add | 1 if add, 0 if delete. |
Definition at line 670 of file nat64.c.
Here is the call graph for this function:
Here is the caller graph for this function:| int nat64_add_interface_address | ( | u32 | sw_if_index, |
| int | is_add | ||
| ) |
NAT64 pool address from specific (DHCP addressed) interface.
| sw_if_index | Index of the interface. |
| is_add | 1 if add, 0 if delete. |
Definition at line 379 of file nat64.c.
Here is the call graph for this function:
Here is the caller graph for this function:| int nat64_alloc_out_addr_and_port | ( | u32 | fib_index, |
| nat_protocol_t | proto, | ||
| ip4_address_t * | addr, | ||
| u16 * | port, | ||
| u32 | thread_index | ||
| ) |
Alloce IPv4 address and port pair from NAT64 pool.
| fib_index | FIB index of tenant. |
| proto | L4 protocol. |
| addr | Allocated IPv4 address. |
| port | Allocated port number. |
| thread_index | Thread index. |
Definition at line 547 of file nat64.c.
Here is the caller graph for this function:| void nat64_compose_ip6 | ( | ip6_address_t * | ip6, |
| ip4_address_t * | ip4, | ||
| u32 | fib_index | ||
| ) |
|
static |
|
static |
| void nat64_extract_ip4 | ( | ip6_address_t * | ip6, |
| ip4_address_t * | ip4, | ||
| u32 | fib_index | ||
| ) |
|
static |
| u32 nat64_get_icmp_timeout | ( | void | ) |
| u32 nat64_get_tcp_est_timeout | ( | void | ) |
| u32 nat64_get_tcp_trans_timeout | ( | void | ) |
| u32 nat64_get_udp_timeout | ( | void | ) |
| u32 nat64_get_worker_in2out | ( | ip6_address_t * | addr | ) |
| u32 nat64_get_worker_out2in | ( | vlib_buffer_t * | b, |
| ip4_header_t * | ip | ||
| ) |
| clib_error_t* nat64_init | ( | vlib_main_t * | vm | ) |
| void nat64_interfaces_walk | ( | nat64_interface_walk_fn_t | fn, |
| void * | ctx | ||
| ) |
|
static |
| void nat64_pool_addr_walk | ( | nat64_pool_addr_walk_fn_t | fn, |
| void * | ctx | ||
| ) |
| void nat64_prefix_walk | ( | nat64_prefix_walk_fn_t | fn, |
| void * | ctx | ||
| ) |
| void nat64_session_reset_timeout | ( | nat64_db_st_entry_t * | ste, |
| vlib_main_t * | vm | ||
| ) |
| void nat64_set_hash | ( | u32 | bib_buckets, |
| uword | bib_memory_size, | ||
| u32 | st_buckets, | ||
| uword | st_memory_size | ||
| ) |
Set NAT64 hash tables configuration.
| 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. |
Definition at line 266 of file nat64.c.
Here is the call graph for this function:
Here is the caller graph for this function:| int nat64_set_icmp_timeout | ( | u32 | timeout | ) |
Set TCP session timeouts.
| trans | Transitory timeout in seconds (if 0 reset to default value 240sec). |
| est | Established timeout in seconds (if 0 reset to default value 7440sec). |
Definition at line 846 of file nat64.c.
Here is the caller graph for this function:| int nat64_set_udp_timeout | ( | u32 | timeout | ) |
|
static |
| void nat64_tcp_session_set_state | ( | nat64_db_st_entry_t * | ste, |
| tcp_header_t * | tcp, | ||
| u8 | is_ip6 | ||
| ) |
|
static |
| VNET_FEATURE_INIT | ( | nat64_in2out | , |
| static | |||
| ) |
| VNET_FEATURE_INIT | ( | nat64_out2in | , |
| static | |||
| ) |
| VNET_FEATURE_INIT | ( | nat64_in2out_handoff | , |
| static | |||
| ) |
| VNET_FEATURE_INIT | ( | nat64_out2in_handoff | , |
| static | |||
| ) |
|
static |
(constructor) VLIB_REGISTER_NODE (nat64_expire_walk_node)
|
static |
(constructor) VLIB_REGISTER_NODE (nat64_expire_worker_walk_node)
| nat64_main_t nat64_main |
|
static |
(constructor) VLIB_REGISTER_NODE (nat64_static_bib_worker_node)