The lease lost may happen during renewing address. If it happens,
assertion hits in dhcp4_release_old_lease().
static int dhcp4_update_address(Link *link, bool announce);
static int dhcp4_remove_all(Link *link);
-void dhcp4_release_old_lease(Link *link) {
+static void dhcp4_release_old_lease(Link *link) {
struct in_addr address = {}, address_old = {};
assert(link);
link->dhcp4_configured = false;
+ /* dhcp_lease_lost() may be called during renewing IP address. */
+ dhcp4_release_old_lease(link);
+
r = dhcp4_remove_all(link);
if (r < 0)
return r;
_DHCP_CLIENT_ID_INVALID = -1,
} DHCPClientIdentifier;
-void dhcp4_release_old_lease(Link *link);
int dhcp4_configure(Link *link);
int dhcp4_set_client_identifier(Link *link);
int dhcp4_set_promote_secondaries(Link *link);
assert(link->manager);
assert(link->manager->event);
- dhcp4_release_old_lease(link);
-
bool keep_dhcp = may_keep_dhcp &&
link->network &&
(link->manager->restarting ||