mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-15 05:59:17 +03:00
nixos/networkd: rename the networkd dhcpConfig option to dhcpV4Config
This follows upstreams change in documentation. While the `[DHCP]` section might still work it is undocumented and we should probably not be using it anymore. Users can just upgrade to the new option without much hassle. I had to create a bit of custom module deprecation code since the usual approach doesn't support wildcards in the path.
This commit is contained in:
parent
bb9b61e2b7
commit
819e8bb35f
3 changed files with 27 additions and 9 deletions
|
@ -300,6 +300,17 @@ environment.systemPackages = [
|
||||||
<manvolnum>5</manvolnum></citerefentry> for details.
|
<manvolnum>5</manvolnum></citerefentry> for details.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
The <literal>systemd-networkd</literal> option
|
||||||
|
<literal>systemd.network.networks._name_.dhcpConfig</literal>
|
||||||
|
has been renamed to
|
||||||
|
<xref linkend="opt-systemd.network.networks._name_.dhcpV4Config"/>
|
||||||
|
following upstream systemd's documentation change.
|
||||||
|
See <citerefentry><refentrytitle>systemd.network</refentrytitle>
|
||||||
|
<manvolnum>5</manvolnum></citerefentry> for details.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -275,13 +275,13 @@ let
|
||||||
])
|
])
|
||||||
];
|
];
|
||||||
|
|
||||||
checkDhcp = checkUnitConfig "DHCP" [
|
checkDhcpV4 = checkUnitConfig "DHCPv4" [
|
||||||
(assertOnlyFields [
|
(assertOnlyFields [
|
||||||
"UseDNS" "RoutesToDNS" "UseNTP" "UseMTU" "Anonymize" "SendHostname" "UseHostname"
|
"UseDNS" "RoutesToDNS" "UseNTP" "UseMTU" "Anonymize" "SendHostname" "UseHostname"
|
||||||
"Hostname" "UseDomains" "UseRoutes" "UseTimezone"
|
"Hostname" "UseDomains" "UseRoutes" "UseTimezone"
|
||||||
"ClientIdentifier" "VendorClassIdentifier" "UserClass" "MaxAttempts"
|
"ClientIdentifier" "VendorClassIdentifier" "UserClass" "MaxAttempts"
|
||||||
"DUIDType" "DUIDRawData" "IAID" "RequestBroadcast" "RouteMetric" "RouteTable"
|
"DUIDType" "DUIDRawData" "IAID" "RequestBroadcast" "RouteMetric" "RouteTable"
|
||||||
"ListenPort" "SendRelease" "RapidCommit"
|
"ListenPort" "SendRelease"
|
||||||
])
|
])
|
||||||
(assertValueOneOf "UseDNS" boolValues)
|
(assertValueOneOf "UseDNS" boolValues)
|
||||||
(assertValueOneOf "RoutesToDNS" boolValues)
|
(assertValueOneOf "RoutesToDNS" boolValues)
|
||||||
|
@ -298,7 +298,6 @@ let
|
||||||
(assertInt "RouteTable")
|
(assertInt "RouteTable")
|
||||||
(assertMinimum "RouteTable" 0)
|
(assertMinimum "RouteTable" 0)
|
||||||
(assertValueOneOf "SendRelease" boolValues)
|
(assertValueOneOf "SendRelease" boolValues)
|
||||||
(assertValueOneOf "RapidCommit" boolValues)
|
|
||||||
];
|
];
|
||||||
|
|
||||||
checkDhcpV6 = checkUnitConfig "DHCPv6" [
|
checkDhcpV6 = checkUnitConfig "DHCPv6" [
|
||||||
|
@ -649,13 +648,20 @@ let
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# systemd.network.networks.*.dhcpConfig has been deprecated in favor of ….dhcpV4Config
|
||||||
|
# Produce a nice warning message so users know it is gone.
|
||||||
dhcpConfig = mkOption {
|
dhcpConfig = mkOption {
|
||||||
|
visible = false;
|
||||||
|
apply = _: throw "The option `systemd.network.networks.*.dhcpConfig` can no longer be used since it's been removed. Please use `systemd.network.networks.*.dhcpV4Config` instead.";
|
||||||
|
};
|
||||||
|
|
||||||
|
dhcpV4Config = mkOption {
|
||||||
default = {};
|
default = {};
|
||||||
example = { UseDNS = true; UseRoutes = true; };
|
example = { UseDNS = true; UseRoutes = true; };
|
||||||
type = types.addCheck (types.attrsOf unitOption) checkDhcp;
|
type = types.addCheck (types.attrsOf unitOption) checkDhcpV4;
|
||||||
description = ''
|
description = ''
|
||||||
Each attribute in this set specifies an option in the
|
Each attribute in this set specifies an option in the
|
||||||
<literal>[DHCP]</literal> section of the unit. See
|
<literal>[DHCPv4]</literal> section of the unit. See
|
||||||
<citerefentry><refentrytitle>systemd.network</refentrytitle>
|
<citerefentry><refentrytitle>systemd.network</refentrytitle>
|
||||||
<manvolnum>5</manvolnum></citerefentry> for details.
|
<manvolnum>5</manvolnum></citerefentry> for details.
|
||||||
'';
|
'';
|
||||||
|
@ -998,9 +1004,9 @@ let
|
||||||
${concatStringsSep "\n" (map (s: "Tunnel=${s}") def.tunnel)}
|
${concatStringsSep "\n" (map (s: "Tunnel=${s}") def.tunnel)}
|
||||||
${concatStringsSep "\n" (map (s: "Xfrm=${s}") def.xfrm)}
|
${concatStringsSep "\n" (map (s: "Xfrm=${s}") def.xfrm)}
|
||||||
|
|
||||||
${optionalString (def.dhcpConfig != { }) ''
|
${optionalString (def.dhcpV4Config != { }) ''
|
||||||
[DHCP]
|
[DHCPv4]
|
||||||
${attrsToSection def.dhcpConfig}
|
${attrsToSection def.dhcpV4Config}
|
||||||
|
|
||||||
''}
|
''}
|
||||||
${optionalString (def.dhcpV6Config != {}) ''
|
${optionalString (def.dhcpV6Config != {}) ''
|
||||||
|
@ -1084,6 +1090,7 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkMerge [
|
config = mkMerge [
|
||||||
|
|
||||||
# .link units are honored by udev, no matter if systemd-networkd is enabled or not.
|
# .link units are honored by udev, no matter if systemd-networkd is enabled or not.
|
||||||
{
|
{
|
||||||
systemd.network.units = mapAttrs' (n: v: nameValuePair "${n}.link" (linkToUnit n v)) cfg.links;
|
systemd.network.units = mapAttrs' (n: v: nameValuePair "${n}.link" (linkToUnit n v)) cfg.links;
|
||||||
|
|
|
@ -546,7 +546,7 @@ in
|
||||||
|
|
||||||
Note that this option might require to do some adjustments to the container configuration,
|
Note that this option might require to do some adjustments to the container configuration,
|
||||||
e.g. you might want to set
|
e.g. you might want to set
|
||||||
<varname>systemd.network.networks.$interface.dhcpConfig.ClientIdentifier</varname> to "mac"
|
<varname>systemd.network.networks.$interface.dhcpV4Config.ClientIdentifier</varname> to "mac"
|
||||||
if you use <varname>macvlans</varname> option.
|
if you use <varname>macvlans</varname> option.
|
||||||
This way dhcp client identifier will be stable between the container restarts.
|
This way dhcp client identifier will be stable between the container restarts.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue