FD.io VPP
v18.04-17-g3a0d853
Vector Packet Processing
|
Go to the source code of this file.
Data Structures | |
struct | fib_prefix_t_ |
Aggregrate type for a prefix. More... | |
struct | fib_mpls_label_t_ |
Configuration for each label value in the output-stack. More... | |
struct | fib_route_path_t_ |
A representation of a path as described by a route producer. More... | |
struct | fib_route_path_encode_t_ |
A representation of a fib path for fib_path_encode to convey the information to the caller. More... | |
struct | fib_path_ext_list_t_ |
A list of path-extensions. More... | |
Macros | |
#define | FIB_NODE_INDEX_INVALID ((fib_node_index_t)(~0)) |
#define | FIB_PROTOCOLS |
#define | FIB_PROTOCOL_MAX (FIB_PROTOCOL_MPLS + 1) |
Definition outside of enum so it does not need to be included in non-defaulted switch statements. More... | |
#define | FIB_PROTOCOL_IP_MAX (FIB_PROTOCOL_IP6 + 1) |
Definition outside of enum so it does not need to be included in non-defaulted switch statements. More... | |
#define | FIB_PROTOCOL_NONE (FIB_PROTOCOL_MAX+1) |
Not part of the enum so it does not have to be handled in switch statements. More... | |
#define | FOR_EACH_FIB_PROTOCOL(_item) |
#define | FOR_EACH_FIB_IP_PROTOCOL(_item) |
#define | FIB_FORW_CHAINS |
#define | FIB_FORW_CHAIN_NUM (FIB_FORW_CHAIN_TYPE_NSH+1) |
#define | FIB_FORW_CHAIN_MPLS_NUM (FIB_FORW_CHAIN_TYPE_MPLS_EOS+1) |
#define | FOR_EACH_FIB_FORW_CHAIN(_item) |
#define | FOR_EACH_FIB_FORW_MPLS_CHAIN(_item) |
#define | FIB_SPEICAL_TYPE_MAX (FIB_SPEICAL_TYPE_LAST + 1) |
The maximum number of types. More... | |
#define | FOR_EACH_FIB_SPEICAL_TYPE(_item) |
#define | MFIB_RPF_ID_NONE (0) |
#define | FIB_MPLS_LSP_MODES |
#define | FIB_ROUTE_PATH_HELP "[next-hop-address] [next-hop-interface] [next-hop-table <value>] [weight <value>] [preference <value>] [udp-encap-id <value>] [ip4-lookup-in-table <value>] [ip6-lookup-in-table <value>] [mpls-lookup-in-table <value>] [resolve-via-host] [resolve-via-connected] [rx-ip4 <interface>] [out-labels <value value value>]" |
A help string to list the FIB path options. More... | |
Typedefs | |
typedef u32 | fib_node_index_t |
A typedef of a node index. More... | |
typedef enum fib_protocol_t_ | fib_protocol_t |
Protocol Type. More... | |
typedef enum fib_forward_chain_type_t_ | fib_forward_chain_type_t |
FIB output chain type. More... | |
typedef struct fib_prefix_t_ | fib_prefix_t |
Aggregrate type for a prefix. More... | |
typedef enum fib_special_type_t_ | fib_special_type_t |
Enurmeration of special path/entry types. More... | |
typedef enum fib_route_path_flags_t_ | fib_route_path_flags_t |
Path flags from the control plane. More... | |
typedef u32 | fib_rpf_id_t |
An RPF-ID is numerical value that is used RPF validate. More... | |
typedef enum fib_mpls_lsp_mode_t_ | fib_mpls_lsp_mode_t |
MPLS LSP mode - only valid at the head and tail. More... | |
typedef struct fib_mpls_label_t_ | fib_mpls_label_t |
Configuration for each label value in the output-stack. More... | |
typedef struct fib_route_path_t_ | fib_route_path_t |
A representation of a path as described by a route producer. More... | |
typedef struct fib_route_path_encode_t_ | fib_route_path_encode_t |
A representation of a fib path for fib_path_encode to convey the information to the caller. More... | |
typedef enum fib_path_list_walk_rc_t_ | fib_path_list_walk_rc_t |
return code to control pat-hlist walk More... | |
typedef struct fib_path_ext_list_t_ | fib_path_ext_list_t |
A list of path-extensions. More... | |
Functions | |
static fib_protocol_t | fib_ip_proto (bool is_ip6) |
Convert from boolean is_ip6 to FIB protocol. More... | |
vnet_link_t | fib_proto_to_link (fib_protocol_t proto) |
Convert from a protocol to a link type. More... | |
vnet_link_t | fib_forw_chain_type_to_link_type (fib_forward_chain_type_t fct) |
Convert from a chain type to the adjacency's link type. More... | |
fib_forward_chain_type_t | fib_forw_chain_type_from_link_type (vnet_link_t lt) |
Convert from a adjacency's link type to chain type. More... | |
fib_forward_chain_type_t | fib_forw_chain_type_from_dpo_proto (dpo_proto_t proto) |
Convert from a payload-protocol to a chain type. More... | |
dpo_proto_t | fib_forw_chain_type_to_dpo_proto (fib_forward_chain_type_t fct) |
Convert from a chain type to the DPO proto it will install. More... | |
STATIC_ASSERT (STRUCT_OFFSET_OF(fib_prefix_t, fp_addr)==4,"FIB Prefix's address is 4 byte aligned.") | |
int | fib_prefix_cmp (const fib_prefix_t *p1, const fib_prefix_t *p2) |
Compare two prefixes for equality. More... | |
int | fib_prefix_is_cover (const fib_prefix_t *p1, const fib_prefix_t *p2) |
Compare two prefixes for covering relationship. More... | |
int | fib_prefix_is_host (const fib_prefix_t *p) |
Return true is the prefix is a host prefix. More... | |
void | fib_prefix_from_ip46_addr (const ip46_address_t *addr, fib_prefix_t *pfx) |
Host prefix from ip. More... | |
u8 * | format_fib_prefix (u8 *s, va_list *args) |
u8 * | format_fib_forw_chain_type (u8 *s, va_list *args) |
dpo_proto_t | fib_proto_to_dpo (fib_protocol_t fib_proto) |
fib_protocol_t | dpo_proto_to_fib (dpo_proto_t dpo_proto) |
fib_protocol_t | bier_hdr_proto_to_fib (bier_hdr_proto_id_t bproto) |
Convert from BIER next-hop proto to FIB proto. More... | |
u8 * | format_fib_protocol (u8 *s, va_list *ap) |
u8 * | format_vnet_link (u8 *s, va_list *ap) |
u8 * | format_fib_mpls_lsp_mode (u8 *s, va_list *ap) |
Format an LSP mode type. More... | |
u8 * | format_fib_mpls_label (u8 *s, va_list *ap) |
Format an MPLS label. More... | |
uword | unformat_fib_route_path (unformat_input_t *input, va_list *args) |
Unformat a fib_route_path_t from CLI input. More... | |
#define FIB_FORW_CHAIN_MPLS_NUM (FIB_FORW_CHAIN_TYPE_MPLS_EOS+1) |
Definition at line 153 of file fib_types.h.
#define FIB_FORW_CHAIN_NUM (FIB_FORW_CHAIN_TYPE_NSH+1) |
Definition at line 152 of file fib_types.h.
#define FIB_FORW_CHAINS |
Definition at line 140 of file fib_types.h.
#define FIB_MPLS_LSP_MODES |
Definition at line 397 of file fib_types.h.
#define FIB_NODE_INDEX_INVALID ((fib_node_index_t)(~0)) |
Definition at line 31 of file fib_types.h.
#define FIB_PROTOCOL_IP_MAX (FIB_PROTOCOL_IP6 + 1) |
Definition outside of enum so it does not need to be included in non-defaulted switch statements.
Definition at line 58 of file fib_types.h.
#define FIB_PROTOCOL_MAX (FIB_PROTOCOL_MPLS + 1) |
Definition outside of enum so it does not need to be included in non-defaulted switch statements.
Definition at line 52 of file fib_types.h.
#define FIB_PROTOCOL_NONE (FIB_PROTOCOL_MAX+1) |
Not part of the enum so it does not have to be handled in switch statements.
Definition at line 63 of file fib_types.h.
#define FIB_PROTOCOLS |
Definition at line 42 of file fib_types.h.
#define FIB_ROUTE_PATH_HELP "[next-hop-address] [next-hop-interface] [next-hop-table <value>] [weight <value>] [preference <value>] [udp-encap-id <value>] [ip4-lookup-in-table <value>] [ip6-lookup-in-table <value>] [mpls-lookup-in-table <value>] [resolve-via-host] [resolve-via-connected] [rx-ip4 <interface>] [out-labels <value value value>]" |
A help string to list the FIB path options.
Definition at line 558 of file fib_types.h.
#define FIB_SPEICAL_TYPE_MAX (FIB_SPEICAL_TYPE_LAST + 1) |
The maximum number of types.
Definition at line 291 of file fib_types.h.
#define FOR_EACH_FIB_FORW_CHAIN | ( | _item | ) |
Definition at line 155 of file fib_types.h.
#define FOR_EACH_FIB_FORW_MPLS_CHAIN | ( | _item | ) |
Definition at line 160 of file fib_types.h.
#define FOR_EACH_FIB_IP_PROTOCOL | ( | _item | ) |
Definition at line 70 of file fib_types.h.
#define FOR_EACH_FIB_PROTOCOL | ( | _item | ) |
Definition at line 65 of file fib_types.h.
#define FOR_EACH_FIB_SPEICAL_TYPE | ( | _item | ) |
Definition at line 293 of file fib_types.h.
#define MFIB_RPF_ID_NONE (0) |
Definition at line 378 of file fib_types.h.
typedef enum fib_forward_chain_type_t_ fib_forward_chain_type_t |
FIB output chain type.
When a child object requests a forwarding contribution from a parent, it does so for a particular scenario. This enumererates those sceanrios
typedef struct fib_mpls_label_t_ fib_mpls_label_t |
Configuration for each label value in the output-stack.
typedef enum fib_mpls_lsp_mode_t_ fib_mpls_lsp_mode_t |
MPLS LSP mode - only valid at the head and tail.
typedef u32 fib_node_index_t |
A typedef of a node index.
we make this typedef so the code becomes easier for a human to parse.
Definition at line 30 of file fib_types.h.
typedef struct fib_path_ext_list_t_ fib_path_ext_list_t |
A list of path-extensions.
typedef enum fib_path_list_walk_rc_t_ fib_path_list_walk_rc_t |
return code to control pat-hlist walk
typedef struct fib_prefix_t_ fib_prefix_t |
Aggregrate type for a prefix.
typedef enum fib_protocol_t_ fib_protocol_t |
Protocol Type.
packed so it consumes a u8 only
typedef struct fib_route_path_encode_t_ fib_route_path_encode_t |
A representation of a fib path for fib_path_encode to convey the information to the caller.
typedef enum fib_route_path_flags_t_ fib_route_path_flags_t |
Path flags from the control plane.
typedef struct fib_route_path_t_ fib_route_path_t |
A representation of a path as described by a route producer.
These paramenters will determine the path 'type', of which there are: 1) Attached-next-hop: a single peer on a link. It is 'attached' because it is in the same sub-net as the router, on a link directly connected to the route. It is 'next=hop' since the next-hop address of the peer is known. 2) Attached: the next-hop is not known. but we can ARP for it. 3) Recursive. The next-hop is known but the interface is not. So to find the adj to use we must recursively resolve the next-hop. 3) deaggregate (deag) A further lookup is required.
typedef u32 fib_rpf_id_t |
An RPF-ID is numerical value that is used RPF validate.
An entry has-a RPF-ID, when a packet egress from (e.g. an LSP) it gains an RPF-ID, these two are compared for the RPF check. This replaces the interfce based chack (since the LSP has no associated interface.
Definition at line 376 of file fib_types.h.
typedef enum fib_special_type_t_ fib_special_type_t |
Enurmeration of special path/entry types.
FIB output chain type.
When a child object requests a forwarding contribution from a parent, it does so for a particular scenario. This enumererates those sceanrios
Definition at line 95 of file fib_types.h.
enum fib_mpls_lsp_mode_t_ |
MPLS LSP mode - only valid at the head and tail.
Enumerator | |
---|---|
FIB_MPLS_LSP_MODE_PIPE |
Pipe Mode - the default. TTL and DSCP markings are not carried between the layers |
FIB_MPLS_LSP_MODE_UNIFORM |
Uniform mode. TTL and DSCP are copied between the layers |
Definition at line 383 of file fib_types.h.
return code to control pat-hlist walk
Enumerator | |
---|---|
FIB_PATH_LIST_WALK_STOP | |
FIB_PATH_LIST_WALK_CONTINUE |
Definition at line 572 of file fib_types.h.
enum fib_protocol_t_ |
Protocol Type.
packed so it consumes a u8 only
Enumerator | |
---|---|
FIB_PROTOCOL_IP4 | |
FIB_PROTOCOL_IP6 | |
FIB_PROTOCOL_MPLS |
Definition at line 36 of file fib_types.h.
Path flags from the control plane.
Definition at line 303 of file fib_types.h.
enum fib_special_type_t_ |
Enurmeration of special path/entry types.
Definition at line 269 of file fib_types.h.
fib_protocol_t bier_hdr_proto_to_fib | ( | bier_hdr_proto_id_t | bproto | ) |
Convert from BIER next-hop proto to FIB proto.
fib_protocol_t dpo_proto_to_fib | ( | dpo_proto_t | dpo_proto | ) |
fib_forward_chain_type_t fib_forw_chain_type_from_dpo_proto | ( | dpo_proto_t | proto | ) |
Convert from a payload-protocol to a chain type.
Definition at line 286 of file fib_types.c.
fib_forward_chain_type_t fib_forw_chain_type_from_link_type | ( | vnet_link_t | lt | ) |
Convert from a adjacency's link type to chain type.
Definition at line 336 of file fib_types.c.
dpo_proto_t fib_forw_chain_type_to_dpo_proto | ( | fib_forward_chain_type_t | fct | ) |
Convert from a chain type to the DPO proto it will install.
Definition at line 359 of file fib_types.c.
vnet_link_t fib_forw_chain_type_to_link_type | ( | fib_forward_chain_type_t | fct | ) |
Convert from a chain type to the adjacency's link type.
Definition at line 308 of file fib_types.c.
|
inlinestatic |
Convert from boolean is_ip6 to FIB protocol.
Drop MPLS on the floor in favor of IPv4.
Definition at line 80 of file fib_types.h.
int fib_prefix_cmp | ( | const fib_prefix_t * | p1, |
const fib_prefix_t * | p2 | ||
) |
Compare two prefixes for equality.
Definition at line 104 of file fib_types.c.
void fib_prefix_from_ip46_addr | ( | const ip46_address_t * | addr, |
fib_prefix_t * | pfx | ||
) |
Host prefix from ip.
Definition at line 79 of file fib_types.c.
int fib_prefix_is_cover | ( | const fib_prefix_t * | p1, |
const fib_prefix_t * | p2 | ||
) |
Compare two prefixes for covering relationship.
Definition at line 139 of file fib_types.c.
int fib_prefix_is_host | ( | const fib_prefix_t * | p | ) |
Return true is the prefix is a host prefix.
Definition at line 161 of file fib_types.c.
dpo_proto_t fib_proto_to_dpo | ( | fib_protocol_t | fib_proto | ) |
vnet_link_t fib_proto_to_link | ( | fib_protocol_t | proto | ) |
Convert from a protocol to a link type.
Definition at line 270 of file fib_types.c.
Definition at line 47 of file fib_types.c.
Format an MPLS label.
Definition at line 63 of file fib_types.c.
Format an LSP mode type.
Definition at line 55 of file fib_types.c.
Definition at line 176 of file fib_types.c.
Definition at line 31 of file fib_types.c.
Definition at line 39 of file fib_types.c.
STATIC_ASSERT | ( | STRUCT_OFFSET_OF(fib_prefix_t, fp_addr) | = =4 , |
"FIB Prefix's address is 4 byte aligned." | |||
) |
uword unformat_fib_route_path | ( | unformat_input_t * | input, |
va_list * | args | ||
) |
Unformat a fib_route_path_t from CLI input.
Definition at line 383 of file fib_types.c.