network: link_drop() and netdev_drop() remove reference from manager

This commit is contained in:
Yu Watanabe
2018-11-05 13:19:02 +09:00
parent 2382c9367b
commit c4397d94c3
3 changed files with 31 additions and 16 deletions
+10 -2
View File
@@ -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;