summaryrefslogtreecommitdiff
path: root/src/network/netdev/netdev.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/network/netdev/netdev.c')
-rw-r--r--src/network/netdev/netdev.c11
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);