interface: more cleaning after set flags is failed in vnet_create_sw_interface 12/34812/6
authorvarasteh <mahdy.varasteh@gmail.com>
Sun, 2 Jan 2022 10:50:32 +0000 (14:20 +0330)
committerDamjan Marion <dmarion@0xa5.net>
Mon, 6 Mar 2023 17:39:33 +0000 (17:39 +0000)
There's a chance that vnet_sw_interface_set_flags_helper()
has successfully called some sw interface add callback functions
before returning the error. So the sw interface del callbacks
should also be called

Type: fix

Signed-off-by: varasteh <mahdy.varasteh@gmail.com>
Change-Id: I2cd7dc6d5b3a5ebfd2c4d1a6be5390083dee6401
Signed-off-by: varasteh <mahdy.varasteh@gmail.com>
src/vnet/interface.c

index dd43998..18ce6b6 100644 (file)
@@ -655,6 +655,7 @@ vnet_create_sw_interface (vnet_main_t * vnm, vnet_sw_interface_t * template,
       /* undo the work done by vnet_create_sw_interface_no_callbacks() */
       log_err ("create_sw_interface: set flags failed\n  %U",
               format_clib_error, error);
+      call_sw_interface_add_del_callbacks (vnm, *sw_if_index, 0);
       vnet_sw_interface_t *sw =
        pool_elt_at_index (im->sw_interfaces, *sw_if_index);
       pool_put (im->sw_interfaces, sw);