|
FD.io VPP
v21.06-3-gbb25fbf28
Vector Packet Processing
|
Go to the documentation of this file.
15 #ifndef __included_udp_h__
16 #define __included_udp_h__
30 #define udp_error(n,s) UDP_ERROR_##n,
36 #define foreach_udp_connection_flag \
37 _(CONNECTED, "CONNECTED") \
38 _(OWNS_PORT, "OWNS_PORT") \
39 _(CLOSING, "CLOSING") \
41 _(MIGRATED, "MIGRATED") \
45 #define _(sym, str) UDP_CONN_F_BIT_##sym,
53 #define _(sym, str) UDP_CONN_F_##sym = 1 << UDP_CONN_F_BIT_##sym,
106 u16 *next_by_dst_port4;
133 char *dst_port_name,
u8 is_ip4);
216 old_c->
flags |= UDP_CONN_F_MIGRATED;
218 new_c->c_thread_index = current_thread_index;
220 new_c->c_fib_index = old_c->c_fib_index;
void udp_punt_unknown(vlib_main_t *vm, u8 is_ip4, u8 is_add)
udp_connection_t * udp_connection_alloc(u32 thread_index)
static udp_connection_t * udp_listener_get(u32 conn_index)
format_function_t format_udp_rx_trace
vl_api_ip_port_and_mask_t dst_port
vlib_node_registration_t udp6_local_node
(constructor) VLIB_REGISTER_NODE (udp6_local_node)
nat44_ei_hairpin_src_next_t next_index
static_always_inline void clib_spinlock_lock_if_init(clib_spinlock_t *p)
void udp_add_dst_port(udp_main_t *um, udp_dst_port_t dst_port, char *dst_port_name, u8 is_ip4)
#define pool_elt_at_index(p, i)
Returns pointer to element at given index.
#define CLIB_CACHE_LINE_ALIGN_MARK(mark)
#define foreach_udp_connection_flag
cloned to another thread
void udp_connection_share_port(u16 lcl_port, u8 is_ip4)
vlib_main_t * vm
X-connect all packets from the HOST to the PHY.
vlib_node_registration_t udp4_input_node
(constructor) VLIB_REGISTER_NODE (udp4_input_node)
enum udp_conn_flags_ udp_conn_flags_t
struct _transport_connection transport_connection_t
vlib_node_registration_t udp4_local_node
(constructor) VLIB_REGISTER_NODE (udp4_local_node)
static_always_inline void * clib_memcpy_fast(void *restrict dst, const void *restrict src, size_t n)
clib_spinlock_t * peekers_readers_locks
unformat_function_t unformat_udp_header
#define pool_is_free_index(P, I)
Use free bitmap to query whether given index is free.
udp_dst_port_info_t * dst_port_infos[N_UDP_AF]
void udp_connection_free(udp_connection_t *uc)
static udp_connection_t * udp_connection_get(u32 conn_index, u32 thread_index)
#define vec_elt_at_index(v, i)
Get vector value at index i checking that i is in bounds.
format_function_t format_udp_header
static void udp_pool_remove_peeker(u32 thread_index)
static_always_inline uword vlib_get_thread_index(void)
udp_connection_t * listener_pool
unformat_function_t unformat_udp_port
struct _vlib_node_registration vlib_node_registration_t
uword unformat_pg_edit(unformat_input_t *input, va_list *args)
static void udp_pool_add_peeker(u32 thread_index)
Acquires a lock that blocks a connection pool from expanding.
format_function_t format_udp_connection
static u32 udp_connection_index(udp_connection_t *uc)
vlib_node_registration_t udp6_input_node
(constructor) VLIB_REGISTER_NODE (udp6_input_node)
uword * dst_port_info_by_dst_port[N_UDP_AF]
static udp_dst_port_info_t * udp_get_dst_port_info(udp_main_t *um, udp_dst_port_t dst_port, u8 is_ip4)
clib_spinlock_t rx_lock
rx fifo lock
static udp_connection_t * udp_connection_clone_safe(u32 connection_index, u32 thread_index)
static_always_inline void clib_spinlock_unlock_if_init(clib_spinlock_t *p)
udp_connection_t ** connections
clib_spinlock_t * peekers_write_locks
static udp_main_t * vnet_get_udp_main()
static udp_connection_t * udp_connection_from_transport(transport_connection_t *tc)
vl_api_wireguard_peer_flags_t flags