FD.io VPP  v20.09-64-g4f7b92f0a
Vector Packet Processing
ip6_hop_by_hop.h File Reference
+ Include dependency graph for ip6_hop_by_hop.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  flow_data_t
 
struct  ip6_local_hop_by_hop_runtime_t
 
struct  ip6_hop_by_hop_ioam_main_t
 

Macros

#define MAX_IP6_HBH_OPTION   256
 
#define IOAM_DECAP_BIT   0x80000000
 
#define IOAM_DEAP_ENABLED(opaque_data)   (opaque_data & IOAM_DECAP_BIT)
 
#define IOAM_SET_DECAP(opaque_data)   (opaque_data |= IOAM_DECAP_BIT)
 
#define IOAM_MASK_DECAP_BIT(x)   (x & ~IOAM_DECAP_BIT)
 
#define IOAM_HBYH_ADD   0
 
#define IOAM_HBYH_MOD   1
 
#define IOAM_HBYH_POP   2
 

Functions

clib_error_tip6_ioam_enable (int has_trace_option, int has_pot_option, int has_seqno_option, int has_analyse_option)
 
int ip6_ioam_set_destination (ip6_address_t *addr, u32 mask_width, u32 vrf_id, int is_add, int is_pop, int is_none)
 
clib_error_tclear_ioam_rewrite_fn (void)
 
static u8 is_zero_ip4_address (ip4_address_t *a)
 
static void copy_ip6_address (ip6_address_t *dst, ip6_address_t *src)
 
static void set_zero_ip6_address (ip6_address_t *a)
 
static u8 cmp_ip6_address (ip6_address_t *a1, ip6_address_t *a2)
 
static u8 is_zero_ip6_address (ip6_address_t *a)
 
int ip6_hbh_add_register_option (u8 option, u8 size, int rewrite_options(u8 *rewrite_string, u8 *size))
 
int ip6_hbh_add_unregister_option (u8 option)
 
int ip6_hbh_pop_register_option (u8 option, int options(vlib_buffer_t *b, ip6_header_t *ip, ip6_hop_by_hop_option_t *opt))
 
int ip6_hbh_pop_unregister_option (u8 option)
 
int ip6_hbh_get_sizeof_register_option (u8 option, int get_sizeof_hdr_options(u32 *rewrite_size))
 
int ip6_ioam_set_rewrite (u8 **rwp, int has_trace_option, int has_pot_option, int has_seq_no)
 
int ip6_hbh_config_handler_register (u8 option, int config_handler(void *data, u8 disable))
 
int ip6_hbh_config_handler_unregister (u8 option)
 
int ip6_hbh_flow_handler_register (u8 option, u32 ioam_flow_handler(u32 flow_ctx, u8 add))
 
int ip6_hbh_flow_handler_unregister (u8 option)
 
u8get_flow_name_from_flow_ctx (u32 flow_ctx)
 
static flow_data_tget_flow (u32 index)
 
static u32 get_flow_data_from_flow_ctx (u32 flow_ctx, u8 option)
 
static u8 is_seqno_enabled (void)
 
int ip6_trace_profile_setup ()
 
static u32 ioam_flow_add (u8 encap, u8 *flow_name)
 
static ip6_hop_by_hop_option_tip6_hbh_get_option (ip6_hop_by_hop_header_t *hbh0, u8 option_to_search)
 

Variables

ip6_hop_by_hop_ioam_main_t ip6_hop_by_hop_ioam_main
 

Macro Definition Documentation

◆ IOAM_DEAP_ENABLED

#define IOAM_DEAP_ENABLED (   opaque_data)    (opaque_data & IOAM_DECAP_BIT)

Definition at line 27 of file ip6_hop_by_hop.h.

◆ IOAM_DECAP_BIT

#define IOAM_DECAP_BIT   0x80000000

Definition at line 25 of file ip6_hop_by_hop.h.

◆ IOAM_HBYH_ADD

#define IOAM_HBYH_ADD   0

Definition at line 58 of file ip6_hop_by_hop.h.

◆ IOAM_HBYH_MOD

#define IOAM_HBYH_MOD   1

Definition at line 59 of file ip6_hop_by_hop.h.

◆ IOAM_HBYH_POP

#define IOAM_HBYH_POP   2

Definition at line 60 of file ip6_hop_by_hop.h.

◆ IOAM_MASK_DECAP_BIT

#define IOAM_MASK_DECAP_BIT (   x)    (x & ~IOAM_DECAP_BIT)

Definition at line 32 of file ip6_hop_by_hop.h.

◆ IOAM_SET_DECAP

#define IOAM_SET_DECAP (   opaque_data)    (opaque_data |= IOAM_DECAP_BIT)

Definition at line 29 of file ip6_hop_by_hop.h.

◆ MAX_IP6_HBH_OPTION

#define MAX_IP6_HBH_OPTION   256

Definition at line 22 of file ip6_hop_by_hop.h.

Function Documentation

◆ clear_ioam_rewrite_fn()

clib_error_t* clear_ioam_rewrite_fn ( void  )

Definition at line 1224 of file ip6_hop_by_hop.c.

+ Here is the caller graph for this function:

◆ cmp_ip6_address()

static u8 cmp_ip6_address ( ip6_address_t *  a1,
ip6_address_t *  a2 
)
inlinestatic

Definition at line 134 of file ip6_hop_by_hop.h.

◆ copy_ip6_address()

