"/etc/systemd/network",
"/run/systemd/network",
"/usr/lib/systemd/network",
-#ifdef HAVE_SPLIT_USER
+#ifdef HAVE_SPLIT_USR
"/lib/systemd/network",
#endif
NULL};
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);
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;
+ }
}
}
}
}
- HASHMAP_FOREACH(link, m->links, i)
- if (link->network && link->network->dns)
- append_dns(f, &link->network->dns->in_addr.in,
- link->network->dns->family, &count);
+ HASHMAP_FOREACH(link, m->links, i) {
+ if (link->network && link->network->dns) {
+ Address *address;
+ Iterator j;
+
+ SET_FOREACH(address, link->network->dns, j) {
+ append_dns(f, &address->in_addr.in,
+ address->family, &count);
+ }
+ }
+ }
fflush(f);