uint16_t type;
Address *address = NULL;
Request *req = NULL;
- bool is_new = false;
+ bool is_new = false, update_dhcp4;
int ifindex, r;
assert(rtnl);
assert_not_reached();
}
+ update_dhcp4 = tmp->family == AF_INET6;
+
/* Then, find the managed Address and Request objects corresponding to the received address. */
(void) address_get(link, tmp, &address);
(void) address_get_request(link, tmp, &req);
if (req)
address_enter_removed(req->userdata);
- return 0;
+ goto finalize;
}
if (!address) {
if (r < 0)
link_enter_failed(link);
+finalize:
+ if (update_dhcp4) {
+ r = dhcp4_update_ipv6_connectivity(link);
+ if (r < 0) {
+ log_link_warning_errno(link, r, "Failed to notify IPv6 connectivity to DHCPv4 client: %m");
+ link_enter_failed(link);
+ }
+ }
+
return 1;
}