mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-22 22:03:43 +03:00
network/dhcp6: set hostname even if UseAddress=no
Follow-up for f963f8953daeab03b892616ce0c65f7572932187 and 1536b7b2d00819615bf8eba194de7ccd20c3689f. (cherry picked from commit 8fead9c9e46e5f71ae6f6b038ff7f72c5a13b663) (cherry picked from commit 30cf66855b6e31e7de2bff6d79d5c2d9fc17d684) (cherry picked from commit f4189fdd1de998703feb9ca221b700fdaee5cd31)
This commit is contained in:
parent
4b21746e21
commit
51ed671255
@ -268,25 +268,35 @@ static int dhcp6_address_acquired(Link *link) {
|
||||
return r;
|
||||
}
|
||||
|
||||
if (link->network->dhcp6_use_hostname) {
|
||||
const char *dhcpname = NULL;
|
||||
_cleanup_free_ char *hostname = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
(void) sd_dhcp6_lease_get_fqdn(link->dhcp6_lease, &dhcpname);
|
||||
static int dhcp6_request_hostname(Link *link) {
|
||||
_cleanup_free_ char *hostname = NULL;
|
||||
const char *dhcpname = NULL;
|
||||
int r;
|
||||
|
||||
if (dhcpname) {
|
||||
r = shorten_overlong(dhcpname, &hostname);
|
||||
if (r < 0)
|
||||
log_link_warning_errno(link, r, "Unable to shorten overlong DHCP hostname '%s', ignoring: %m", dhcpname);
|
||||
if (r == 1)
|
||||
log_link_notice(link, "Overlong DHCP hostname received, shortened from '%s' to '%s'", dhcpname, hostname);
|
||||
}
|
||||
if (hostname) {
|
||||
r = manager_set_hostname(link->manager, hostname);
|
||||
if (r < 0)
|
||||
log_link_error_errno(link, r, "Failed to set transient hostname to '%s': %m", hostname);
|
||||
}
|
||||
}
|
||||
assert(link);
|
||||
assert(link->network);
|
||||
|
||||
if (!link->network->dhcp6_use_hostname)
|
||||
return 0;
|
||||
|
||||
r = sd_dhcp6_lease_get_fqdn(link->dhcp6_lease, &dhcpname);
|
||||
if (r == -ENODATA)
|
||||
return 0;
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = shorten_overlong(dhcpname, &hostname);
|
||||
if (r < 0)
|
||||
return log_link_warning_errno(link, r, "Unable to shorten overlong DHCP hostname '%s': %m", dhcpname);
|
||||
if (r == 1)
|
||||
log_link_notice(link, "Overlong DHCP hostname received, shortened from '%s' to '%s'", dhcpname, hostname);
|
||||
|
||||
r = manager_set_hostname(link->manager, hostname);
|
||||
if (r < 0)
|
||||
log_link_warning_errno(link, r, "Failed to set transient hostname to '%s', ignoring: %m", hostname);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -306,6 +316,10 @@ static int dhcp6_lease_ip_acquired(sd_dhcp6_client *client, Link *link) {
|
||||
lease_old = TAKE_PTR(link->dhcp6_lease);
|
||||
link->dhcp6_lease = sd_dhcp6_lease_ref(lease);
|
||||
|
||||
r = dhcp6_request_hostname(link);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = dhcp6_address_acquired(link);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
Loading…
x
Reference in New Issue
Block a user