mirror of
https://github.com/systemd/systemd.git
synced 2025-03-22 06:50:18 +03:00
network: handle ENODATA better with DNR
It is normal for DHCP leases not to have DNR options. We need to be less verbose and more forgiving in these cases. Also, if either DHCP does not have DNR options, make sure to still consider any DHCPv6/RA options. Fixes: c7c9e3c7c016 (network: adjust log message about DNR)
This commit is contained in:
parent
2257be13fe
commit
57feaaece3
@ -561,18 +561,16 @@ static int dnr_append_json(Link *link, sd_json_variant **v) {
|
||||
return r;
|
||||
|
||||
n_dnr = sd_dhcp_lease_get_dnr(link->dhcp_lease, &dnr);
|
||||
if (n_dnr < 0)
|
||||
return 0;
|
||||
|
||||
FOREACH_ARRAY(res, dnr, n_dnr) {
|
||||
r = dnr_append_json_one(link,
|
||||
res,
|
||||
NETWORK_CONFIG_SOURCE_DHCP4,
|
||||
&s,
|
||||
&array);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
if (n_dnr > 0)
|
||||
FOREACH_ARRAY(res, dnr, n_dnr) {
|
||||
r = dnr_append_json_one(link,
|
||||
res,
|
||||
NETWORK_CONFIG_SOURCE_DHCP4,
|
||||
&s,
|
||||
&array);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
||||
if (link->dhcp6_lease && link_get_use_dnr(link, NETWORK_CONFIG_SOURCE_DHCP6)) {
|
||||
@ -585,18 +583,16 @@ static int dnr_append_json(Link *link, sd_json_variant **v) {
|
||||
return r;
|
||||
|
||||
n_dnr = sd_dhcp6_lease_get_dnr(link->dhcp6_lease, &dnr);
|
||||
if (n_dnr < 0)
|
||||
return 0;
|
||||
|
||||
FOREACH_ARRAY(res, dnr, n_dnr) {
|
||||
r = dnr_append_json_one(link,
|
||||
res,
|
||||
NETWORK_CONFIG_SOURCE_DHCP6,
|
||||
&s,
|
||||
&array);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
if (n_dnr > 0)
|
||||
FOREACH_ARRAY(res, dnr, n_dnr) {
|
||||
r = dnr_append_json_one(link,
|
||||
res,
|
||||
NETWORK_CONFIG_SOURCE_DHCP6,
|
||||
&s,
|
||||
&array);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
||||
if (link_get_use_dnr(link, NETWORK_CONFIG_SOURCE_NDISC)) {
|
||||
|
@ -600,14 +600,16 @@ static void serialize_resolvers(
|
||||
int r;
|
||||
|
||||
r = sd_dhcp_lease_get_dnr(lease, &resolvers);
|
||||
if (r < 0)
|
||||
return (void) log_debug_errno(r, "Failed to get DNR from DHCP lease, ignoring: %m");
|
||||
if (r < 0 && r != -ENODATA)
|
||||
log_warning_errno(r, "Failed to get DNR from DHCP lease, ignoring: %m");
|
||||
|
||||
r = dns_resolvers_to_dot_strv(resolvers, r, &names);
|
||||
if (r < 0)
|
||||
return (void) log_warning_errno(r, "Failed to get DoT servers from DHCP DNR, ignoring: %m");
|
||||
if (r > 0)
|
||||
fputstrv(f, names, NULL, space);
|
||||
if (r > 0) {
|
||||
r = dns_resolvers_to_dot_strv(resolvers, r, &names);
|
||||
if (r < 0)
|
||||
return (void) log_warning_errno(r, "Failed to get DoT servers from DHCP DNR, ignoring: %m");
|
||||
if (r > 0)
|
||||
fputstrv(f, names, NULL, space);
|
||||
}
|
||||
}
|
||||
|
||||
if (lease6 && conditional6) {
|
||||
@ -616,14 +618,16 @@ static void serialize_resolvers(
|
||||
int r;
|
||||
|
||||
r = sd_dhcp6_lease_get_dnr(lease6, &resolvers);
|
||||
if (r < 0)
|
||||
return (void) log_debug_errno(r, "Failed to get DNR from DHCPv6 lease, ignoring: %m");
|
||||
if (r < 0 && r != -ENODATA)
|
||||
log_warning_errno(r, "Failed to get DNR from DHCPv6 lease, ignoring: %m");
|
||||
|
||||
r = dns_resolvers_to_dot_strv(resolvers, r, &names);
|
||||
if (r < 0)
|
||||
return (void) log_warning_errno(r, "Failed to get DoT servers from DHCPv6 DNR, ignoring: %m");
|
||||
if (r > 0)
|
||||
fputstrv(f, names, NULL, space);
|
||||
if (r > 0) {
|
||||
r = dns_resolvers_to_dot_strv(resolvers, r, &names);
|
||||
if (r < 0)
|
||||
return (void) log_warning_errno(r, "Failed to get DoT servers from DHCPv6 DNR, ignoring: %m");
|
||||
if (r > 0)
|
||||
fputstrv(f, names, NULL, space);
|
||||
}
|
||||
}
|
||||
|
||||
if (lvalue)
|
||||
|
Loading…
x
Reference in New Issue
Block a user