FD.io VPP  v18.01.2-1-g9b554f3
Vector Packet Processing
session_lookup.c File Reference
+ Include dependency graph for session_lookup.c:

Go to the source code of this file.

Typedefs

typedef clib_bihash_kv_16_8_t session_kv4_t
 
typedef clib_bihash_kv_48_8_t session_kv6_t
 
typedef struct _ip4_session_table_show_ctx_t ip4_session_table_show_ctx_t
 

Functions

typedef CLIB_PACKED (struct{union{struct{ip4_address_t src;ip4_address_t dst;u16 src_port;u16 dst_port;u32 proto;};u64 as_u64[2];};})
 
static void make_v4_ss_kv (session_kv4_t *kv, ip4_address_t *lcl, ip4_address_t *rmt, u16 lcl_port, u16 rmt_port, u8 proto)
 
static void make_v4_listener_kv (session_kv4_t *kv, ip4_address_t *lcl, u16 lcl_port, u8 proto)
 
static void make_v4_proxy_kv (session_kv4_t *kv, ip4_address_t *lcl, u8 proto)
 
static void make_v4_ss_kv_from_tc (session_kv4_t *kv, transport_connection_t *tc)
 
static void make_v6_ss_kv (session_kv6_t *kv, ip6_address_t *lcl, ip6_address_t *rmt, u16 lcl_port, u16 rmt_port, u8 proto)
 
static void make_v6_listener_kv (session_kv6_t *kv, ip6_address_t *lcl, u16 lcl_port, u8 proto)
 
static void make_v6_proxy_kv (session_kv6_t *kv, ip6_address_t *lcl, u8 proto)
 
static void make_v6_ss_kv_from_tc (session_kv6_t *kv, transport_connection_t *tc)
 
static session_table_tsession_table_get_or_alloc (u8 fib_proto, u8 fib_index)
 
static session_table_tsession_table_get_or_alloc_for_connection (transport_connection_t *tc)
 
static session_table_tsession_table_get_for_connection (transport_connection_t *tc)
 
static session_table_tsession_table_get_for_fib_index (u32 fib_proto, u32 fib_index)
 
u32 session_lookup_get_index_for_fib (u32 fib_proto, u32 fib_index)
 
int session_lookup_add_connection (transport_connection_t *tc, u64 value)
 Add transport connection to a session table. More...
 
int session_lookup_add_session_endpoint (u32 table_index, session_endpoint_t *sep, u64 value)
 
int session_lookup_del_session_endpoint (u32 table_index, session_endpoint_t *sep)
 
int session_lookup_del_connection (transport_connection_t *tc)
 Delete transport connection from session table. More...
 
int session_lookup_del_session (stream_session_t *s)
 
static u8 session_lookup_action_index_is_valid (u32 action_index)
 
static u32 session_lookup_action_to_app_index (u32 action_index)
 
static stream_session_tsession_lookup_app_listen_session (u32 app_index, u8 fib_proto, u8 transport_proto)
 
static stream_session_tsession_lookup_action_to_session (u32 action_index, u8 fib_proto, u8 transport_proto)
 
stream_session_tsession_lookup_rules_table_session4 (session_table_t *st, u8 proto, ip4_address_t *lcl, u16 lcl_port, ip4_address_t *rmt, u16 rmt_port)
 
stream_session_tsession_lookup_rules_table_session6 (session_table_t *st, u8 proto, ip6_address_t *lcl, u16 lcl_port, ip6_address_t *rmt, u16 rmt_port)
 
u64 session_lookup_endpoint_listener (u32 table_index, session_endpoint_t *sep, u8 use_rules)
 Lookup listener for session endpoint in table. More...
 
u32 session_lookup_local_endpoint (u32 table_index, session_endpoint_t *sep)
 Look up endpoint in local session table. More...
 
static stream_session_tsession_lookup_listener4_i (session_table_t *st, ip4_address_t *lcl, u16 lcl_port, u8 proto)
 
stream_session_tsession_lookup_listener4 (u32 fib_index, ip4_address_t *lcl, u16 lcl_port, u8 proto)
 
static stream_session_tsession_lookup_listener6_i (session_table_t *st, ip6_address_t *lcl, u16 lcl_port, u8 proto)
 
stream_session_tsession_lookup_listener6 (u32 fib_index, ip6_address_t *lcl, u16 lcl_port, u8 proto)
 
stream_session_tsession_lookup_listener (u32 table_index, session_endpoint_t *sep)
 
int session_lookup_add_half_open (transport_connection_t *tc, u64 value)
 
int session_lookup_del_half_open (transport_connection_t *tc)
 
u64 session_lookup_half_open_handle (transport_connection_t *tc)
 
