FD.io VPP  v21.10.1-2-g0a485f517
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.

Data Structures

struct  vnet_rewrite_header_t_
 

Macros

#define VNET_DECLARE_REWRITE
 
#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...
 
typedef struct vnet_rewrite_header_t_ vnet_rewrite_header_t
 

Enumerations

enum  vnet_rewrite_flags_t_ { VNET_REWRITE_HAS_FEATURES = (1 << 0), VNET_REWRITE_FIXUP_IP4_O_4 = (1 << 1), VNET_REWRITE_FIXUP_FLOW_HASH = (1 << 2) }
 Flags associated with the rewrite/adjacency. More...
 

Functions

u8format_vnet_rewrite_flags (u8 *s, va_list *ap)
 
 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_ASSERT_SIZEOF (__rewrite_unused_t, 128)
 
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
Value:
struct \
{ \
vnet_rewrite_header_t rewrite_header; \
\
u8 rewrite_data[(VNET_REWRITE_TOTAL_BYTES) - \
sizeof (vnet_rewrite_header_t)]; \
}

Definition at line 119 of file rewrite.h.

◆ VNET_REWRITE_FOR_SW_INTERFACE_ADDRESS_BROADCAST

#define VNET_REWRITE_FOR_SW_INTERFACE_ADDRESS_BROADCAST   ((void *) 0)

Definition at line 241 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 171 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 218 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))

Definition at line 158 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 222 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.

◆ vnet_rewrite_header_t

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.

VNET_REWRITE_FIXUP_IP4_O_4 

this adj performs IP4 over IP4 fixup

VNET_REWRITE_FIXUP_FLOW_HASH 

this adj performs the flow hash fixup

Definition at line 52 of file rewrite.h.

Function Documentation

◆ format_vnet_rewrite_flags()

u8* format_vnet_rewrite_flags ( u8 s,
va_list *  ap 
)

Definition at line 44 of file rewrite.c.

+ Here is the caller graph for this function:

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

◆ STATIC_ASSERT_SIZEOF()

STATIC_ASSERT_SIZEOF ( __rewrite_unused_t  ,
128   
)

◆ 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 180 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 228 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 136 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 117 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 165 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 96 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 146 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 108 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 89 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 195 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 270 of file rewrite.h.

◆ serialize_vnet_rewrite

serialize_function_t serialize_vnet_rewrite

Definition at line 272 of file rewrite.h.

◆ unserialize_vnet_rewrite

serialize_function_t unserialize_vnet_rewrite

Definition at line 272 of file rewrite.h.

VNET_REWRITE_TOTAL_BYTES
#define VNET_REWRITE_TOTAL_BYTES
Definition: buffer.h:411
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)
Definition: rewrite.h:146
data
u8 data[128]
Definition: ipsec_types.api:95
vnet_rewrite_header_t_
Definition: rewrite.h:72