L2 over MPLS
[vpp.git] / src / vnet / interface_format.c
index b961c77..5694bb2 100644 (file)
@@ -45,7 +45,9 @@ format_vnet_sw_interface_flags (u8 * s, va_list * args)
 {
   u32 flags = va_arg (*args, u32);
 
-  if (flags & VNET_SW_INTERFACE_FLAG_BOND_SLAVE)
+  if (flags & VNET_SW_INTERFACE_FLAG_ERROR)
+    s = format (s, "error");
+  else if (flags & VNET_SW_INTERFACE_FLAG_BOND_SLAVE)
     s = format (s, "bond-slave");
   else
     {
@@ -58,6 +60,23 @@ format_vnet_sw_interface_flags (u8 * s, va_list * args)
   return s;
 }
 
+u8 *
+format_vnet_hw_interface_rx_mode (u8 * s, va_list * args)
+{
+  vnet_hw_interface_rx_mode mode = va_arg (*args, vnet_hw_interface_rx_mode);
+
+  if (mode == VNET_HW_INTERFACE_RX_MODE_POLLING)
+    return format (s, "polling");
+
+  if (mode == VNET_HW_INTERFACE_RX_MODE_INTERRUPT)
+    return format (s, "interrupt");
+
+  if (mode == VNET_HW_INTERFACE_RX_MODE_ADAPTIVE)
+    return format (s, "adaptive");
+
+  return format (s, "unknown");
+}
+
 u8 *
 format_vnet_hw_interface (u8 * s, va_list * args)
 {
@@ -146,9 +165,15 @@ format_vnet_sw_if_index_name (u8 * s, va_list * args)
 {
   vnet_main_t *vnm = va_arg (*args, vnet_main_t *);
   u32 sw_if_index = va_arg (*args, u32);
-  return format (s, "%U",
-                format_vnet_sw_interface_name, vnm,
-                vnet_get_sw_interface (vnm, sw_if_index));
+  vnet_sw_interface_t *si;
+
+  si = vnet_get_sw_interface_safe (vnm, sw_if_index);
+
+  if (NULL == si)
+    {
+      return format (s, "DELETED");
+    }
+  return format (s, "%U", format_vnet_sw_interface_name, vnm, si);
 }
 
 u8 *