transport_connection_tsession_lookup_half_open_connection (u64 handle, u8 proto, u8 is_ip4)
 
transport_connection_tsession_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 *is_filtered)
 Lookup connection with ip4 and transport layer information. More...
 
transport_connection_tsession_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. More...
 
stream_session_tsession_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. More...
 
transport_connection_tsession_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 *is_filtered)
 Lookup connection with ip6 and transport layer information. More...
 
transport_connection_tsession_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. More...
 
stream_session_tsession_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. More...
 
u64 session_lookup_local_listener_make_handle (session_endpoint_t *sep)
 
u8 session_lookup_local_is_handle (u64 handle)
 
int session_lookup_local_listener_parse_handle (u64 handle, session_endpoint_t *sep)
 
clib_error_tvnet_session_rule_add_del (session_rule_add_del_args_t *args)
 
void session_lookup_set_tables_appns (app_namespace_t *app_ns)
 Mark (global) tables as pertaining to app ns. More...
 
u8format_ip4_session_lookup_kvp (u8 *s, va_list *args)
 
static int ip4_session_table_show (clib_bihash_kv_16_8_t *kvp, void *arg)
 
void session_lookup_show_table_entries (vlib_main_t *vm, session_table_t *table, u8 type, u8 is_local)
 
static clib_error_tsession_rule_command_fn (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
void session_lookup_dump_rules_table (u32 fib_index, u8 fib_proto, u8 transport_proto)
 
void session_lookup_dump_local_rules_table (u32 table_index, u8 fib_proto, u8 transport_proto)
 
static clib_error_tshow_session_rules_command_fn (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
void session_lookup_init (void)
 

Variables

transport_proto_vft_ttp_vfts
 Generate typed init functions for multiple hash table styles... More...
 
static u32fib_index_to_table_index [2]
 Network namespace index (i.e., fib index) to session lookup table. More...
 
 v6_connection_key_t
 
static vlib_cli_command_t session_rule_command
 (constructor) VLIB_CLI_COMMAND (session_rule_command) More...
 
static vlib_cli_command_t show_session_rules_command
 (constructor) VLIB_CLI_COMMAND (show_session_rules_command) More...
 

Typedef Documentation

typedef struct _ip4_session_table_show_ctx_t ip4_session_table_show_ctx_t

Definition at line 82 of file session_lookup.c.

Definition at line 83 of file session_lookup.c.

Function Documentation

typedef CLIB_PACKED ( struct{union{struct{ip4_address_t src;ip4_address_t dst;u16 src_port;u16 dst_port;u32 proto;};u64 as_u64[2];};}  )

Definition at line 45 of file session_lookup.c.

u8* format_ip4_session_lookup_kvp ( u8 s,
va_list *  args 
)

Definition at line 1332 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static int ip4_session_table_show ( clib_bihash_kv_16_8_t kvp,
void *  arg 
)
static

Definition at line 1369 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void make_v4_listener_kv ( session_kv4_t kv,
ip4_address_t lcl,
u16  lcl_port,
u8  proto 
)
inlinestatic

Definition at line 101 of file session_lookup.c.

+ Here is the caller graph for this function:

static void make_v4_proxy_kv ( session_kv4_t kv,
ip4_address_t lcl,
u8  proto 
)
inlinestatic

Definition at line 116 of file session_lookup.c.

+ Here is the caller graph for this function:

static void make_v4_ss_kv ( session_kv4_t kv,
ip4_address_t lcl,
ip4_address_t rmt,
u16  lcl_port,
u16  rmt_port,
u8  proto 
)
inlinestatic

Definition at line 86 of file session_lookup.c.

+ Here is the caller graph for this function:

static void make_v4_ss_kv_from_tc ( session_kv4_t kv,
transport_connection_t tc 
)
inlinestatic

Definition at line 130 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void make_v6_listener_kv ( session_kv6_t kv,
ip6_address_t lcl,
u16  lcl_port,
u8  proto 
)
inlinestatic

Definition at line 155 of file session_lookup.c.

+ Here is the caller graph for this function:

static void make_v6_proxy_kv ( session_kv6_t kv,
ip6_address_t lcl,
u8  proto 
)
inlinestatic

Definition at line 173 of file session_lookup.c.

+ Here is the caller graph for this function:

static void make_v6_ss_kv ( session_kv6_t kv,
ip6_address_t lcl,
ip6_address_t rmt,
u16  lcl_port,
u16  rmt_port,
u8  proto 
)
inlinestatic

Definition at line 137 of file session_lookup.c.

+ Here is the caller graph for this function:

static void make_v6_ss_kv_from_tc ( session_kv6_t kv,
transport_connection_t tc 
)
inlinestatic

Definition at line 190 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u8 session_lookup_action_index_is_valid ( u32  action_index)
static

Definition at line 383 of file session_lookup.c.

+ Here is the caller graph for this function:

static u32 session_lookup_action_to_app_index ( u32  action_index)
static

Definition at line 392 of file session_lookup.c.

+ Here is the caller graph for this function:

static stream_session_t* session_lookup_action_to_session ( u32  action_index,
u8  fib_proto,
u8  transport_proto 
)
static

Definition at line 419 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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.

Parameters
tctransport connection to be added
valuevalue to be stored
Returns
non-zero if failure

Definition at line 264 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int session_lookup_add_half_open ( transport_connection_t tc,
u64  value 
)

Definition at line 733 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int session_lookup_add_session_endpoint ( u32  table_index,
session_endpoint_t sep,
u64  value 
)

Definition at line 290 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static stream_session_t* session_lookup_app_listen_session ( u32  app_index,
u8  fib_proto,
u8  transport_proto 
)
static

Definition at line 407 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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. 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

Parameters
fib_indexindex of the fib wherein the connection was received
lcllocal ip4 address
rmtremote ip4 address
lcl_portlocal port
rmt_portremote port
prototransport protocol (e.g., tcp, udp)
Returns
pointer to transport connection, if one is found, 0 otherwise

Definition at line 930 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Parameters
fib_indexindex of the fib wherein the connection was received
lcllocal ip6 address
rmtremote ip6 address
lcl_portlocal port
rmt_portremote port
prototransport protocol (e.g., tcp, udp)
Returns
pointer to transport connection, if one is found, 0 otherwise

Definition at line 1139 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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 is_filtered 
)

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:

  • Try to find an established session
  • Try to find a half-open connection
  • Try session rules table
  • Try to find a fully-formed or local source wildcarded (listener bound to all interfaces) listener session
  • return 0
Parameters
fib_indexindex of fib wherein the connection was received
lcllocal ip4 address
rmtremote ip4 address
lcl_portlocal port
rmt_portremote port
prototransport protocol (e.g., tcp, udp)
thread_indexthread index for request
is_filteredreturn flag that indicates if connection was filtered.
Returns
pointer to transport connection, if one is found, 0 otherwise

Definition at line 853 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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 is_filtered 
)

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:

  • Try to find an established session
  • Try to find a half-open connection
  • Try session rules table
  • Try to find a fully-formed or local source wildcarded (listener bound to all interfaces) listener session
  • return 0
