static void dhcp6_handler(sd_dhcp6_client *client, int event, void *userdata) {
Link *link = ASSERT_PTR(userdata);
- int r;
+ int r = 0;
assert(link->network);
case SD_DHCP6_CLIENT_EVENT_RESEND_EXPIRE:
case SD_DHCP6_CLIENT_EVENT_RETRANS_MAX:
r = dhcp6_lease_lost(link);
- if (r < 0)
- link_enter_failed(link);
break;
case SD_DHCP6_CLIENT_EVENT_IP_ACQUIRE:
r = dhcp6_lease_ip_acquired(client, link);
- if (r < 0) {
- link_enter_failed(link);
- return;
- }
+ break;
- _fallthrough_;
case SD_DHCP6_CLIENT_EVENT_INFORMATION_REQUEST:
r = dhcp6_lease_information_acquired(client, link);
- if (r < 0)
- link_enter_failed(link);
break;
default:
if (event < 0)
- log_link_warning_errno(link, event, "DHCPv6 error: %m");
+ log_link_warning_errno(link, event, "DHCPv6 error, ignoring: %m");
else
log_link_warning(link, "DHCPv6 unknown event: %d", event);
- return;
}
+ if (r < 0)
+ link_enter_failed(link);
}
int dhcp6_start_on_ra(Link *link, bool information_request) {