diff options
Diffstat (limited to 'src/network/netdev/netdev.c')
-rw-r--r-- | src/network/netdev/netdev.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/network/netdev/netdev.c b/src/network/netdev/netdev.c index f0e9d00246..0263917468 100644 --- a/src/network/netdev/netdev.c +++ b/src/network/netdev/netdev.c @@ -148,11 +148,16 @@ static void netdev_callbacks_clear(NetDev *netdev) { } } +bool netdev_is_managed(NetDev *netdev) { + if (!netdev || !netdev->manager || !netdev->ifname) + return false; + + return hashmap_get(netdev->manager->netdevs, netdev->ifname) == 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) { @@ -476,7 +481,7 @@ int netdev_get_mac(const char *ifname, struct ether_addr **ret) { l = strlen(ifname); sz = sizeof(sd_id128_t) + l; - v = alloca(sz); + v = newa(uint8_t, sz); /* fetch some persistent data unique to the machine */ r = sd_id128_get_machine((sd_id128_t*) v); |