From 4400b62c78526cf744d2aec3fba86911da936f7a Mon Sep 17 00:00:00 2001 From: Jeremy Kerr Date: Thu, 19 Sep 2013 21:55:06 +0800 Subject: discover/network: Manage network->interfaces with {add,remove}_interface Signed-off-by: Jeremy Kerr --- discover/network.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'discover') diff --git a/discover/network.c b/discover/network.c index 2d606e4..eaf6d1b 100644 --- a/discover/network.c +++ b/discover/network.c @@ -138,6 +138,18 @@ static int network_send_link_query(struct network *network) return 0; } +static void add_interface(struct network *network, + struct interface *interface) +{ + list_add(&network->interfaces, &interface->list); +} + +static void remove_interface(struct interface *interface) +{ + list_remove(&interface->list); + talloc_free(interface); +} + static int interface_change(struct interface *interface, bool up) { const char *statestr = up ? "up" : "down"; @@ -371,8 +383,7 @@ static int network_handle_nlmsg(struct network *network, struct nlmsghdr *nlmsg) if (!interface) return 0; pb_log("network: interface %s removed\n", interface->name); - list_remove(&interface->list); - talloc_free(interface); + remove_interface(interface); return 0; } @@ -384,6 +395,7 @@ static int network_handle_nlmsg(struct network *network, struct nlmsghdr *nlmsg) interface->state = IFSTATE_NEW; memcpy(interface->hwaddr, ifaddr, sizeof(interface->hwaddr)); strncpy(interface->name, ifname, sizeof(interface->name) - 1); + add_interface(network, interface); } configure_interface(network, interface, -- cgit v1.2.1