Parameters
fib_indexindex of the fib wherein the connection was received
lcllocal ip6 address
rmtremote ip6 address
lcl_portlocal port
rmt_portremote port
prototransport protocol (e.g., tcp, udp)
thread_indexthread index for request
Returns
pointer to transport connection, if one is found, 0 otherwise

Definition at line 1071 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int session_lookup_del_connection ( transport_connection_t tc)

Delete transport connection from session table.

Parameters
table_indexsession table index
tctransport connection to be removed
Returns
non-zero if failure

Definition at line 350 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int session_lookup_del_half_open ( transport_connection_t tc)

Definition at line 759 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int session_lookup_del_session ( stream_session_t s)

Definition at line 374 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int session_lookup_del_session_endpoint ( u32  table_index,
session_endpoint_t sep 
)

Definition at line 317 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void session_lookup_dump_local_rules_table ( u32  table_index,
u8  fib_proto,
u8  transport_proto 
)

Definition at line 1537 of file session_lookup.c.

+ Here is the call graph for this function:

void session_lookup_dump_rules_table ( u32  fib_index,
u8  fib_proto,
u8  transport_proto 
)

Definition at line 1525 of file session_lookup.c.

+ Here is the call graph for this function:

u64 session_lookup_endpoint_listener ( u32  table_index,
session_endpoint_t sep,
u8  use_rules 
)

Lookup listener for session endpoint in table.

Parameters
table_indextable where the endpoint should be looked up
sepsession endpoint to be looked up
use_rulesflag that indicates if the session rules of the table should be used
Returns
invalid handle if nothing is found, the handle of a valid listener or an action_index if a rule is hit

Definition at line 469 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u32 session_lookup_get_index_for_fib ( u32  fib_proto,
u32  fib_index 
)

Definition at line 245 of file session_lookup.c.

+ Here is the caller graph for this function:

transport_connection_t* session_lookup_half_open_connection ( u64  handle,
u8  proto,
u8  is_ip4 
)

Definition at line 814 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u64 session_lookup_half_open_handle ( transport_connection_t tc)

Definition at line 783 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void session_lookup_init ( void  )

Definition at line 1654 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

stream_session_t* session_lookup_listener ( u32  table_index,
session_endpoint_t sep 
)

Definition at line 717 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

