FD.io VPP  v16.06
Vector Packet Processing
rewrite.h File Reference
+ Include dependency graph for rewrite.h:
+ This graph shows which files directly or indirectly include this file:

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
 

Functions

typedef CLIB_PACKED (struct{u32 sw_if_index;u32 node_index;u16 next_index;u16 data_bytes;u16 max_l3_packet_bytes;u8 data[0];}) vnet_rewrite_header_t
 
always_inline void vnet_rewrite_set_data_internal (vnet_rewrite_header_t *rw, int max_size, void *data, int data_bytes)
 
always_inline voidvnet_rewrite_get_data_internal (vnet_rewrite_header_t *rw, int max_size)
 
always_inline 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_l3_packet_type_t packet_type, u32 sw_if_index, u32 node_index, void *dst_address, vnet_rewrite_header_t *rw, u32 max_rewrite_bytes)
 
void vnet_rewrite_for_tunnel (struct vnet_main_t *vnm, u32 tx_sw_if_index, u32 rewrite_node_index, u32 post_rewrite_node_index, vnet_rewrite_header_t *rw, u8 *rewrite_data, u32 rewrite_length)
 

Variables

unformat_function_t unformat_vnet_rewrite
 
format_function_t format_vnet_rewrite
 
format_function_t format_vnet_rewrite_header
 
serialize_function_t serialize_vnet_rewrite
 
serialize_function_t unserialize_vnet_rewrite
 

Macro Definition Documentation

#define vnet_declare_rewrite (   total_bytes)
Value:
struct { \
vnet_rewrite_header_t rewrite_header; \
\
u8 rewrite_data[(total_bytes) - sizeof (vnet_rewrite_header_t)]; \
}
unsigned char u8
Definition: types.h:56

Definition at line 82 of file rewrite.h.

#define VNET_REWRITE_FOR_SW_INTERFACE_ADDRESS_BROADCAST   ((void *) 0)

Definition at line 256 of file rewrite.h.

#define vnet_rewrite_get_data (   rw)    vnet_rewrite_get_data_internal (&((rw).rewrite_header), sizeof ((rw).rewrite_data))

Definition at line 117 of file rewrite.h.

#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 245 of file rewrite.h.

#define vnet_rewrite_set_data (   rw,
  data,
  data_bytes 
)
Value:
vnet_rewrite_set_data_internal (&((rw).rewrite_header), \
sizeof ((rw).rewrite_data), \
(data), \
(data_bytes))
always_inline void vnet_rewrite_set_data_internal(vnet_rewrite_header_t *rw, int max_size, void *data, int data_bytes)
Definition: rewrite.h:90

Definition at line 104 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 250 of file rewrite.h.

Typedef Documentation

Definition at line 47 of file rewrite.h.

Function Documentation

typedef CLIB_PACKED ( struct{u32 sw_if_index;u32 node_index;u16 next_index;u16 data_bytes;u16 max_l3_packet_bytes;u8 data[0];}  )

+ Here is the caller graph for this function:

typedef CLIB_PACKED ( struct{u64 a;u32 b;u16 c;}  )
always_inline void vnet_rewrite_copy_one ( vnet_rewrite_data_t p0,
vnet_rewrite_data_t rw0,
int  i 
)

Definition at line 121 of file rewrite.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void vnet_rewrite_copy_slow_path ( vnet_rewrite_data_t p0,
vnet_rewrite_data_t rw0,
word  n_left,
uword  most_likely_size 
)

Definition at line 43 of file rewrite.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void vnet_rewrite_for_sw_interface ( struct vnet_main_t vnm,
vnet_l3_packet_type_t  packet_type,
u32  sw_if_index,
u32  node_index,
void dst_address,
vnet_rewrite_header_t *  rw,
u32  max_rewrite_bytes 
)

Definition at line 187 of file rewrite.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void vnet_rewrite_for_tunnel ( struct vnet_main_t vnm,
u32  tx_sw_if_index,
u32  rewrite_node_index,
u32  post_rewrite_node_index,
vnet_rewrite_header_t *  rw,
u8 rewrite_data,
u32  rewrite_length 
)

Definition at line 216 of file rewrite.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

always_inline void* vnet_rewrite_get_data_internal ( vnet_rewrite_header_t *  rw,
int  max_size 
)

Definition at line 111 of file rewrite.h.

+ Here is the caller graph for this function:

always_inline void vnet_rewrite_set_data_internal ( vnet_rewrite_header_t *  rw,
int  max_size,
void data,
int  data_bytes 
)

Definition at line 90 of file rewrite.h.

+ Here is the caller graph for this function:

Variable Documentation

format_function_t format_vnet_rewrite

Definition at line 276 of file rewrite.h.

format_function_t format_vnet_rewrite_header

Definition at line 277 of file rewrite.h.

serialize_function_t serialize_vnet_rewrite

Definition at line 279 of file rewrite.h.

unformat_function_t unformat_vnet_rewrite

Definition at line 274 of file rewrite.h.

serialize_function_t unserialize_vnet_rewrite

Definition at line 279 of file rewrite.h.