General L2 / L3 cross-connect, used to set up "L2 interface <--> your-favorite-tunnel-encap" tunnels.
More...
|
static u8 * | format_l2_xcrw_trace (u8 *s, va_list *args) |
|
static uword | l2_xcrw_node_fn (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame) |
|
clib_error_t * | l2_xcrw_init (vlib_main_t *vm) |
|
static uword | dummy_interface_tx (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame) |
|
static u8 * | format_xcrw_name (u8 *s, va_list *args) |
|
| VNET_DEVICE_CLASS (xcrw_device_class, static) |
|
static u32 | create_xcrw_interface (vlib_main_t *vm) |
|
int | vnet_configure_l2_xcrw (vlib_main_t *vm, vnet_main_t *vnm, u32 l2_sw_if_index, u32 tx_fib_index, u8 *rewrite, u32 next_node_index, int is_add) |
|
static clib_error_t * | set_l2_xcrw_command_fn (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd) |
|
static u8 * | format_l2xcrw (u8 *s, va_list *args) |
|
static clib_error_t * | show_l2xcrw_command_fn (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd) |
|
General L2 / L3 cross-connect, used to set up "L2 interface <--> your-favorite-tunnel-encap" tunnels.
We set up a typical L2 cross-connect or (future) bridge to hook L2 interface(s) up to the L3 stack in arbitrary ways.
Each l2_xcrw adjacency specifies 3 things:
- The next graph node (presumably in the L3 stack) to process the (L2 -> L3) packet
- A new value for vnet_buffer(b)->sw_if_indexVLIB_TX,
- A rewrite string to apply.
Example: to cross-connect an L2 interface or (future) bridge to an mpls-o-gre tunnel, set up the L2 rewrite string as shown in mpls_gre_rewrite, and use "mpls-post-rewrite" to fix the GRE IP header checksum and length fields.
Definition in file l2_xcrw.c.