FD.io VPP  v18.07.1-13-g909ba93
Vector Packet Processing
bier_fmask.h File Reference
+ Include dependency graph for bier_fmask.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  bier_fmask_bits_t_
 bier_fmask : The BIER fmask More...
 
struct  bier_fmask_t_
 An outgoing BIER mask. More...
 

Macros

#define BIER_FMASK_ATTR_NAMES
 
#define FOR_EACH_BIER_FMASK_ATTR(_item)
 

Typedefs

typedef struct bier_fmask_bits_t_ bier_fmask_bits_t
 bier_fmask : The BIER fmask More...
 
typedef enum bier_fmask_attributes_t_ bier_fmask_attributes_t
 Flags on fmask. More...
 
typedef enum bier_fmask_flags_t_ bier_fmask_flags_t
 
typedef struct bier_fmask_t_ bier_fmask_t
 An outgoing BIER mask. More...
 

Enumerations

enum  bier_fmask_attributes_t_ {
  BIER_FMASK_ATTR_FIRST, BIER_FMASK_ATTR_FORWARDING = BIER_FMASK_ATTR_FIRST, BIER_FMASK_ATTR_DISP, BIER_FMASK_ATTR_MPLS,
  BIER_FMASK_ATTR_LAST = BIER_FMASK_ATTR_DISP
}
 Flags on fmask. More...
 
enum  bier_fmask_flags_t_ { BIER_FMASK_FLAG_FORWARDING = (1 << BIER_FMASK_ATTR_FORWARDING), BIER_FMASK_FLAG_DISP = (1 << BIER_FMASK_ATTR_DISP), BIER_FMASK_FLAG_MPLS = (1 << BIER_FMASK_ATTR_MPLS) }
 

Functions

void bier_fmask_link (index_t bfmi, bier_bp_t bp)
 
void bier_fmask_unlink (index_t bfmi, bier_bp_t bp)
 
void bier_fmask_unlock (index_t bfmi)
 
void bier_fmask_lock (index_t bfmi)
 
index_t bier_fmask_create_and_lock (const bier_fmask_id_t *fmid, const fib_route_path_t *rpath)
 
u8format_bier_fmask (u8 *s, va_list *ap)
 
void bier_fmask_contribute_forwarding (index_t bfmi, dpo_id_t *dpo)
 
u32 bier_fmask_child_add (fib_node_index_t fib_entry_index, fib_node_type_t child_type, fib_node_index_t child_index)
 
void bier_fmask_child_remove (fib_node_index_t fib_entry_index, u32 sibling_index)
 
void bier_fmask_get_stats (index_t bfmi, u64 *packets, u64 *bytes)
 
void bier_fmask_encode (index_t bfmi, bier_table_id_t *btid, fib_route_path_encode_t *rpath)
 
static bier_fmask_tbier_fmask_get (u32 index)
 

Variables

bier_fmask_tbier_fmask_pool
 

Macro Definition Documentation

#define BIER_FMASK_ATTR_NAMES
Value:

Definition at line 72 of file bier_fmask.h.

#define FOR_EACH_BIER_FMASK_ATTR (   _item)
Value:

Definition at line 78 of file bier_fmask.h.

Typedef Documentation

Flags on fmask.

bier_fmask : The BIER fmask

The BIER fmask contains the bitString that is applied to packets that egress towards the next-hop. As such the fmask is part of the rewrite (adj) for that next-hop. It it thus an extension of the next-hop and in no way associated with the bit-position(s) that are reachable through it. Fmasks are thus shared by bit-positions that egress throught the same nh (BFR-NBR). Deag fmasks are also shread in the event that a router has local bit-positions. This is necessary to prevent the router recieving two copies of each packet. Consequently it also means that they share the same disposition data for the global data. A struct that represents the reference counting of the bits

typedef struct bier_fmask_t_ bier_fmask_t

An outgoing BIER mask.

aka forwarding bit mask (in the RFCs)

This mask's function is two-fold 1 - it is logical-AND with the input packet header to produce the output packet header 2 - it is logical NAND with the input packet header to modify the bit-mask for the next lookup

Enumeration Type Documentation

Flags on fmask.

Enumerator
BIER_FMASK_ATTR_FIRST 
BIER_FMASK_ATTR_FORWARDING 
BIER_FMASK_ATTR_DISP 
BIER_FMASK_ATTR_MPLS 
BIER_FMASK_ATTR_LAST 

Definition at line 63 of file bier_fmask.h.

Enumerator
BIER_FMASK_FLAG_FORWARDING 
BIER_FMASK_FLAG_DISP 
BIER_FMASK_FLAG_MPLS 

Definition at line 83 of file bier_fmask.h.

Function Documentation

u32 bier_fmask_child_add ( fib_node_index_t  fib_entry_index,
fib_node_type_t  child_type,
fib_node_index_t  child_index 
)

Definition at line 141 of file bier_fmask.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void bier_fmask_child_remove ( fib_node_index_t  fib_entry_index,
u32  sibling_index 
)

Definition at line 152 of file bier_fmask.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void bier_fmask_contribute_forwarding ( index_t  bfmi,
dpo_id_t dpo 
)

Definition at line 120 of file bier_fmask.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

index_t bier_fmask_create_and_lock ( const bier_fmask_id_t fmid,
const fib_route_path_t rpath 
)

Definition at line 278 of file bier_fmask.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void bier_fmask_encode ( index_t  bfmi,
bier_table_id_t btid,
fib_route_path_encode_t rpath 
)

Definition at line 399 of file bier_fmask.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static bier_fmask_t* bier_fmask_get ( u32  index)
inlinestatic

Definition at line 177 of file bier_fmask.h.

+ Here is the caller graph for this function:

void bier_fmask_get_stats ( index_t  bfmi,
u64 packets,
u64 bytes 
)

Definition at line 388 of file bier_fmask.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void bier_fmask_link ( index_t  bfmi,
bier_bp_t  bp 
)

Definition at line 298 of file bier_fmask.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void bier_fmask_lock ( index_t  bfmi)

Definition at line 263 of file bier_fmask.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void bier_fmask_unlink ( index_t  bfmi,
bier_bp_t  bp 
)

Definition at line 318 of file bier_fmask.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void bier_fmask_unlock ( index_t  bfmi)

Definition at line 248 of file bier_fmask.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u8* format_bier_fmask ( u8 s,
va_list *  ap 
)

Definition at line 338 of file bier_fmask.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Variable Documentation

bier_fmask_t* bier_fmask_pool

Definition at line 174 of file bier_fmask.h.