Go to the source code of this file.
|
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_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) |
|
◆ vnet_declare_rewrite
#define vnet_declare_rewrite |
( |
|
total_bytes | ) |
|
Value:struct { \
vnet_rewrite_header_t rewrite_header; \
\
u8 rewrite_data[(total_bytes) - sizeof (vnet_rewrite_header_t)]; \
}
Definition at line 108 of file rewrite.h.
◆ VNET_REWRITE_FOR_SW_INTERFACE_ADDRESS_BROADCAST
#define VNET_REWRITE_FOR_SW_INTERFACE_ADDRESS_BROADCAST ((void *) 0) |
◆ vnet_rewrite_get_data
◆ vnet_rewrite_one_header
#define vnet_rewrite_one_header |
( |
|
rw0, |
|
|
|
p0, |
|
|
|
most_likely_size |
|
) |
| |
Value:_vnet_rewrite_one_header (&((rw0).rewrite_header), (p0), \
(most_likely_size))
Definition at line 198 of file rewrite.h.
◆ vnet_rewrite_set_data
#define vnet_rewrite_set_data |
( |
|
rw, |
|
|
|
data, |
|
|
|
data_bytes |
|
) |
| |
Value: sizeof ((rw).rewrite_data), \
(data_bytes))
static void vnet_rewrite_set_data_internal(vnet_rewrite_header_t *rw, int max_size, void *data, int data_bytes)
Definition at line 138 of file rewrite.h.
◆ vnet_rewrite_two_headers
#define vnet_rewrite_two_headers |
( |
|
rw0, |
|
|
|
rw1, |
|
|
|
p0, |
|
|
|
p1, |
|
|
|
most_likely_size |
|
) |
| |
Value:_vnet_rewrite_two_headers (&((rw0).rewrite_header), &((rw1).rewrite_header), \
(p0), (p1), \
(most_likely_size))
Definition at line 202 of file rewrite.h.
◆ vnet_rewrite_data_t
◆ vnet_rewrite_flags_t
Flags associated with the rewrite/adjacency.
◆ vnet_rewrite_flags_t_
Flags associated with the rewrite/adjacency.
Enumerator |
---|
VNET_REWRITE_HAS_FEATURES | This adjacency/interface has output features configured.
|
Definition at line 52 of file rewrite.h.
◆ CLIB_PACKED()
◆ STATIC_ASSERT()
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.
◆ vnet_build_rewrite_for_sw_interface()
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 |
|
) |
| |
◆ vnet_ip_mcast_fixup_header()
static void vnet_ip_mcast_fixup_header |
( |
u32 |
dst_mcast_mask, |
|
|
u32 |
dst_mcast_offset, |
|
|
u32 * |
addr, |
|
|
u8 * |
packet0 |
|
) |
| |
|
inlinestatic |
◆ vnet_rewrite_clear_data_internal()
static void vnet_rewrite_clear_data_internal |
( |
vnet_rewrite_header_t * |
rw, |
|
|
int |
max_size |
|
) |
| |
|
inlinestatic |
◆ vnet_rewrite_for_sw_interface()
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 |
|
) |
| |
◆ vnet_rewrite_get_data_internal()
static void* vnet_rewrite_get_data_internal |
( |
vnet_rewrite_header_t * |
rw, |
|
|
int |
max_size |
|
) |
| |
|
inlinestatic |
◆ vnet_rewrite_init()
◆ vnet_rewrite_set_data_internal()
static void vnet_rewrite_set_data_internal |
( |
vnet_rewrite_header_t * |
rw, |
|
|
int |
max_size, |
|
|
void * |
data, |
|
|
int |
data_bytes |
|
) |
| |
|
inlinestatic |
◆ vnet_rewrite_update_mtu()
◆ vnet_tx_node_index_for_sw_interface()
u32 vnet_tx_node_index_for_sw_interface |
( |
struct vnet_main_t * |
vnm, |
|
|
u32 |
sw_if_index |
|
) |
| |
◆ vnet_update_adjacency_for_sw_interface()
void vnet_update_adjacency_for_sw_interface |
( |
struct vnet_main_t * |
vnm, |
|
|
u32 |
sw_if_index, |
|
|
u32 |
ai |
|
) |
| |
◆ format_vnet_rewrite
◆ serialize_vnet_rewrite
◆ unserialize_vnet_rewrite