1
0
mirror of https://github.com/systemd/systemd.git synced 2025-01-18 10:04:04 +03:00

network: introduce system wide default setting for DHCPv4 client ID

Typically, the same client identifier setting is used for all
interfaces. Hence, better to provide the system-wide setting to specify
the client identifier.
This commit is contained in:
Yu Watanabe 2024-12-30 10:16:37 +09:00
parent f1dbc4f8cc
commit 7bbe9ad796
7 changed files with 24 additions and 3 deletions

View File

@ -256,6 +256,20 @@
<para>The following options are understood:</para>
<variablelist class='network-directives'>
<varlistentry>
<term><varname>ClientIdentifier=</varname></term>
<listitem>
<para>Specifies the default DHCPv4 client identifier to be used. Takes one of <option>mac</option>
or <option>duid</option>. If set to <option>mac</option>, the MAC address of each link will be used.
If set to <option>duid</option>, an RFC4361-compliant Client ID, which is the combination of IAID
and DUID, is used. IAID can be configured by <varname>IAID=</varname> in each matching
<filename>.network</filename> file. DUID can be configured by <varname>DUIDType=</varname> and
<varname>DUIDRawData=</varname>. Defaults to <option>duid</option>.</para>
<xi:include href="version-info.xml" xpointer="v258"/>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>DUIDType=</varname></term>
<listitem><para>Specifies how the DUID should be generated. See

View File

@ -2371,8 +2371,11 @@ NFTSet=prefix:netdev:filter:eth_ipv4_prefix</programlisting>
<option>duid</option>. If set to <option>mac</option>, the MAC address of the link is used. If set
to <option>duid</option>, an RFC4361-compliant Client ID, which is the combination of IAID and
DUID, is used. IAID can be configured by <varname>IAID=</varname>. DUID can be configured by
<varname>DUIDType=</varname> and <varname>DUIDRawData=</varname>. Defaults to
<option>duid</option>.</para>
<varname>DUIDType=</varname> and <varname>DUIDRawData=</varname>. When
<varname>Anonymize=</varname> is enabled, <option>mac</option> is unconditionally used and the
specified value will be ignored. When unspecified, the value specified in the same setting in
<citerefentry><refentrytitle>networkd.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
will be used.</para>
<xi:include href="version-info.xml" xpointer="v220"/>
</listitem>

View File

@ -52,7 +52,7 @@ void network_adjust_dhcp4(Network *network) {
}
if (network->dhcp_client_identifier < 0)
network->dhcp_client_identifier = network->dhcp_anonymize ? DHCP_CLIENT_ID_MAC : DHCP_CLIENT_ID_DUID;
network->dhcp_client_identifier = network->dhcp_anonymize ? DHCP_CLIENT_ID_MAC : network->manager->dhcp_client_identifier;
/* By default, RapidCommit= is enabled when Anonymize=no and neither AllowList= nor DenyList= is specified. */
if (network->dhcp_use_rapid_commit < 0)

View File

@ -37,6 +37,7 @@ IPv6AcceptRA.UseDomains, config_parse_use_domains,
IPv6AddressLabel.Prefix, config_parse_ipv6_address_label_section, IPV6_ADDRESS_LABEL_BY_MANAGER | IPV6_ADDRESS_LABEL_PREFIX, 0
IPv6AddressLabel.Label, config_parse_ipv6_address_label_section, IPV6_ADDRESS_LABEL_BY_MANAGER | IPV6_ADDRESS_LABEL, 0
DHCPv4.UseDomains, config_parse_use_domains, 0, offsetof(Manager, dhcp_use_domains)
DHCPv4.ClientIdentifier, config_parse_dhcp_client_identifier, 0, offsetof(Manager, dhcp_client_identifier)
DHCPv4.DUIDType, config_parse_duid_type, 0, offsetof(Manager, dhcp_duid)
DHCPv4.DUIDRawData, config_parse_duid_rawdata, 0, offsetof(Manager, dhcp_duid)
DHCPv6.UseDomains, config_parse_use_domains, 0, offsetof(Manager, dhcp6_use_domains)

View File

@ -647,6 +647,7 @@ int manager_new(Manager **ret, bool test_mode) {
.dhcp_use_domains = _USE_DOMAINS_INVALID,
.dhcp6_use_domains = _USE_DOMAINS_INVALID,
.ndisc_use_domains = _USE_DOMAINS_INVALID,
.dhcp_client_identifier = DHCP_CLIENT_ID_DUID,
.dhcp_duid.type = DUID_TYPE_EN,
.dhcp6_duid.type = DUID_TYPE_EN,
.duid_product_uuid.type = DUID_TYPE_UUID,

View File

@ -78,6 +78,7 @@ struct Manager {
UseDomains dhcp6_use_domains;
UseDomains ndisc_use_domains;
DHCPClientIdentifier dhcp_client_identifier;
DUID dhcp_duid;
DUID dhcp6_duid;
DUID duid_product_uuid;

View File

@ -36,6 +36,7 @@
#UseDomains=
[DHCPv4]
#ClientIdentifier=duid
#DUIDType=vendor
#DUIDRawData=
#UseDomains=