mpls: CLI to show the MPLS forwarding state of an interface

Type: improvement

Signed-off-by: Neale Ranns <neale@graphiant.com>
Change-Id: I28b98154bbff36e8391a09a2b30302dda4349946
This commit is contained in:
Neale Ranns
2021-06-15 12:43:12 +00:00
committed by Beno�t Ganne
parent 8eb8d50ecf
commit de0b3b5718
2 changed files with 76 additions and 0 deletions

View File

@ -140,3 +140,72 @@ VLIB_CLI_COMMAND (set_interface_ip_table_command, static) = {
.function = mpls_interface_enable_disable,
.short_help = "Enable/Disable an interface for MPLS forwarding",
};
static void
show_mpls_one_interface (vnet_main_t *vnm, vlib_main_t *vm, u32 sw_if_index,
bool verbose)
{
mpls_main_t *mm = &mpls_main;
u8 enabled;
enabled = mm->mpls_enabled_by_sw_if_index[sw_if_index];
if (enabled)
{
vlib_cli_output (vm, "%U\n", format_vnet_sw_if_index_name, vnm,
sw_if_index);
vlib_cli_output (vm, " MPLS enabled");
}
else if (verbose)
{
vlib_cli_output (vm, "%U\n", format_vnet_sw_if_index_name, vnm,
sw_if_index);
vlib_cli_output (vm, " MPLS disabled");
}
}
static walk_rc_t
show_mpls_interface_walk (vnet_main_t *vnm, vnet_sw_interface_t *si, void *ctx)
{
show_mpls_one_interface (vnm, ctx, si->sw_if_index, false);
return (WALK_CONTINUE);
}
static clib_error_t *
show_mpls_interface (vlib_main_t *vm, unformat_input_t *input,
vlib_cli_command_t *cmd)
{
vnet_main_t *vnm = vnet_get_main ();
u32 sw_if_index;
sw_if_index = ~0;
if (!unformat_user (input, unformat_vnet_sw_interface, vnm, &sw_if_index))
;
if (~0 == sw_if_index)
{
vnet_sw_interface_walk (vnm, show_mpls_interface_walk, vm);
}
else
{
show_mpls_one_interface (vnm, vm, sw_if_index, true);
}
return NULL;
}
/*?
* This command displays the MPLS forwarding state of an interface
*
* @cliexpar
* @cliexstart{show mpls interface}
* set mpls interface GigEthernet0/8/0
* @cliexend
?*/
VLIB_CLI_COMMAND (show_mpls_interface_command, static) = {
.path = "show mpls interface",
.function = show_mpls_interface,
.short_help = "Show MPLS interface forwarding",
};

View File

@ -1594,6 +1594,10 @@ class TestMPLSDisabled(VppTestCase):
def test_mpls_disabled(self):
""" MPLS Disabled """
self.logger.info(self.vapi.cli("show mpls interface"))
self.logger.info(self.vapi.cli("show mpls interface pg1"))
self.logger.info(self.vapi.cli("show mpls interface pg0"))
tx = (Ether(src=self.pg1.remote_mac,
dst=self.pg1.local_mac) /
MPLS(label=32, ttl=64) /
@ -1620,6 +1624,9 @@ class TestMPLSDisabled(VppTestCase):
#
self.pg1.enable_mpls()
self.logger.info(self.vapi.cli("show mpls interface"))
self.logger.info(self.vapi.cli("show mpls interface pg1"))
#
# Now we get packets through
#