Send hostname as part of DHCP request.

This is based on a previous patch by Roberto Santalla Fernández.

A new config is introduced into the network config file under IPv4
called SendHostname. If this is set to true then we add the hostname
into all DHCP requests. The default is false.
This commit is contained in:
Michael Johnson 2021-06-18 18:40:46 +01:00 committed by Denis Kenzior
parent 19e5cc9b0d
commit b6236255d2
2 changed files with 22 additions and 0 deletions

View File

@ -322,6 +322,12 @@ network configuration with the static addresses.
`optional`. DomainName setting can be used to override the DomainName
value obtained from the DHCP server.
* - SendHostname
- Values: true, **false**
Configures DHCP to include the hostname in the request. This setting
is disabled by default.
The group ``[IPv6]`` contains settings for Internet Protocol version 6 (IPv6)
network configuration.

View File

@ -1004,6 +1004,8 @@ bool netconfig_configure(struct netconfig *netconfig,
netconfig_notify_func_t notify, void *user_data)
{
char *mdns;
char hostname[HOST_NAME_MAX + 1];
bool send_hostname;
netconfig->dns4_overrides = l_settings_get_string_list(active_settings,
"IPv4", "DNS", ' ');
@ -1044,6 +1046,20 @@ bool netconfig_configure(struct netconfig *netconfig,
l_dhcp6_client_set_address(netconfig->dhcp6_client, ARPHRD_ETHER,
mac_address, ETH_ALEN);
if (!l_settings_get_bool(active_settings,
"IPv4", "SendHostname", &send_hostname))
send_hostname = false;
if (send_hostname) {
if (gethostname(hostname, sizeof(hostname)) == 0) {
l_dhcp_client_set_hostname(
netconfig->dhcp_client, hostname);
} else {
l_warn("netconfig: Unable to get hostname. "
"Error %d: %s", errno, strerror(errno));
}
}
netconfig_ipv4_select_and_install(netconfig);
netconfig_ipv6_select_and_install(netconfig);