X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fnetwork%2Fnetworkd-manager.c;h=d903d0d60ed4dc02655a7512c4573d90428b759d;hb=aba496a58acf9d9c61314de71353550e579f85ee;hp=ea414b1f1e3b5e74f7f0ff90c2a12782c09f5286;hpb=eed0eee85ac34abd81cd9e81fdb6a19f47b6c8a3;p=elogind.git diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c index ea414b1f1..d903d0d60 100644 --- a/src/network/networkd-manager.c +++ b/src/network/networkd-manager.c @@ -145,13 +145,13 @@ void manager_free(Manager *m) { sd_event_source_unref(m->sigint_event_source); sd_event_unref(m->event); - while ((network = m->networks)) - network_free(network); - while ((link = hashmap_first(m->links))) link_free(link); hashmap_free(m->links); + while ((network = m->networks)) + network_free(network); + while ((netdev = hashmap_first(m->netdevs))) netdev_free(netdev); hashmap_free(m->netdevs); @@ -312,22 +312,24 @@ static int manager_rtnl_process_link(sd_rtnl *rtnl, sd_rtnl_message *message, vo r = sd_rtnl_message_link_get_ifindex(message, &ifindex); if (r < 0 || ifindex <= 0) { - log_debug("received RTM_NEWLINK message without valid ifindex"); + log_warning("received RTM_NEWLINK message without valid ifindex"); return 0; } r = sd_rtnl_message_read_string(message, IFLA_IFNAME, &name); if (r < 0) - log_debug("received RTM_NEWLINK message without valid IFLA_IFNAME"); + log_warning("received RTM_NEWLINK message without valid ifname"); else { NetDev *netdev; r = netdev_get(m, name, &netdev); if (r >= 0) { - r = netdev_set_ifindex(netdev, ifindex); - if (r < 0) - log_debug("could not set ifindex of netdev '%s' to %d: %s", - name, ifindex, strerror(-r)); + netdev_set_ifindex(netdev, message); + r = sd_rtnl_message_rewind(message); + if (r < 0) { + log_debug("could not rewind rtnl message"); + return 0; + } } }