![]() |
FD.io VPP
v18.11-rc0-18-g2a3fb1a
Vector Packet Processing
|
Include dependency graph for fib_types.h:
This graph shows which files directly or indirectly include this file: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.
Here is the caller graph for this function:| 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.
Here is the caller graph for this function:| 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.
Here is the caller graph for this function:| 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.
Here is the caller graph for this function:
|
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.
Here is the call graph for this function:
Here is the caller graph for this function:| 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.
Here is the caller graph for this function:| 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.
Here is the caller graph for this function:| 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.
Here is the call graph for this function:
Here is the caller graph for this function:| 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.
Here is the caller graph for this function:| 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.
Here is the caller graph for this function:Definition at line 47 of file fib_types.c.
Here is the call graph for this function:
Here is the caller graph for this function:Format an MPLS label.
Definition at line 63 of file fib_types.c.
Here is the call graph for this function:
Here is the caller graph for this function:Format an LSP mode type.
Definition at line 55 of file fib_types.c.
Here is the call graph for this function:
Here is the caller graph for this function:Definition at line 176 of file fib_types.c.
Here is the call graph for this function:
Here is the caller graph for this function:Definition at line 31 of file fib_types.c.
Here is the call graph for this function:
Here is the caller graph for this function:Definition at line 39 of file fib_types.c.
Here is the call graph for this function:
Here is the caller graph for this function:| 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.
Here is the call graph for this function:
Here is the caller graph for this function: