static void add_interface(struct network *network,
struct interface *interface)
{
+ char *uuid = mac_bytes_to_string(interface, interface->hwaddr,
+ sizeof(interface->hwaddr));
+
list_add(&network->interfaces, &interface->list);
- interface->dev = discover_device_create(network->handler,
- interface->name);
+ interface->dev = discover_device_create(network->handler, uuid,
+ interface->name);
interface->dev->device->type = DEVICE_TYPE_NETWORK;
- interface->dev->uuid = mac_bytes_to_string(interface->dev,
- interface->hwaddr, sizeof(interface->hwaddr));
device_handler_add_device(network->handler, interface->dev);
+ talloc_free(uuid);
}
static void remove_interface(struct network *network,
interface->state = IFSTATE_NEW;
else if (!link)
interface->state = IFSTATE_UP_WAITING_LINK;
- else
+ else {
+ pb_debug("network: skipping configured interface %s\n",
+ interface->name);
return;
+ }
}
/* always up the lookback, no other handling required */
} else if (config->method == CONFIG_METHOD_STATIC) {
configure_interface_static(network, interface, config);
}
+
+ interface->state = IFSTATE_CONFIGURED;
}
static int network_handle_nlmsg(struct network *network, struct nlmsghdr *nlmsg)
return 0;
}
+ /* ignore the default tun device in some environments */
+ if (strncmp(ifname, "tun", strlen("tun")) == 0)
+ return 0;
interface = find_interface_by_ifindex(network, info->ifi_index);
if (!interface) {