vnet: allow format deleted swifidx
This patch prevents the sw interfaces format function to fail when the interface was deleted. It also prints the swifindex alongside the 'DELETED' keyword. Printing deleted swifindex should not happen, but it is still helpful to have these safeguards for troubleshooting in the case invariants get corrupted (e.g. fib entry refcounts, ...) Type: improvement Change-Id: I66711049db2eebe0ad17e37c3a260ac81d1e5134 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
This commit is contained in:
committed by
Damjan Marion
parent
327c323065
commit
535364e904
@@ -501,11 +501,9 @@ format_fib_path (u8 * s, va_list * args)
|
||||
else
|
||||
{
|
||||
s = format (s, " %U",
|
||||
format_vnet_sw_interface_name,
|
||||
format_vnet_sw_if_index_name,
|
||||
vnm,
|
||||
vnet_get_sw_interface(
|
||||
vnm,
|
||||
path->attached_next_hop.fp_interface));
|
||||
path->attached_next_hop.fp_interface);
|
||||
if (vnet_sw_interface_is_p2p(vnet_get_main(),
|
||||
path->attached_next_hop.fp_interface))
|
||||
{
|
||||
|
||||
@@ -1359,7 +1359,10 @@ vnet_hw_interface_compare (vnet_main_t * vnm,
|
||||
int
|
||||
vnet_sw_interface_is_p2p (vnet_main_t * vnm, u32 sw_if_index)
|
||||
{
|
||||
vnet_sw_interface_t *si = vnet_get_sw_interface (vnm, sw_if_index);
|
||||
vnet_sw_interface_t *si = vnet_get_sw_interface_or_null (vnm, sw_if_index);
|
||||
if (si == NULL)
|
||||
return -1;
|
||||
|
||||
if ((si->type == VNET_SW_INTERFACE_TYPE_P2P) ||
|
||||
(si->type == VNET_SW_INTERFACE_TYPE_PIPE))
|
||||
return 1;
|
||||
|
||||
@@ -290,7 +290,7 @@ format_vnet_sw_if_index_name (u8 * s, va_list * args)
|
||||
|
||||
if (NULL == si)
|
||||
{
|
||||
return format (s, "DELETED");
|
||||
return format (s, "DELETED (%u)", sw_if_index);
|
||||
}
|
||||
return format (s, "%U", format_vnet_sw_interface_name, vnm, si);
|
||||
}
|
||||
@@ -305,7 +305,7 @@ format_vnet_hw_if_index_name (u8 * s, va_list * args)
|
||||
hi = vnet_get_hw_interface (vnm, hw_if_index);
|
||||
|
||||
if (hi == 0)
|
||||
return format (s, "DELETED");
|
||||
return format (s, "DELETED (%u)", hw_if_index);
|
||||
|
||||
return format (s, "%v", hi->name);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user