Commit Graph

236 Commits

Author SHA1 Message Date
Will Fancher
bcd1d9cf54
Merge pull request #312755 from tomfitzhenry/systemd-dhcp108
nixos/networkd: allow IPv6OnlyPreferredSec in networkd.conf
2024-08-12 19:19:34 -04:00
František Hanzlík
8b4cd01f90
nixos/networkd: allow specifying FirewallMark mask 2024-08-01 22:22:01 +02:00
nikstur
d4a80b6d0c systemd: 255.6 -> 256.2 2024-07-21 06:31:37 -04:00
Franz Pletz
aa8c9e6f2d
Merge pull request #317642 from melvyn2/systemd-networkd-network-options 2024-07-04 20:21:37 +02:00
Franz Pletz
a1ecdd6b1a
Merge pull request #276135 from nbdd0121/netdev 2024-07-04 18:35:15 +02:00
Jared Baur
b867cc215f
nixos/systemd-networkd: add PREF64 related options 2024-06-09 20:41:32 -07:00
melvyn
d4f459fa89
nixos/networkd: add new Network section options
Adds IPv4LLStartAddress, IPv4ReversePathFilter, IPv4ReversePathFilter, IPv4RouteLocalnet, and IPv4RouteLocalnet
2024-06-05 21:45:03 -07:00
Maximilian Bosch
c4fd7cf16d
nixos/networkd: get rid of *Config attributes in lists
This patch is about removing `wireguardPeerConfig`,
`dhcpServerStaticLeaseConfig` - a.k.a. the
AbstractSingletonProxyFactoryBean of nixpkgs - and friends.

As a former colleague said

> worst abstraction ever

I second that. I've written enough networkd config for NixOS systems so
far to have a strong dislike. In fact, these don't even make sense:
`netdevs.wireguardPeers._.wireguardPeerConfig` will be rendered into
the key `[WireGuardPeer]` and every key from `wireguardPeerConfig` is in
there. Since it's INI, there's no place where sections on the same level
as wireguardPeerConfig fit into. Hence, get rid of it all.

For the transition, using the old way is still allowed, but gives a
warning. I think we could drop this after one release.

The tests of rosenpass and systemd-networkd-dhcpserver-static-leases
were broken on the rev before, hence they were updated, but are still
not building.
2024-05-20 17:26:42 +02:00
Tom Fitzhenry
535ceaaa0e nixos/networkd: allow IPv6OnlyPreferredSec in networkd.conf
https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html#IPv6OnlyPreferredSec=

https://datatracker.ietf.org/doc/html/rfc8925
2024-05-19 10:09:14 +10:00
Ivan Trubach
37a3ad0c01 nixos/networkd: allow IPv6PrivacyExtensions in networkd.conf
This change adds support for setting IPv6PrivacyExtensions= in
systemd.network.config.networkConfig.

https://www.freedesktop.org/software/systemd/man/latest/networkd.conf.html#IPv6PrivacyExtensions=

Added in systemd version 254.
2024-04-26 10:30:19 +03:00
Astrid Yu
ed854ed0e3 nixos/networkd: add [Bridge] section to netdev conf
This setting was missing from netdev.

