X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fnetwork%2Fnetworkd-dhcp4.c;h=63bfa86f99a6cddb6df694f049e3f1f74892a477;hb=61f33134fc9231e07e1b9519b140d68139e9fad0;hp=e0b3acad1b8ede49512bc337519693dc89e032fd;hpb=84b5b79a8f7b423c5b7cad4170eb68d57fe5e26c;p=elogind.git diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c index e0b3acad1..63bfa86f9 100644 --- a/src/network/networkd-dhcp4.c +++ b/src/network/networkd-dhcp4.c @@ -178,7 +178,7 @@ static int dhcp_lease_lost(Link *link) { struct in_addr addr; struct in_addr netmask; struct in_addr gateway; - unsigned prefixlen; + unsigned prefixlen = 0; int r; assert(link); @@ -237,15 +237,18 @@ static int dhcp_lease_lost(Link *link) { } } - sd_dhcp_lease_get_address(link->dhcp_lease, &addr); - sd_dhcp_lease_get_netmask(link->dhcp_lease, &netmask); - prefixlen = in_addr_netmask_to_prefixlen(&netmask); + r = sd_dhcp_lease_get_address(link->dhcp_lease, &addr); + if (r >= 0) { + r = sd_dhcp_lease_get_netmask(link->dhcp_lease, &netmask); + if (r >= 0) + prefixlen = in_addr_netmask_to_prefixlen(&netmask); - address->family = AF_INET; - address->in_addr.in = addr; - address->prefixlen = prefixlen; + address->family = AF_INET; + address->in_addr.in = addr; + address->prefixlen = prefixlen; - address_drop(address, link, &link_address_drop_handler); + address_drop(address, link, &link_address_drop_handler); + } } if (link->network->dhcp_mtu) { @@ -596,7 +599,9 @@ int dhcp4_configure(Link *link) { if (r < 0) return r; - r = sd_dhcp_client_set_mac(link->dhcp_client, &link->mac); + r = sd_dhcp_client_set_mac(link->dhcp_client, + (const uint8_t *) &link->mac, + sizeof (link->mac), ARPHRD_ETHER); if (r < 0) return r;