FD.io VPP  v19.08.3-2-gbabecb413
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
 
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_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)
 
u8vnet_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
 

Macro Definition Documentation

◆ 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)

Definition at line 221 of file rewrite.h.

◆ vnet_rewrite_get_data

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

Definition at line 151 of file rewrite.h.

◆ 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:
vnet_rewrite_set_data_internal (&((rw).rewrite_header), \
sizeof ((rw).rewrite_data), \
(data), \
(data_bytes))
u8 data[128]
Definition: ipsec.api:251
static void vnet_rewrite_set_data_internal(vnet_rewrite_header_t *rw, int max_size, void *data, int data_bytes)
Definition: rewrite.h:126

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.

Typedef Documentation

◆ vnet_rewrite_data_t

Definition at line 47 of file rewrite.h.

◆ vnet_rewrite_flags_t

Flags associated with the rewrite/adjacency.

Enumeration Type Documentation

◆ 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.

Function Documentation

◆ CLIB_PACKED()

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()

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 
)

Definition at line 164 of file rewrite.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ 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

Definition at line 208 of file rewrite.h.

+ Here is the caller graph for this function:

◆ vnet_rewrite_clear_data_internal()

static void vnet_rewrite_clear_data_internal ( vnet_rewrite_header_t *  rw,
int  max_size 
)
inlinestatic

Definition at line 116 of file rewrite.h.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ 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 
)

Deprecated.

Definition at line 101 of file rewrite.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_rewrite_get_data_internal()

static void* vnet_rewrite_get_data_internal ( vnet_rewrite_header_t *  rw,
int  max_size 
)
inlinestatic

Definition at line 145 of file rewrite.h.

+ Here is the caller graph for this function:

◆ vnet_rewrite_init()

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 
)

Definition at line 80 of file rewrite.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ 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

Definition at line 126 of file rewrite.h.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_rewrite_update_mtu()

void vnet_rewrite_update_mtu ( struct vnet_main_t vnm,
vnet_link_t  linkt,
vnet_rewrite_header_t *  rw 
)

Definition at line 92 of file rewrite.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_tx_node_index_for_sw_interface()

u32 vnet_tx_node_index_for_sw_interface ( struct vnet_main_t vnm,
u32  sw_if_index 
)

Definition at line 73 of file rewrite.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vnet_update_adjacency_for_sw_interface()

void vnet_update_adjacency_for_sw_interface ( struct vnet_main_t vnm,
u32  sw_if_index,
u32  ai 
)

Definition at line 179 of file rewrite.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ format_vnet_rewrite

format_function_t format_vnet_rewrite

Definition at line 250 of file rewrite.h.

◆ serialize_vnet_rewrite

serialize_function_t serialize_vnet_rewrite

Definition at line 252 of file rewrite.h.

◆ unserialize_vnet_rewrite

serialize_function_t unserialize_vnet_rewrite

Definition at line 252 of file rewrite.h.