diff options
Diffstat (limited to 'src/vnet/interface_cli.c')
-rw-r--r-- | src/vnet/interface_cli.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/src/vnet/interface_cli.c b/src/vnet/interface_cli.c index a66e1576bde..9de674a10fa 100644 --- a/src/vnet/interface_cli.c +++ b/src/vnet/interface_cli.c @@ -277,6 +277,7 @@ show_sw_interfaces (vlib_main_t * vm, u8 show_addresses = 0; u8 show_features = 0; u8 show_tag = 0; + u8 show_vtr = 0; int verbose = 0; /* @@ -300,6 +301,8 @@ show_sw_interfaces (vlib_main_t * vm, show_features = 1; else if (unformat (linput, "tag")) show_tag = 1; + else if (unformat (linput, "vtr")) + show_vtr = 1; else if (unformat (linput, "verbose")) verbose = 1; else @@ -312,7 +315,7 @@ show_sw_interfaces (vlib_main_t * vm, } unformat_free (linput); } - if (show_features || show_tag) + if (show_features || show_tag || show_vtr) { if (sw_if_index == ~(u32) 0) { @@ -353,6 +356,27 @@ show_sw_interfaces (vlib_main_t * vm, return 0; } + /* + * Show vlan tag rewrite data for one interface. + */ + if (show_vtr) + { + u32 vtr_op = L2_VTR_DISABLED; + u32 push_dot1q = 0, tag1 = 0, tag2 = 0; + + if (l2vtr_get (vm, vnm, sw_if_index, + &vtr_op, &push_dot1q, &tag1, &tag2) != 0) + { + vlib_cli_output (vm, "%U: Problem getting vlan tag-rewrite data", + format_vnet_sw_if_index_name, vnm, sw_if_index); + return 0; + } + vlib_cli_output (vm, "%U: VTR %0U", + format_vnet_sw_if_index_name, vnm, sw_if_index, + format_vtr, vtr_op, push_dot1q, tag1, tag2); + return 0; + } + if (!show_addresses) vlib_cli_output (vm, "%U\n", format_vnet_sw_interface, vnm, 0); @@ -474,7 +498,7 @@ done: /* *INDENT-OFF* */ VLIB_CLI_COMMAND (show_sw_interfaces_command, static) = { .path = "show interface", - .short_help = "show interface [address|addr|features|feat] [<interface> [<interface> [..]]] [verbose]", + .short_help = "show interface [address|addr|features|feat|vtr] [<interface> [<interface> [..]]] [verbose]", .function = show_sw_interfaces, .is_mp_safe = 1, }; |