static void copy_ip6_address ( ip6_address_t *  dst,
ip6_address_t *  src 
)
inlinestatic

Definition at line 120 of file ip6_hop_by_hop.h.

◆ get_flow()

static flow_data_t* get_flow ( u32  index)
inlinestatic

Definition at line 182 of file ip6_hop_by_hop.h.

◆ get_flow_data_from_flow_ctx()

static u32 get_flow_data_from_flow_ctx ( u32  flow_ctx,
u8  option 
)
inlinestatic

Definition at line 195 of file ip6_hop_by_hop.h.

+ Here is the caller graph for this function:

◆ get_flow_name_from_flow_ctx()

u8* get_flow_name_from_flow_ctx ( u32  flow_ctx)

Definition at line 85 of file ip6_hop_by_hop.c.

+ Here is the caller graph for this function:

◆ ioam_flow_add()

static u32 ioam_flow_add ( u8  encap,
u8 flow_name 
)
inlinestatic

Definition at line 216 of file ip6_hop_by_hop.h.

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

◆ ip6_hbh_add_register_option()

int ip6_hbh_add_register_option ( u8  option,
u8  size,
int   rewrite_optionsu8 *rewrite_string, u8 *size 
)
+ Here is the caller graph for this function:

◆ ip6_hbh_add_unregister_option()

int ip6_hbh_add_unregister_option ( u8  option)

Definition at line 122 of file ip6_hop_by_hop.c.

+ Here is the caller graph for this function:

◆ ip6_hbh_config_handler_register()

int ip6_hbh_config_handler_register ( u8  option,
int   config_handlervoid *data, u8 disable 
)

Definition at line 139 of file ip6_hop_by_hop.c.

+ Here is the caller graph for this function:

◆ ip6_hbh_config_handler_unregister()

int ip6_hbh_config_handler_unregister ( u8  option)

Definition at line 156 of file ip6_hop_by_hop.c.

+ Here is the caller graph for this function:

◆ ip6_hbh_flow_handler_register()

int ip6_hbh_flow_handler_register ( u8  option,
u32   ioam_flow_handleru32 flow_ctx, u8 add 
)

Definition at line 172 of file ip6_hop_by_hop.c.

+ Here is the caller graph for this function:

◆ ip6_hbh_flow_handler_unregister()

int ip6_hbh_flow_handler_unregister ( u8  option)

Definition at line 189 of file ip6_hop_by_hop.c.

+ Here is the caller graph for this function:

◆ ip6_hbh_get_option()

static ip6_hop_by_hop_option_t* ip6_hbh_get_option ( ip6_hop_by_hop_header_t hbh0,
u8  option_to_search 
)
inlinestatic

Definition at line 241 of file ip6_hop_by_hop.h.

+ Here is the caller graph for this function:

◆ ip6_hbh_get_sizeof_register_option()

int ip6_hbh_get_sizeof_register_option ( u8  option,
int   get_sizeof_hdr_optionsu32 *rewrite_size 
)
+ Here is the caller graph for this function:

◆ ip6_hbh_pop_register_option()

int ip6_hbh_pop_register_option ( u8  option,
int   optionsvlib_buffer_t *b, ip6_header_t *ip, ip6_hop_by_hop_option_t *opt 
)

Definition at line 481 of file ip6_hop_by_hop.c.

+ Here is the caller graph for this function:

◆ ip6_hbh_pop_unregister_option()

int ip6_hbh_pop_unregister_option ( u8  option)

Definition at line 500 of file ip6_hop_by_hop.c.

+ Here is the caller graph for this function:

◆ ip6_ioam_enable()

clib_error_t* ip6_ioam_enable ( int  has_trace_option,
int  has_pot_option,
int  has_seqno_option,
int  has_analyse_option 
)

Definition at line 1276 of file ip6_hop_by_hop.c.

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

◆ ip6_ioam_set_destination()

int ip6_ioam_set_destination ( ip6_address_t *  addr,
u32  mask_width,
u32  vrf_id,
int  is_add,
int  is_pop,
int  is_none 
)

◆ ip6_ioam_set_rewrite()

int ip6_ioam_set_rewrite ( u8 **  rwp,
int  has_trace_option,
int  has_pot_option,
int  has_seq_no 
)

Definition at line 1138 of file ip6_hop_by_hop.c.

+ Here is the caller graph for this function:

◆ ip6_trace_profile_setup()

int ip6_trace_profile_setup ( )

Definition at line 468 of file ip6_ioam_trace.c.

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

◆ is_seqno_enabled()

static u8 is_seqno_enabled ( void  )
inlinestatic

Definition at line 208 of file ip6_hop_by_hop.h.

+ Here is the call graph for this function:

◆ is_zero_ip4_address()

static u8 is_zero_ip4_address ( ip4_address_t a)
inlinestatic

Definition at line 114 of file ip6_hop_by_hop.h.

◆ is_zero_ip6_address()

static u8 is_zero_ip6_address ( ip6_address_t *  a)
inlinestatic

Definition at line 141 of file ip6_hop_by_hop.h.

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

◆ set_zero_ip6_address()

static void set_zero_ip6_address ( ip6_address_t *  a)
inlinestatic

Definition at line 127 of file ip6_hop_by_hop.h.

Variable Documentation

◆ ip6_hop_by_hop_ioam_main

ip6_hop_by_hop_ioam_main_t ip6_hop_by_hop_ioam_main

Definition at line 45 of file ip6_hop_by_hop.c.