![]() |
FD.io VPP
v17.04.2-2-ga8f93f8
Vector Packet Processing
|
Go to the source code of this file.
Data Structures | |
struct | fib_urpf_list_t_ |
Typedefs | |
typedef enum fib_urpf_list_flag_t_ | fib_urpf_list_flag_t |
A unicast RPF list. More... | |
typedef struct fib_urpf_list_t_ | fib_urpf_list_t |
Enumerations | |
enum | fib_urpf_list_flag_t_ { FIB_URPF_LIST_BAKED = (1 << 0) } |
A unicast RPF list. More... | |
Functions | |
index_t | fib_urpf_list_alloc_and_lock (void) |
void | fib_urpf_list_unlock (index_t urpf) |
void | fib_urpf_list_lock (index_t urpf) |
void | fib_urpf_list_append (index_t urpf, adj_index_t adj) |
Append another interface to the list. More... | |
void | fib_urpf_list_combine (index_t urpf1, index_t urpf2) |
Combine to interface lists. More... | |
void | fib_urpf_list_bake (index_t urpf) |
Convert the uRPF list from the itf set obtained during the walk to a unique list. More... | |
u8 * | format_fib_urpf_list (u8 *s, va_list ap) |
void | fib_urpf_list_show_mem (void) |
static fib_urpf_list_t * | fib_urpf_list_get (index_t index) |
static int | fib_urpf_check (index_t ui, u32 sw_if_index) |
Data-Plane function to check an input interface against an uRPF list. More... | |
static int | fib_urpf_check_size (index_t ui) |
Data-Plane function to check the size of an uRPF list, (i.e. More... | |
Variables | |
fib_urpf_list_t * | fib_urpf_list_pool |
pool of all fib_urpf_list More... | |
typedef enum fib_urpf_list_flag_t_ fib_urpf_list_flag_t |
A unicast RPF list.
The uRPF list is the set of interfaces that a prefix can be reached through. There are 3 levels of RPF check:
these conditions are checked against the list by:
To speed the last two checks the interface list only needs to have the unique interfaces present. If the uRPF check was instead implemented by forward walking the DPO chain, then that walk would encounter a great deal of non-adjacency objects (i.e. load-balances, mpls-labels, etc) and potentially the same adjacency many times (esp. when UCMP is used). To that end the uRPF list is a collapsed, unique interface only list. flags
typedef struct fib_urpf_list_t_ fib_urpf_list_t |
A unicast RPF list.
The uRPF list is the set of interfaces that a prefix can be reached through. There are 3 levels of RPF check:
these conditions are checked against the list by:
To speed the last two checks the interface list only needs to have the unique interfaces present. If the uRPF check was instead implemented by forward walking the DPO chain, then that walk would encounter a great deal of non-adjacency objects (i.e. load-balances, mpls-labels, etc) and potentially the same adjacency many times (esp. when UCMP is used). To that end the uRPF list is a collapsed, unique interface only list. flags
Enumerator | |
---|---|
FIB_URPF_LIST_BAKED |
Set to indicated that the uRPF list has already been baked. This is protection against it being baked more than once. These are not chunky fries - once is enough. |
Definition at line 48 of file fib_urpf_list.h.
Data-Plane function to check an input interface against an uRPF list.
ui | The uRPF list index to check against. Get this from the load-balance object that is the result of the FIB lookup |
sw_if_index | The SW interface index to validate |
Definition at line 111 of file fib_urpf_list.h.
|
inlinestatic |
Data-Plane function to check the size of an uRPF list, (i.e.
the number of interfaces in the list).
ui | The uRPF list index to check against. Get this from the load-balance object that is the result of the FIB lookup |
Definition at line 137 of file fib_urpf_list.h.
index_t fib_urpf_list_alloc_and_lock | ( | void | ) |
void fib_urpf_list_append | ( | index_t | urpf, |
adj_index_t | adj | ||
) |
Append another interface to the list.
Definition at line 100 of file fib_urpf_list.c.
void fib_urpf_list_bake | ( | index_t | urpf | ) |
Convert the uRPF list from the itf set obtained during the walk to a unique list.
Definition at line 145 of file fib_urpf_list.c.
Combine to interface lists.
Definition at line 114 of file fib_urpf_list.c.
|
inlinestatic |
void fib_urpf_list_lock | ( | index_t | urpf | ) |
Definition at line 87 of file fib_urpf_list.c.
void fib_urpf_list_show_mem | ( | void | ) |
Definition at line 202 of file fib_urpf_list.c.
void fib_urpf_list_unlock | ( | index_t | urpf | ) |
Definition at line 68 of file fib_urpf_list.c.
Definition at line 25 of file fib_urpf_list.c.
fib_urpf_list_t* fib_urpf_list_pool |
pool of all fib_urpf_list
Definition at line 22 of file fib_urpf_list.c.