X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fnetwork%2Fnetworkd-link.c;h=94683a54036b729eecfaca95986051a3a3e7aeb1;hp=877b7a9be2c1e7ad4a5a3cc894456434f0ab5921;hb=a2ba62c719224a4b47751623ca5e8b0333f49721;hpb=679b3605f0ea52ee56ae76e57dfd17bcfef5b122 diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 877b7a9be..94683a540 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -401,20 +401,18 @@ static int route_handler(sd_rtnl *rtnl, sd_rtnl_message *m, void *userdata) { static int link_set_dhcp_routes(Link *link) { struct sd_dhcp_route *static_routes; - size_t static_routes_size; - int r; - unsigned i; + int r, n, i; assert(link); - r = sd_dhcp_lease_get_routes(link->dhcp_lease, &static_routes, &static_routes_size); - if (r < 0) { - if (r != -ENOENT) - log_warning_link(link, "DHCP error: could not get routes: %s", strerror(-r)); - return r; + n = sd_dhcp_lease_get_routes(link->dhcp_lease, &static_routes); + if (n < 0) { + if (n != -ENOENT) + log_warning_link(link, "DHCP error: could not get routes: %s", strerror(-n)); + return n; } - for (i = 0; i < static_routes_size; i++) { + for (i = 0; i < n; i++) { _cleanup_route_free_ Route *route = NULL; r = route_new_dynamic(&route); @@ -955,7 +953,6 @@ static int dhcp_lease_lost(Link *link) { struct in_addr netmask; struct in_addr gateway; unsigned prefixlen; - unsigned i; int r; assert(link); @@ -965,11 +962,11 @@ static int dhcp_lease_lost(Link *link) { if (link->network->dhcp_routes) { struct sd_dhcp_route *routes; - size_t routes_size; + int n, i; - r = sd_dhcp_lease_get_routes(link->dhcp_lease, &routes, &routes_size); - if (r >= 0) { - for (i = 0; i < routes_size; i++) { + n = sd_dhcp_lease_get_routes(link->dhcp_lease, &routes); + if (n >= 0) { + for (i = 0; i < n; i++) { _cleanup_route_free_ Route *route = NULL; r = route_new_dynamic(&route); @@ -1998,6 +1995,10 @@ static int link_configure(Link *link) { if (r < 0) return r; + r = sd_dhcp_client_set_request_broadcast(link->dhcp_client, link->network->dhcp_broadcast); + if (r < 0) + return r; + if (link->network->dhcp_mtu) { r = sd_dhcp_client_set_request_option(link->dhcp_client, 26); if (r < 0)