</listitem>
</varlistentry>
+ <varlistentry>
+ <term><varname>UseFQDN=</varname></term>
+ <listitem>
+ <para>Equivalent of <varname>UseHostname=</varname> in the [DHCPv4] section.</para>
+ </listitem>
+ </varlistentry>
+
<varlistentry>
<term><varname>RouteMetric=</varname></term>
<listitem>
#include "escape.h"
#include "hashmap.h"
+#include "hostname-setup.h"
#include "hostname-util.h"
#include "missing_network.h"
#include "networkd-address.h"
return r;
}
+ if (link->network->dhcp6_use_fqdn) {
+ const char *dhcpname = NULL;
+ _cleanup_free_ char *hostname = NULL;
+ (void) sd_dhcp6_lease_get_fqdn(link->dhcp6_lease, &dhcpname);
+
+ 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);
+ }
+ }
+
return 0;
}
DHCPv4.FallbackLeaseLifetimeSec, config_parse_dhcp_fallback_lease_lifetime, 0, 0
DHCPv6.UseAddress, config_parse_bool, 0, offsetof(Network, dhcp6_use_address)
DHCPv6.UseDNS, config_parse_dhcp_use_dns, 0, 0
+DHCPv6.UseFQDN, config_parse_bool, 0, offsetof(Network, dhcp6_use_fqdn)
DHCPv6.UseNTP, config_parse_dhcp_use_ntp, 0, 0
DHCPv6.RapidCommit, config_parse_bool, 0, offsetof(Network, dhcp6_rapid_commit)
DHCPv6.MUDURL, config_parse_dhcp6_mud_url, 0, 0
.dhcp6_use_address = true,
.dhcp6_use_dns = true,
+ .dhcp6_use_fqdn = true,
.dhcp6_use_ntp = true,
.dhcp6_rapid_commit = true,
.dhcp6_route_metric = DHCP_ROUTE_METRIC,
bool dhcp6_use_address;
bool dhcp6_use_dns;
bool dhcp6_use_dns_set;
+ bool dhcp6_use_fqdn;
bool dhcp6_use_ntp;
bool dhcp6_use_ntp_set;
bool dhcp6_rapid_commit;
UseAddress=
UseNTP=
UseDNS=
+UseFQDN=
RapidCommit=
ForceDHCPv6PDOtherInformation=
PrefixDelegationHint=