X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fresolve%2Fresolved-link.c;h=1b175c8121a7adc9f4bb339c211cc1adec5ce3c9;hb=f12ea7dad09366b2d6cc0c28609a72094a4c9353;hp=9c886a26b5a4ee480813bb2d19105bcbab2e8b85;hpb=e1bbf3d12f28b8e3d4394f2b257e1b7aea3d10fc;p=elogind.git diff --git a/src/resolve/resolved-link.c b/src/resolve/resolved-link.c index 9c886a26b..1b175c812 100644 --- a/src/resolve/resolved-link.c +++ b/src/resolve/resolved-link.c @@ -91,16 +91,15 @@ int link_update_rtnl(Link *l, sd_rtnl_message *m) { if (r < 0) return r; + sd_rtnl_message_read_u32(m, IFLA_MTU, &l->mtu); return 0; } static int update_dhcp_dns_servers(Link *l) { _cleanup_dhcp_lease_unref_ sd_dhcp_lease *lease = NULL; - struct in_addr *nameservers = NULL; + const struct in_addr *nameservers = NULL; DnsServer *s, *nx; - unsigned i; - size_t n; - int r; + int r, n, i; assert(l); @@ -115,9 +114,11 @@ static int update_dhcp_dns_servers(Link *l) { LIST_FOREACH(servers, s, l->dhcp_dns_servers) s->marked = true; - r = sd_dhcp_lease_get_dns(lease, &nameservers, &n); - if (r < 0) + n = sd_dhcp_lease_get_dns(lease, &nameservers); + if (n < 0) { + r = n; goto clear; + } for (i = 0; i < n; i++) { union in_addr_union a = { .in = nameservers[i] }; @@ -149,18 +150,18 @@ static int update_link_dns_servers(Link *l) { _cleanup_free_ struct in_addr *nameservers = NULL; _cleanup_free_ struct in6_addr *nameservers6 = NULL; DnsServer *s, *nx; - unsigned i; - size_t n; - int r; + int r, n, i; assert(l); LIST_FOREACH(servers, s, l->link_dns_servers) s->marked = true; - r = sd_network_get_dns(l->ifindex, &nameservers, &n); - if (r < 0) + n = sd_network_get_dns(l->ifindex, &nameservers); + if (n < 0) { + r = n; goto clear; + } for (i = 0; i < n; i++) { union in_addr_union a = { .in = nameservers[i] }; @@ -175,9 +176,11 @@ static int update_link_dns_servers(Link *l) { } } - r = sd_network_get_dns6(l->ifindex, &nameservers6, &n); - if (r < 0) + n = sd_network_get_dns6(l->ifindex, &nameservers6); + if (n < 0) { + r = n; goto clear; + } for (i = 0; i < n; i++) { union in_addr_union a = { .in6 = nameservers6[i] };