stream_session_t* session_lookup_listener4 ( u32  fib_index,
ip4_address_t lcl,
u16  lcl_port,
u8  proto 
)

Definition at line 668 of file session_lookup.c.

+ Here is the call graph for this function:

static stream_session_t* session_lookup_listener4_i ( session_table_t st,
ip4_address_t lcl,
u16  lcl_port,
u8  proto 
)
static

Definition at line 632 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

stream_session_t* session_lookup_listener6 ( u32  fib_index,
ip6_address_t lcl,
u16  lcl_port,
u8  proto 
)

Definition at line 706 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static stream_session_t* session_lookup_listener6_i ( session_table_t st,
ip6_address_t lcl,
u16  lcl_port,
u8  proto 
)
static

Definition at line 679 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u32 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:

  • the rules in the table (connect acls)
  • session sub-table for a listener
  • session sub-table for a local listener (zeroed addr)
Parameters
table_indextable where the lookup should be done
sepsession endpoint to be looked up
Returns
index that can be interpreted as an app index or drop action.

Definition at line 541 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u8 session_lookup_local_is_handle ( u64  handle)

Definition at line 1246 of file session_lookup.c.

+ Here is the caller graph for this function:

u64 session_lookup_local_listener_make_handle ( session_endpoint_t sep)

Definition at line 1238 of file session_lookup.c.

+ Here is the caller graph for this function:

int session_lookup_local_listener_parse_handle ( u64  handle,
session_endpoint_t sep 
)

Definition at line 1254 of file session_lookup.c.

+ Here is the caller graph for this function:

stream_session_t* session_lookup_rules_table_session4 ( session_table_t st,
u8  proto,
ip4_address_t lcl,
u16  lcl_port,
ip4_address_t rmt,
u16  rmt_port 
)

Definition at line 430 of file session_lookup.c.

+ Here is the call graph for this function:

stream_session_t* session_lookup_rules_table_session6 ( session_table_t st,
u8  proto,
ip6_address_t lcl,
u16  lcl_port,
ip6_address_t rmt,
u16  rmt_port 
)

Definition at line 445 of file session_lookup.c.

+ Here is the call graph for this function:

stream_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 1002 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

stream_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 1202 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void session_lookup_set_tables_appns ( app_namespace_t app_ns)

Mark (global) tables as pertaining to app ns.

Definition at line 1316 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void session_lookup_show_table_entries ( vlib_main_t vm,
session_table_t table,
u8  type,
u8  is_local 
)

Definition at line 1378 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* session_rule_command_fn ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 1402 of file session_lookup.c.

+ Here is the call graph for this function:

static session_table_t* session_table_get_for_connection ( transport_connection_t tc)
static

Definition at line 227 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static session_table_t* session_table_get_for_fib_index ( u32  fib_proto,
u32  fib_index 
)
static

Definition at line 237 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static session_table_t* session_table_get_or_alloc ( u8  fib_proto,
u8  fib_index 
)
static

Definition at line 197 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static session_table_t* session_table_get_or_alloc_for_connection ( transport_connection_t tc)
static

Definition at line 219 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* show_session_rules_command_fn ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 1549 of file session_lookup.c.

+ Here is the call graph for this function:

clib_error_t* vnet_session_rule_add_del ( session_rule_add_del_args_t args)

Definition at line 1269 of file session_lookup.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Variable Documentation

u32* fib_index_to_table_index[2]
static

Network namespace index (i.e., fib index) to session lookup table.

We should have one per network protocol type but for now we only support IP4/6

Definition at line 41 of file session_lookup.c.

vlib_cli_command_t session_rule_command
static
Initial value:
=
{
.path = "session rule",
.short_help = "session rule [add|del] appns <ns_id> proto <proto> "
"<lcl-ip/plen> <lcl-port> <rmt-ip/plen> <rmt-port> action <action>",
}
static clib_error_t * session_rule_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)

(constructor) VLIB_CLI_COMMAND (session_rule_command)

Definition at line 1515 of file session_lookup.c.

vlib_cli_command_t show_session_rules_command
static
Initial value:
=
{
.path = "show session rules",
.short_help = "show session rules [<proto> appns <id> <lcl-ip/plen> "
"<lcl-port> <rmt-ip/plen> <rmt-port> scope <scope>]",
}
static clib_error_t * show_session_rules_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)

(constructor) VLIB_CLI_COMMAND (show_session_rules_command)

Definition at line 1644 of file session_lookup.c.

Generate typed init functions for multiple hash table styles...

External vector of per transport virtual functions table

Generate typed init functions for multiple hash table styles...

Definition at line 23 of file transport.c.

v6_connection_key_t

Definition at line 79 of file session_lookup.c.