This commit additionally adds a test using the new
section, ensuring that STP can be enabled.
2024-04-14 15:16:44 -07:00
stuebinm
6afb255d97 nixos: remove all uses of lib.mdDoc
these changes were generated with nixq 0.0.2, by running

  nixq ">> lib.mdDoc[remove] Argument[keep]" --batchmode nixos/**.nix
  nixq ">> mdDoc[remove] Argument[keep]" --batchmode nixos/**.nix
  nixq ">> Inherit >> mdDoc[remove]" --batchmode nixos/**.nix

two mentions of the mdDoc function remain in nixos/, both of which
are inside of comments.

Since lib.mdDoc is already defined as just id, this commit is a no-op as
far as Nix (and the built manual) is concerned.
2024-04-13 10:07:35 -07:00
Will Fancher
486e837cbe
Merge pull request #293710 from B4dM4n/networkd-policy-rule-port-range
nixos/networkd: allow RoutingPolicyRule port ranges
2024-03-17 12:36:30 -07:00
r-vdp
4c26c97d21
nixos/networkd: add missing UseGateway key in the DHCPv4 section 2024-03-08 10:54:03 +01:00
Fabian Möller
f753e58e6e
nixos/networkd: allow RoutingPolicyRule port ranges
Linux and Systemd allow port ranges to be used in routing policy rules.

https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html#SourcePort=
2024-03-06 09:11:54 +01:00
Philip Taron
27d6c242ea
nixos/networkd: accept true and false in addition to "yes" and "no" for DHCP= and LinkLocalAddressing=
These were the only two systemd configuration values that were missing the `boolValues ++` treatment, according to my `rg` through the codebase.
2024-02-27 08:53:32 -08:00
Nick Cao
0850ee016b
nixos/networkd: drop upstreamed stage-1 unit dependencies
Reference: https://github.com/systemd/systemd/pull/27791
2024-01-31 22:52:52 -05:00
Gary Guo
39ae2babce nixos/networkd: allow KeepCarrier in tunConfig and tapConfig
This is added in systemd.netdev in 252, see
https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html#KeepCarrier=
2023-12-22 20:29:18 +00:00
jpathy
0225a786e5
nixos/networkd: allow IPv6LinkLocalAddressGenerationMode in networkConfig
Fixes: #199407 .
2023-12-17 19:39:59 +01:00
Christoph Heiss
4e08f16893
nixos/networkd: fix manpage for WireGuardPeer config
Signed-off-by: Christoph Heiss <christoph@c8h4.io>
2023-11-26 00:43:55 +01:00
Patrick Steinhardt
a8617e2b0d nixos/networkd: allow configuring AckFilter for CAKE qdisc
The CAKE section for systemd.network units allows configuring whether or
not redundant ACKs should be dropped. This option corresponds to the
respective tc-cake(8) params "ack-filter", "ack-filter-aggressive" or
"no-ack-filter".

Add support for these values in the `cakeConfig` module so that users
can configure it.
2023-11-19 03:40:51 +11:00
Philip Taron
bc7a939ced nixos/networkd: add [IPVLAN] and [IPVTAP] configuration options to systemd.netdev files
[IPVLAN](https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html#%5BIPVLAN%5D%20Section%20Options)
[IPVTAP](https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html#%5BIPVTAP%5D%20Section%20Options)
2023-11-18 08:43:21 +01:00
Philip Taron
7686f24675 nixos/networkd: add ipvtap kind to netdev and IPVTAP= to network
From `man systemd.netdev`: https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html#Supported%20netdev%20kinds

From `man systemd.network`: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html#IPoIB=
2023-11-18 08:43:21 +01:00
April Schleck
13956f7f1f nixos/networkd: fix typoed hairpin option name
You can see in https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html that
this should be "HairPin" not "Hairpin". Using "Hairpin" results in

```
Oct 25 18:55:03 my-host systemd-networkd[843736]: /etc/systemd/network/10-bridge.network:11:
    Unknown key name 'Hairpin' in section 'Bridge', ignoring.
```
2023-10-26 10:26:04 -07:00
Will Fancher
1a6c2e4837 systemd-stage-1: Improve udhcpc assertion 2023-10-22 09:12:34 -04:00
Philip Taron
173a3a25f0
Remove restriction on PhysicalDevice being int; reformat and document the Type field 2023-10-17 09:43:37 -07:00
Philip Taron
989cca26c4
systemd.network.netdev: Add support for WLAN devices
These are virtual interface, where one physical wifi adapter can have
more than one interface.

See https://systemd.network/systemd.netdev.html#%5BWLAN%5D%20Section%20Options
and dedf2d0054
2023-10-16 15:04:44 -07:00
Florian Klink
7239f0198e
Merge pull request #258920 from ElvishJerricco/systemd-stage-1-full-build
systemd-stage-1: Default to full systemd build.
2023-10-04 12:02:36 +03:00
Florian Klink
42f2e2dadd
Merge pull request #257510 from ign0tus/fix/wake-on-lan-policy
Fix: WakeOnLan policy
2023-10-04 11:36:16 +03:00
Will Fancher
710b96b191 systemd-stage-1: Default to full systemd build. 2023-10-04 04:21:35 -04:00
Florian Klink
d89aa11c89
Merge pull request #258345 from lf-/jade/wait-for-online
nixos/networkd: fix wait-online on networking.useDHCP default configuration
2023-10-04 10:58:14 +03:00
Will Fancher
37601de942
Merge pull request #237154 from ElvishJerricco/sd-s1-networkd-flush-with-keep-configuration
systemd stage 1 networking: Use KeepConfiguration
2023-10-03 23:37:03 -04:00
Jade Lovelace
28ab2b278d nixos/networkd: make wait-online not time out
A further bug to our strange multi-user.target depending on
network-online.target issue is that systemd recently changed the
behaviour of systemd-networkd-wait-online to no longer consider the
absence of interfaces with RequiredForOnline to be sufficient to be
online: https://github.com/systemd/systemd/pull/27825

On the advice of the systemd developers
(https://github.com/systemd/systemd/issues/29388), this commit changes
the configuration of systemd-networkd-wait-online to pass --any by
default, and lets the default DHCP interfaces be RequiredForOnline
as they would be by default if the option is omitted.

It is plausible that systemd-networkd-wait-online may still fail if
there are no interfaces at all. However, that probably cannot be
avoided.
2023-10-02 14:47:21 -07:00
Ryan Lahfa
3c3ef90189
Merge pull request #242191 from tie/systemd-required-for-online-range 2023-09-30 01:16:21 +02:00
ign0tus
237f7ba7d2 networkd: Allow combinations of WakeOnLan policies
To comply with the systemd.link WakeOnLan[^1] specification, the option
"off" and all other possible policy combinations must be allowed.

[^1]: https://www.freedesktop.org/software/systemd/man/systemd.link.html#WakeOnLan=
2023-09-28 17:04:35 +02:00
Ryan Lahfa
12eb1e5d28
Merge pull request #249412 from JTarasovic/jdt/systemd-networkd/ipv6-assign-prefix 2023-09-27 18:39:00 +02:00
Ryan Lahfa
cb403e56a6
Merge pull request #249386 from JTarasovic/jdt/systemd-networkd/dhcpv6config 2023-09-27 18:38:16 +02:00
Maciej Krüger
78e149fba3
Merge pull request #244722 from mdlayher/mdl-dhcp 2023-09-11 21:12:56 +02:00
Andrew Marshall
3f9cc71228 nixos/networkd: Fix incorrectly treating attrset as list
This reverses a [change made during PR review][1] that I did not sufficiently
test, causing [this error][2].

[1]: https://github.com/NixOS/nixpkgs/pull/249643#discussion_r1309151135
[2]: https://github.com/NixOS/nixpkgs/pull/249643#issuecomment-1712707336
2023-09-10 00:54:42 -04:00
Ivan Trubach
bc644aee70 nixos/networkd: allow state ranges in RequiredForOnline
RequiredForOnline takes a boolean or a minimum operational state and an
optional maximum operational state. In the latter case, range values are
separated with colon.
2023-09-04 20:38:54 +03:00
Andrew Marshall
189b14246a nixos/networkd: Reload (not restart) when only .network units change
Underneath, systemd-networkd’s reload is just `networkctl reload`. Per
`man networkctl`, calling `reload` is expected to fully handle new,
modified, and removed .network files, but it only handles *new* .netdev
files. For simplicity, assume .network -> reload and .netdev -> restart.

It’s desirable to perform reload instead of restart, as restart has the
potential to bring down interfaces, resulting in a loss of network
connectivity.
2023-08-31 12:24:17 -04:00
Jason Tarasovic
fb59bf8a6d
systemd-networkd: add option to assign ipv6 prefix 2023-08-15 17:47:51 -05:00
Jason Tarasovic
521944571a
systemd-networkd: add dhcpv6Config options 2023-08-15 15:23:57 -05:00
Matt Layher
93efcdac79
nixos/networkd: add DHCPServer PXE boot options
Signed-off-by: Matt Layher <mdlayher@gmail.com>
2023-07-21 16:59:21 -04:00
Florian Klink
8f15fe7914
Merge pull request #241370 from RaitoBezarius/vxlan-independent
nixos/networkd: support `Independent` flag for VXLAN netdevs
2023-07-19 23:18:54 +03:00
Florian Klink
6f66c57acc
Merge pull request #241365 from RaitoBezarius/macaddrs-netdevs
nixos/networkd: support netdev MAC addresses
2023-07-19 23:03:34 +03:00
K900
8533b23159 nixos/networkd: fix mismerge of #240969 and #241362 2023-07-09 07:34:42 +03:00
Raito Bezarius
6b9e49230d nixos/networkd: add MACVTAP= option for networks
Example 10. of man page of systemd.network(5) shows:
```

       Example 10. MacVTap

       This brings up a network interface "macvtap-test" and attaches it to "enp0s25".

           # /usr/lib/systemd/network/25-macvtap.network
           [Match]
           Name=enp0s25

           [Network]
           MACVTAP=macvtap-test
```

Which is a MACVTAP example and is currently unsupported in NixOS.
This is useful for people using "modern" technologies with virtual machines.
2023-07-08 15:42:10 +02:00
Raito Bezarius
faba775beb nixos/networkd: support Independent flag for VXLAN netdevs
According to networkd netdev's manpage:
```
       Independent=
           Takes a boolean. When true, the vxlan interface is created without any underlying network interface. Defaults to false, which means that a .network
           file that requests this VXLAN interface using VXLAN= is required for the VXLAN to be created.
```

is a valid option for [VXLAN] section.
2023-07-04 01:53:34 +02:00
Raito Bezarius
4d38fa043b nixos/networkd: support netdev MAC addresses
According to systemd.netdev manpage:

```
MACAddress=
           Specifies the MAC address to use for the device, or takes the special value "none". When "none", systemd-networkd does not request the MAC address for
           the device, and the kernel will assign a random MAC address. For "tun", "tap", or "l2tp" devices, the MACAddress= setting in the [NetDev] section is
           not supported and will be ignored. Please specify it in the [Link] section of the corresponding systemd.network(5) file. If this option is not set,
           "vlan" device inherits the MAC address of the master interface. For other kind of netdevs, if this option is not set, then the MAC address is
           generated based on the interface name and the machine-id(5).

           Note, even if "none" is specified, systemd-udevd will assign the persistent MAC address for the device, as 99-default.link has
           MACAddressPolicy=persistent. So, it is also necessary to create a custom .link file for the device, if the MAC address assignment is not desired.
```

Therefore, `none` is an acceptable value.
2023-07-04 01:21:35 +02:00