plugins: unload plugin if early init fails
[vpp.git] / src / vnet / ethernet / interface.c
index 801c99f..a29302b 100644 (file)
@@ -344,6 +344,7 @@ ethernet_delete_interface (vnet_main_t * vnm, u32 hw_if_index)
            }
        }
       pool_put_index (em->vlan_pool, main_intf->dot1q_vlans);
+      main_intf->dot1q_vlans = 0;
     }
   if (main_intf->dot1ad_vlans)
     {
@@ -356,6 +357,7 @@ ethernet_delete_interface (vnet_main_t * vnm, u32 hw_if_index)
            }
        }
       pool_put_index (em->vlan_pool, main_intf->dot1ad_vlans);
+      main_intf->dot1ad_vlans = 0;
     }
 
   vnet_delete_hw_interface (vnm, hw_if_index);
@@ -737,12 +739,13 @@ int
 vnet_delete_sub_interface (u32 sw_if_index)
 {
   vnet_main_t *vnm = vnet_get_main ();
-  vnet_sw_interface_t *si = vnet_get_sw_interface (vnm, sw_if_index);
+  vnet_sw_interface_t *si;
   int rv = 0;
 
   if (pool_is_free_index (vnm->interface_main.sw_interfaces, sw_if_index))
     return VNET_API_ERROR_INVALID_SW_IF_INDEX;
 
+  si = vnet_get_sw_interface (vnm, sw_if_index);
   if (si->type == VNET_SW_INTERFACE_TYPE_SUB ||
       si->type == VNET_SW_INTERFACE_TYPE_P2P)
     {