FD.io VPP
v18.07.1-19-g511ce25
Vector Packet Processing
|
Go to the source code of this file.
Macros | |
#define | vnet_declare_rewrite(total_bytes) |
#define | vnet_rewrite_set_data(rw, data, data_bytes) |
#define | vnet_rewrite_get_data(rw) vnet_rewrite_get_data_internal (&((rw).rewrite_header), sizeof ((rw).rewrite_data)) |
#define | vnet_rewrite_one_header(rw0, p0, most_likely_size) |
#define | vnet_rewrite_two_headers(rw0, rw1, p0, p1, most_likely_size) |
#define | VNET_REWRITE_FOR_SW_INTERFACE_ADDRESS_BROADCAST ((void *) 0) |
Typedefs | |
typedef uword | vnet_rewrite_data_t |
typedef enum vnet_rewrite_flags_t_ | vnet_rewrite_flags_t |
Flags associated with the rewrite/adjacency. More... | |
Enumerations | |
enum | vnet_rewrite_flags_t_ { VNET_REWRITE_HAS_FEATURES = (1 << 0) } |
Flags associated with the rewrite/adjacency. More... | |
Functions | |
typedef | CLIB_PACKED (struct{u32 sw_if_index;u16 next_index;u16 data_bytes;u16 max_l3_packet_bytes;vnet_rewrite_flags_t flags;u8 dst_mcast_offset;u8 data[0];}) vnet_rewrite_header_t |
STATIC_ASSERT (sizeof(vnet_rewrite_header_t)<=16,"Rewrite header too big") | |
At 16 bytes of rewrite herader we have enought space left for a IPv6 (40 bytes) + LISP-GPE (8 bytes) in the cache line. More... | |
static void | vnet_rewrite_clear_data_internal (vnet_rewrite_header_t *rw, int max_size) |
static void | vnet_rewrite_set_data_internal (vnet_rewrite_header_t *rw, int max_size, void *data, int data_bytes) |
static void * | vnet_rewrite_get_data_internal (vnet_rewrite_header_t *rw, int max_size) |
static void | vnet_rewrite_copy_one (vnet_rewrite_data_t *p0, vnet_rewrite_data_t *rw0, int i) |
void | vnet_rewrite_copy_slow_path (vnet_rewrite_data_t *p0, vnet_rewrite_data_t *rw0, word n_left, uword most_likely_size) |
typedef | CLIB_PACKED (struct{u64 a;u32 b;u16 c;}) eh_copy_t |
static void | vnet_ip_mcast_fixup_header (u32 dst_mcast_mask, u32 dst_mcast_offset, u32 *addr, u8 *packet0) |
void | vnet_rewrite_for_sw_interface (struct vnet_main_t *vnm, vnet_link_t packet_type, u32 sw_if_index, u32 node_index, void *dst_address, vnet_rewrite_header_t *rw, u32 max_rewrite_bytes) |
Deprecated. More... | |
u32 | vnet_tx_node_index_for_sw_interface (struct vnet_main_t *vnm, u32 sw_if_index) |
void | vnet_rewrite_init (struct vnet_main_t *vnm, u32 sw_if_index, vnet_link_t linkt, u32 this_node, u32 next_node, vnet_rewrite_header_t *rw) |
void | vnet_rewrite_update_mtu (struct vnet_main_t *vnm, vnet_link_t linkt, vnet_rewrite_header_t *rw) |
u8 * | vnet_build_rewrite_for_sw_interface (struct vnet_main_t *vnm, u32 sw_if_index, vnet_link_t packet_type, const void *dst_address) |
void | vnet_update_adjacency_for_sw_interface (struct vnet_main_t *vnm, u32 sw_if_index, u32 ai) |
Variables | |
format_function_t | format_vnet_rewrite |
serialize_function_t | serialize_vnet_rewrite |
serialize_function_t | unserialize_vnet_rewrite |
#define vnet_declare_rewrite | ( | total_bytes | ) |
#define VNET_REWRITE_FOR_SW_INTERFACE_ADDRESS_BROADCAST ((void *) 0) |
#define vnet_rewrite_get_data | ( | rw | ) | vnet_rewrite_get_data_internal (&((rw).rewrite_header), sizeof ((rw).rewrite_data)) |
#define vnet_rewrite_one_header | ( | rw0, | |
p0, | |||
most_likely_size | |||
) |
#define vnet_rewrite_set_data | ( | rw, | |
data, | |||
data_bytes | |||
) |
#define vnet_rewrite_two_headers | ( | rw0, | |
rw1, | |||
p0, | |||
p1, | |||
most_likely_size | |||
) |
typedef uword vnet_rewrite_data_t |
typedef enum vnet_rewrite_flags_t_ vnet_rewrite_flags_t |
Flags associated with the rewrite/adjacency.
typedef CLIB_PACKED | ( | struct{u32 sw_if_index;u16 next_index;u16 data_bytes;u16 max_l3_packet_bytes;vnet_rewrite_flags_t flags;u8 dst_mcast_offset;u8 data[0];} | ) |
STATIC_ASSERT | ( | sizeof(vnet_rewrite_header_t)<= | 16, |
"Rewrite header too big" | |||
) |
At 16 bytes of rewrite herader we have enought space left for a IPv6 (40 bytes) + LISP-GPE (8 bytes) in the cache line.
u8* vnet_build_rewrite_for_sw_interface | ( | struct vnet_main_t * | vnm, |
u32 | sw_if_index, | ||
vnet_link_t | packet_type, | ||
const void * | dst_address | ||
) |
|
inlinestatic |
|
inlinestatic |
void vnet_rewrite_copy_slow_path | ( | vnet_rewrite_data_t * | p0, |
vnet_rewrite_data_t * | rw0, | ||
word | n_left, | ||
uword | most_likely_size | ||
) |
void vnet_rewrite_for_sw_interface | ( | struct vnet_main_t * | vnm, |
vnet_link_t | packet_type, | ||
u32 | sw_if_index, | ||
u32 | node_index, | ||
void * | dst_address, | ||
vnet_rewrite_header_t * | rw, | ||
u32 | max_rewrite_bytes | ||
) |
|
inlinestatic |
void vnet_rewrite_init | ( | struct vnet_main_t * | vnm, |
u32 | sw_if_index, | ||
vnet_link_t | linkt, | ||
u32 | this_node, | ||
u32 | next_node, | ||
vnet_rewrite_header_t * | rw | ||
) |
|
inlinestatic |
void vnet_rewrite_update_mtu | ( | struct vnet_main_t * | vnm, |
vnet_link_t | linkt, | ||
vnet_rewrite_header_t * | rw | ||
) |
u32 vnet_tx_node_index_for_sw_interface | ( | struct vnet_main_t * | vnm, |
u32 | sw_if_index | ||
) |
void vnet_update_adjacency_for_sw_interface | ( | struct vnet_main_t * | vnm, |
u32 | sw_if_index, | ||
u32 | ai | ||
) |
format_function_t format_vnet_rewrite |
serialize_function_t serialize_vnet_rewrite |
serialize_function_t unserialize_vnet_rewrite |