28 u32 hdr_len, local_label;
40 }
else if (
unformat (input,
"add")) {
44 }
else if (
unformat (input,
"bsl %d", &hdr_len)) {
45 }
else if (
unformat (input,
"mpls %d", &local_label)) {
71 .short_help =
"bier table [add|del] sd <sub-domain> set <SET> bsl <bit-string-length> [mpls <label>]",
84 u32 hdr_len, payload_proto;
96 }
else if (
unformat (input,
"add")) {
100 }
else if (
unformat (input,
"bsl %d", &hdr_len)) {
101 }
else if (
unformat (input,
"bp %d", &bp)) {
102 }
else if (
unformat (input,
"via %U",
104 &brp, &payload_proto)) {
131 .path =
"bier route",
132 .short_help =
"bier route [add|del] sd <sud-domain> set <set> bsl <bit-string-length> bp <bit-position> via [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>]",
150 if (
unformat (input,
"%d %d", &bti, &bp))
154 else if (
unformat (input,
"%d", &bti))
186 .path =
"show bier fib",
187 .short_help =
"show bier fib [table-index] [bit-position]",
A representation of a path as described by a route producer.
u8 * format_bier_table(u8 *s, va_list *ap)
enum bier_show_flags_t_ bier_show_flags_t
Flags to control show output.
uword unformat_fib_route_path(unformat_input_t *input, va_list *args)
Unformat a fib_route_path_t from CLI input.
u32 index_t
A Data-Path Object is an object that represents actions that are applied to packets are they are swit...
#define vec_add1(V, E)
Add 1 element to end of vector (unspecified alignment).
clib_error_t * vnet_bier_table_cmd(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
bier_table_ecmp_id_t bti_ecmp
The SUB/ECMP-ID Constructed by FIB to achieve ECMP between BFR-NBRs.
bier_table_set_id_t bti_set
The SET-ID The control plane divdies the bit-position space into sets in the case the max bit-positio...
void bier_table_route_path_remove(const bier_table_id_t *btid, bier_bp_t bp, fib_route_path_t *brps)
u32 bier_bp_t
A bit positon as assigned to egress PEs.
bier_hdr_len_id_t bti_hdr_len
The size of the bit string processed by this table.
index_t bier_table_add_or_lock(const bier_table_id_t *btid, mpls_label_t local_label)
u8 * format_bier_table_entry(u8 *s, va_list *ap)
#define MPLS_LABEL_INVALID
#define vec_free(V)
Free vector's memory (no header).
#define pool_is_free_index(P, I)
Use free bitmap to query whether given index is free.
bier_table_t * bier_table_pool
Memory pool of all the allocated tables.
#define VLIB_CLI_COMMAND(x,...)
void bier_table_unlock(const bier_table_id_t *bti)
fib_route_path_flags_t frp_flags
flags on the path
clib_error_t * vnet_bier_route_cmd(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
A path that resolves via a BIER F-Mask.
bier_table_type_t bti_type
The type of the table; SPF or TE, MPLS or IPv6.
void bier_table_route_path_add(const bier_table_id_t *btid, bier_bp_t bp, fib_route_path_t *brps)
#define INDEX_INVALID
Invalid index - used when no index is known blazoned capitals INVALID speak volumes where ~0 does not...
bier_table_sub_domain_id_t bti_sub_domain
The Sub-Domain-ID The control plane has the configuration option to specify multiple domains or topol...
void bier_table_show_all(vlib_main_t *vm, bier_show_flags_t flags)
#define BIER_ECMP_TABLE_ID_MAIN
Definition of the ID of the BIER main table.
static bier_hdr_len_id_t bier_hdr_bit_len_to_id(u32 bytes)
static clib_error_t * show_bier_fib_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
void vlib_cli_output(vlib_main_t *vm, char *fmt,...)