Go to the source code of this file.
|
#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_fixup_one_header(rw0, addr, p0) |
|
#define | VNET_REWRITE_FOR_SW_INTERFACE_ADDRESS_BROADCAST ((void *) 0) |
|
|
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;u32 dst_mcast_mask;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 |
|
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, u32 this_node, u32 next_node, 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) |
|
#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 112 of file rewrite.h.
#define vnet_fixup_one_header |
( |
|
rw0, |
|
|
|
addr, |
|
|
|
p0 |
|
) |
| |
Value:_vnet_fixup_one_header (&((rw0).rewrite_header), \
Definition at line 308 of file rewrite.h.
#define VNET_REWRITE_FOR_SW_INTERFACE_ADDRESS_BROADCAST ((void *) 0) |
#define vnet_rewrite_one_header |
( |
|
rw0, |
|
|
|
p0, |
|
|
|
most_likely_size |
|
) |
| |
Value:_vnet_rewrite_one_header (&((rw0).rewrite_header), (p0), \
sizeof ((rw0).rewrite_data), \
(most_likely_size))
Definition at line 281 of file rewrite.h.
#define vnet_rewrite_set_data |
( |
|
rw, |
|
|
|
data, |
|
|
|
data_bytes |
|
) |
| |
Value: sizeof ((rw).rewrite_data), \
(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 142 of file rewrite.h.
#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), \
sizeof ((rw0).rewrite_data), \
(most_likely_size))
Definition at line 286 of file rewrite.h.
Flags associated with the rewrite/adjacency.
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.
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 |
|
) |
| |
static void vnet_rewrite_clear_data_internal |
( |
vnet_rewrite_header_t * |
rw, |
|
|
int |
max_size |
|
) |
| |
|
inlinestatic |
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 |
|
) |
| |
static void* vnet_rewrite_get_data_internal |
( |
vnet_rewrite_header_t * |
rw, |
|
|
int |
max_size |
|
) |
| |
|
inlinestatic |
void vnet_rewrite_init |
( |
struct vnet_main_t * |
vnm, |
|
|
u32 |
sw_if_index, |
|
|
u32 |
this_node, |
|
|
u32 |
next_node, |
|
|
vnet_rewrite_header_t * |
rw |
|
) |
| |
static void vnet_rewrite_set_data_internal |
( |
vnet_rewrite_header_t * |
rw, |
|
|
int |
max_size, |
|
|
void * |
data, |
|
|
int |
data_bytes |
|
) |
| |
|
inlinestatic |
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 |
|
) |
| |