35 s =
format(s,
"path:%d labels:",
100 return ((1 ==
vec_len(path_ext->fpe_label_stack)) &&
152 parent_fct = child_fct;
164 parent_fct = child_fct;
int fib_path_is_resolved(fib_node_index_t path_index)
Contribute an object that is to be used to forward IP6 packets.
fib_node_index_t path_index
The index of the FIB path.
void fib_path_contribute_forwarding(fib_node_index_t path_index, fib_forward_chain_type_t fct, dpo_id_t *dpo)
void fib_path_ext_resolve(fib_path_ext_t *path_ext, fib_node_index_t path_list_index)
A representation of a path as described by a route producer.
int fib_path_ext_cmp(fib_path_ext_t *path_ext, const fib_route_path_t *rpath)
dpo_id_t path_dpo
ID of the Data-path object.
int fib_route_path_cmp(const fib_route_path_t *rpath1, const fib_route_path_t *rpath2)
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.
#define MPLS_IETF_IMPLICIT_NULL_LABEL
void dpo_copy(dpo_id_t *dst, const dpo_id_t *src)
atomic copy a data-plane object.
u32 index_t
A Data-Path Object is an object that represents actions that are applied to packets are they are swit...
#define vec_add2(V, P, N)
Add N elements to end of vector V, return pointer to new elements in P.
void fib_path_list_walk(fib_node_index_t path_list_index, fib_path_list_walk_fn_t func, void *ctx)
Contribute an object that is to be used to forward IP4 packets.
static int fib_path_ext_match(fib_node_index_t pl_index, fib_node_index_t path_index, void *ctx)
void fib_path_ext_init(fib_path_ext_t *path_ext, fib_node_index_t path_list_index, const fib_route_path_t *rpath)
index_t mpls_label_dpo_create(mpls_label_t *label_stack, mpls_eos_bit_t eos, u8 ttl, u8 exp, dpo_proto_t payload_proto, const dpo_id_t *dpo)
Create an MPLS label object.
mpls_label_t * frp_label_stack
The outgoing MPLS label Stack.
enum dpo_proto_t_ dpo_proto_t
Data path protocol.
int load_balance_is_drop(const dpo_id_t *dpo)
The identity of a DPO is a combination of its type and its instance number/index of objects of that t...
Contribute an object that is to be used to forward end-of-stack MPLS packets.
u8 * format_fib_path_ext(u8 *s, va_list *args)
u32 fib_node_index_t
A typedef of a node index.
void dpo_set(dpo_id_t *dpo, dpo_type_t type, dpo_proto_t proto, index_t index)
Set/create a DPO ID The DPO will be locked.
enum fib_forward_chain_type_t_ fib_forward_chain_type_t
FIB output chain type.
int fib_path_get_weight(fib_node_index_t path_index)
load_balance_path_t * fib_path_ext_stack(fib_path_ext_t *path_ext, const fib_entry_t *entry, fib_forward_chain_type_t child_fct, load_balance_path_t *nhs)
format_function_t format_mpls_unicast_label
#define FIB_NODE_INDEX_INVALID
#define vec_len(v)
Number of elements in vector (rvalue-only, NULL tolerant)
u32 path_weight
weight for the path.
fib_node_index_t fpe_path_index
The index of the path.
#define DPO_INVALID
An initialiser for DPOs declared on the stack.
One path from an [EU]CMP set that the client wants to add to a load-balance object.
static int fib_path_ext_is_imp_null(fib_path_ext_t *path_ext)
Return true if the label stack is implicit null.
fib_forward_chain_type_t fib_entry_chain_type_fixup(const fib_entry_t *entry, fib_forward_chain_type_t fct)
Turn the chain type requested by the client into the one they really wanted.
int dpo_is_drop(const dpo_id_t *dpo)
The Drop DPO will drop all packets, no questions asked.
void dpo_reset(dpo_id_t *dpo)
reset a DPO ID The DPO will be unlocked.
A path extension is a per-entry addition to the forwarding information when packets are sent for that...
Contribute an object that is to be used to forward non-end-of-stack MPLS packets. ...
int fib_path_cmp_w_route_path(fib_node_index_t path_index, const fib_route_path_t *rpath)
fib_route_path_t fpe_path
A description of the path that is being extended.
enum mpls_eos_bit_t_ mpls_eos_bit_t