network: link_drop() and netdev_drop() remove reference from manager
This commit is contained in:
@@ -112,13 +112,19 @@ static void netdev_callbacks_clear(NetDev *netdev) {
|
||||
}
|
||||
}
|
||||
|
||||
static void netdev_detach_from_manager(NetDev *netdev) {
|
||||
if (netdev->ifname && netdev->manager)
|
||||
hashmap_remove(netdev->manager->netdevs, netdev->ifname);
|
||||
|
||||
netdev->manager = NULL;
|
||||
}
|
||||
|
||||
static NetDev *netdev_free(NetDev *netdev) {
|
||||
assert(netdev);
|
||||
|
||||
netdev_callbacks_clear(netdev);
|
||||
|
||||
if (netdev->ifname && netdev->manager)
|
||||
hashmap_remove(netdev->manager->netdevs, netdev->ifname);
|
||||
netdev_detach_from_manager(netdev);
|
||||
|
||||
free(netdev->filename);
|
||||
|
||||
@@ -167,6 +173,8 @@ void netdev_drop(NetDev *netdev) {
|
||||
|
||||
netdev_callbacks_clear(netdev);
|
||||
|
||||
netdev_detach_from_manager(netdev);
|
||||
|
||||
netdev_unref(netdev);
|
||||
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user