FD.io VPP
v20.01-48-g3e0dafb74
Vector Packet Processing
|
NAT plugin client-IP based session affinity for load-balancing. More...
Go to the source code of this file.
Data Structures | |
struct | nat_affinity_key_t |
struct | nat_affinity_main_t |
Functions | |
typedef | CLIB_PACKED (struct { nat_affinity_key_t key;u32 sticky_time;u32 ref_cnt;u32 per_service_index;u8 backend_index;f64 expire;}) nat_affinity_t |
u32 | nat_affinity_get_per_service_list_head_index (void) |
Get new affinity per service list head index. More... | |
void | nat_affinity_flush_service (u32 affinity_per_service_list_head_index) |
Flush all service affinity data. More... | |
clib_error_t * | nat_affinity_init (vlib_main_t *vm) |
Initialize NAT client-IP based affinity. More... | |
int | nat_affinity_find_and_lock (ip4_address_t client_addr, ip4_address_t service_addr, u8 proto, u16 service_port, u8 *backend_index) |
Find service backend index for client-IP and take a reference counting lock. More... | |
int | nat_affinity_create_and_lock (ip4_address_t client_addr, ip4_address_t service_addr, u8 proto, u16 service_port, u8 backend_index, u32 sticky_time, u32 affinity_per_service_list_head_index) |
Create affinity record and take reference counting lock. More... | |
void | nat_affinity_unlock (ip4_address_t client_addr, ip4_address_t service_addr, u8 proto, u16 service_port) |
Release a reference counting lock for affinity. More... | |
Variables | |
nat_affinity_main_t | nat_affinity_main |
NAT plugin client-IP based session affinity for load-balancing.
Definition in file nat_affinity.h.
typedef CLIB_PACKED | ( | struct { nat_affinity_key_t key;u32 sticky_time;u32 ref_cnt;u32 per_service_index;u8 backend_index;f64 expire;} | ) |
int nat_affinity_create_and_lock | ( | ip4_address_t | client_addr, |
ip4_address_t | service_addr, | ||
u8 | proto, | ||
u16 | service_port, | ||
u8 | backend_index, | ||
u32 | sticky_time, | ||
u32 | affinity_per_service_list_head_index | ||
) |
Create affinity record and take reference counting lock.
client_addr | Client IP address. |
service_addr | Service IP address. |
proto | IP protocol number. |
service_port | Service L4 port number. |
backend_index | Service backend index for client-IP. |
sticky_time | Affinity sticky time in seconds. |
affinity_per_service_list_head_index | Per sevice list head index. |
Definition at line 191 of file nat_affinity.c.
int nat_affinity_find_and_lock | ( | ip4_address_t | client_addr, |
ip4_address_t | service_addr, | ||
u8 | proto, | ||
u16 | service_port, | ||
u8 * | backend_index | ||
) |
Find service backend index for client-IP and take a reference counting lock.
client_addr | Client IP address. |
service_addr | Service IP address. |
proto | IP protocol number. |
service_port | Service L4 port number. |
backend_index | Service backend index for client-IP if found. |
Definition at line 127 of file nat_affinity.c.
void nat_affinity_flush_service | ( | u32 | affinity_per_service_list_head_index | ) |
Flush all service affinity data.
affinity_per_service_list_head_index | Per sevice list head index. |
Definition at line 97 of file nat_affinity.c.
u32 nat_affinity_get_per_service_list_head_index | ( | void | ) |
Get new affinity per service list head index.
Definition at line 81 of file nat_affinity.c.
clib_error_t* nat_affinity_init | ( | vlib_main_t * | vm | ) |
Initialize NAT client-IP based affinity.
vm | vlib main. |
Definition at line 47 of file nat_affinity.c.
void nat_affinity_unlock | ( | ip4_address_t | client_addr, |
ip4_address_t | service_addr, | ||
u8 | proto, | ||
u16 | service_port | ||
) |
Release a reference counting lock for affinity.
client_addr | Client IP address. |
service_addr | Service IP address. |
proto | IP protocol number. |
Definition at line 242 of file nat_affinity.c.
nat_affinity_main_t nat_affinity_main |
Definition at line 23 of file nat_affinity.c.