FD.io VPP
v21.10.1-2-g0a485f517
Vector Packet Processing
|
Go to the source code of this file.
Macros | |
#define | HALF_OPEN_LOOKUP_INVALID_VALUE ((u64)~0) |
Typedefs | |
typedef enum session_lookup_result_ | session_lookup_result_t |
typedef enum _session_rule_scope | session_rule_scope_e |
typedef struct _session_rule_add_del_args | session_rule_add_del_args_t |
Enumerations | |
enum | session_lookup_result_ { SESSION_LOOKUP_RESULT_NONE, SESSION_LOOKUP_RESULT_WRONG_THREAD, SESSION_LOOKUP_RESULT_FILTERED } |
#define HALF_OPEN_LOOKUP_INVALID_VALUE ((u64)~0) |
Definition at line 23 of file session_lookup.h.
typedef enum session_lookup_result_ session_lookup_result_t |
typedef struct _session_rule_add_del_args session_rule_add_del_args_t |
typedef enum _session_rule_scope session_rule_scope_e |
Enumerator | |
---|---|
SESSION_LOOKUP_RESULT_NONE | |
SESSION_LOOKUP_RESULT_WRONG_THREAD | |
SESSION_LOOKUP_RESULT_FILTERED |
Definition at line 25 of file session_lookup.h.
int session_lookup_add_connection | ( | transport_connection_t * | tc, |
u64 | value | ||
) |
Add transport connection to a session table.
Session lookup 5-tuple (src-ip, dst-ip, src-port, dst-port, session-type) is added to requested session table.
tc | transport connection to be added |
value | value to be stored |
Definition at line 237 of file session_lookup.c.
int session_lookup_add_half_open | ( | transport_connection_t * | tc, |
u64 | value | ||
) |
Definition at line 787 of file session_lookup.c.
int session_lookup_add_session_endpoint | ( | u32 | table_index, |
session_endpoint_t * | sep, | ||
u64 | value | ||
) |
Definition at line 263 of file session_lookup.c.
transport_connection_t* session_lookup_connection | ( | u32 | fib_index, |
ip46_address_t * | lcl, | ||
ip46_address_t * | rmt, | ||
u16 | lcl_port, | ||
u16 | rmt_port, | ||
u8 | proto, | ||
u8 | is_ip4 | ||
) |
Definition at line 1304 of file session_lookup.c.
transport_connection_t* session_lookup_connection4 | ( | u32 | fib_index, |
ip4_address_t * | lcl, | ||
ip4_address_t * | rmt, | ||
u16 | lcl_port, | ||
u16 | rmt_port, | ||
u8 | proto | ||
) |
Lookup connection with ip4 and transport layer information.
Not optimized. Lookup logic is identical to that of session_lookup_connection_wt4
fib_index | index of the fib wherein the connection was received |
lcl | local ip4 address |
rmt | remote ip4 address |
lcl_port | local port |
rmt_port | remote port |
proto | transport protocol (e.g., tcp, udp) |
Definition at line 988 of file session_lookup.c.
transport_connection_t* session_lookup_connection6 | ( | u32 | fib_index, |
ip6_address_t * | lcl, | ||
ip6_address_t * | rmt, | ||
u16 | lcl_port, | ||
u16 | rmt_port, | ||
u8 | proto | ||
) |
Lookup connection with ip6 and transport layer information.
Not optimized. This is used on the fast path so it needs to be fast. Thereby, duplication of code and 'hacks' allowed. Lookup logic is identical to that of session_lookup_connection_wt4
fib_index | index of the fib wherein the connection was received |
lcl | local ip6 address |
rmt | remote ip6 address |
lcl_port | local port |
rmt_port | remote port |
proto | transport protocol (e.g., tcp, udp) |
Definition at line 1205 of file session_lookup.c.
transport_connection_t* session_lookup_connection_wt4 | ( | u32 | fib_index, |
ip4_address_t * | lcl, | ||
ip4_address_t * | rmt, | ||
u16 | lcl_port, | ||
u16 | rmt_port, | ||
u8 | proto, | ||
u32 | thread_index, | ||
u8 * | result | ||
) |
Lookup connection with ip4 and transport layer information.
This is used on the fast path so it needs to be fast. Thereby, duplication of code and 'hacks' allowed.
The lookup is incremental and returns whenever something is matched. The steps are:
fib_index | index of fib wherein the connection was received |
lcl | local ip4 address |
rmt | remote ip4 address |
lcl_port | local port |
rmt_port | remote port |
proto | transport protocol (e.g., tcp, udp) |
thread_index | thread index for request |
is_filtered | return flag that indicates if connection was filtered. |
Definition at line 905 of file session_lookup.c.
transport_connection_t* session_lookup_connection_wt6 | ( | u32 | fib_index, |
ip6_address_t * | lcl, | ||
ip6_address_t * | rmt, | ||
u16 | lcl_port, | ||
u16 | rmt_port, | ||
u8 | proto, | ||
u32 | thread_index, | ||
u8 * | result | ||
) |
Lookup connection with ip6 and transport layer information.
This is used on the fast path so it needs to be fast. Thereby, duplication of code and 'hacks' allowed.
The lookup is incremental and returns whenever something is matched. The steps are:
fib_index | index of the fib wherein the connection was received |
lcl | local ip6 address |
rmt | remote ip6 address |
lcl_port | local port |
rmt_port | remote port |
proto | transport protocol (e.g., tcp, udp) |
thread_index | thread index for request |
Definition at line 1129 of file session_lookup.c.
int session_lookup_del_connection | ( | transport_connection_t * | tc | ) |
Delete transport connection from session table.
table_index | session table index |
tc | transport connection to be removed |
Definition at line 349 of file session_lookup.c.
int session_lookup_del_half_open | ( | transport_connection_t * | tc | ) |
Definition at line 813 of file session_lookup.c.
int session_lookup_del_session | ( | session_t * | s | ) |
Definition at line 373 of file session_lookup.c.
int session_lookup_del_session_endpoint | ( | u32 | table_index, |
session_endpoint_t * | sep | ||
) |
Definition at line 290 of file session_lookup.c.
int session_lookup_del_session_endpoint2 | ( | session_endpoint_t * | sep | ) |
Definition at line 315 of file session_lookup.c.
u64 session_lookup_endpoint_listener | ( | u32 | table_index, |
session_endpoint_t * | sep, | ||
u8 | use_rules | ||
) |
Lookup listener for session endpoint in table.
table_index | table where the endpoint should be looked up |
sep | session endpoint to be looked up |
use_rules | flag that indicates if the session rules of the table should be used |
Definition at line 474 of file session_lookup.c.
Definition at line 218 of file session_lookup.c.
session_t* session_lookup_global_session_endpoint | ( | session_endpoint_t * | ) |
transport_connection_t* session_lookup_half_open_connection | ( | u64 | handle, |
u8 | proto, | ||
u8 | is_ip4 | ||
) |
Definition at line 868 of file session_lookup.c.
u64 session_lookup_half_open_handle | ( | transport_connection_t * | tc | ) |
Definition at line 837 of file session_lookup.c.
void session_lookup_init | ( | void | ) |
Definition at line 1716 of file session_lookup.c.
session_t* session_lookup_listener | ( | u32 | table_index, |
session_endpoint_t * | sep | ||
) |
Lookup listener, exact or proxy (inaddr_any:0) match.
Definition at line 750 of file session_lookup.c.
session_t* session_lookup_listener4 | ( | u32 | fib_index, |
ip4_address_t * | lcl, | ||
u16 | lcl_port, | ||
u8 | proto, | ||
u8 | use_wildcard | ||
) |
Definition at line 693 of file session_lookup.c.
session_t* session_lookup_listener6 | ( | u32 | fib_index, |
ip6_address_t * | lcl, | ||
u16 | lcl_port, | ||
u8 | proto, | ||
u8 | use_wildcard | ||
) |
Definition at line 736 of file session_lookup.c.
session_t* session_lookup_listener_wildcard | ( | u32 | table_index, |
session_endpoint_t * | sep | ||
) |
Lookup listener wildcard match.
Definition at line 769 of file session_lookup.c.
u64 session_lookup_local_endpoint | ( | u32 | table_index, |
session_endpoint_t * | sep | ||
) |
Look up endpoint in local session table.
The result, for now, is an application index and it may in the future be extended to a more complicated "action object". The only action we emulate now is "drop" and for that we return a special app index.
Lookup logic is to check in order:
table_index | table where the lookup should be done |
sep | session endpoint to be looked up |
Definition at line 546 of file session_lookup.c.
session_t* session_lookup_safe4 | ( | u32 | fib_index, |
ip4_address_t * | lcl, | ||
ip4_address_t * | rmt, | ||
u16 | lcl_port, | ||
u16 | rmt_port, | ||
u8 | proto | ||
) |
Lookup session with ip4 and transport layer information.
Important note: this may look into another thread's pool table and register as 'peeker'. Caller should call session_pool_remove_peeker as if needed as soon as possible.
Lookup logic is similar to that of session_lookup_connection_wt4 but this returns a session as opposed to a transport connection and it does not try to lookup half-open sessions.
Typically used by dgram connections
Definition at line 1060 of file session_lookup.c.
session_t* session_lookup_safe6 | ( | u32 | fib_index, |
ip6_address_t * | lcl, | ||
ip6_address_t * | rmt, | ||
u16 | lcl_port, | ||
u16 | rmt_port, | ||
u8 | proto | ||
) |
Lookup session with ip6 and transport layer information.
Important note: this may look into another thread's pool table and register as 'peeker'. Caller should call session_pool_remove_peeker as if needed as soon as possible.
Lookup logic is similar to that of session_lookup_connection_wt6 but this returns a session as opposed to a transport connection and it does not try to lookup half-open sessions.
Typically used by dgram connections
Definition at line 1268 of file session_lookup.c.
void session_lookup_set_tables_appns | ( | app_namespace_t * | app_ns | ) |
Mark (global) tables as pertaining to app ns.
Definition at line 1361 of file session_lookup.c.
void session_lookup_show_table_entries | ( | vlib_main_t * | vm, |
session_table_t * | table, | ||
u8 | type, | ||
u8 | is_local | ||
) |
Definition at line 1427 of file session_lookup.c.
int vnet_session_rule_add_del | ( | session_rule_add_del_args_t * | args | ) |
Definition at line 1317 of file session_lookup.c.