32 ip46_address_t next_hop, *next_hops;
63 else if (
unformat (line_input,
"next-hop %U",
80 for (i = 0; i <
vec_len (mac_addrs); i++)
87 sw_if_index, mac_addrs[i].mac_addr);
111 .path =
"ip virtual",
112 .short_help =
"ip virtual <addr> <interface> [mac <Mi>]+",
fib_protocol_t fp_proto
protocol type
fib_protocol_t frp_proto
The protocol of the address below.
ip46_address_t frp_addr
The next-hop address.
sll srl srl sll sra u16x4 i
A representation of a path as described by a route producer.
fib_node_index_t fib_table_entry_path_add2(u32 fib_index, const fib_prefix_t *prefix, fib_source_t source, fib_entry_flag_t flags, fib_route_path_t *rpath)
Add n paths to an entry (aka route) in the FIB.
#define vec_add1(V, E)
Add 1 element to end of vector (unspecified alignment).
#define vec_add2(V, P, N)
Add N elements to end of vector V, return pointer to new elements in P.
unformat_function_t unformat_vnet_sw_interface
adj_index_t adj_nbr_add_or_lock_w_rewrite(fib_protocol_t nh_proto, vnet_link_t link_type, const ip46_address_t *nh_addr, u32 sw_if_index, u8 *rewrite)
Add (and lock) a new or lock an existing neighbour adjacency.
vnet_main_t * vnet_get_main(void)
u32 frp_sw_if_index
The interface.
mpls_label_t * frp_label_stack
The outgoing MPLS label Stack.
Aggregrate type for a prefix.
u16 fp_len
The mask length.
ip46_address_t fp_addr
The address type is not deriveable from the fp_addr member.
#define vec_free(V)
Free vector's memory (no header).
u32 frp_weight
[un]equal cost path weight
#define clib_memcpy(a, b, c)
#define VLIB_CLI_COMMAND(x,...)
uword unformat_ethernet_address(unformat_input_t *input, va_list *args)
static clib_error_t * virtual_ip_cmd_fn_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
#define vec_len(v)
Number of elements in vector (rvalue-only, NULL tolerant)
#define clib_error_return(e, args...)
u32 frp_fib_index
The FIB index to lookup the nexthop Only valid for recursive paths.