From c6a1ccca4fe5c42e2a435e5335c701c112242bd0 Mon Sep 17 00:00:00 2001 From: nl6720 Date: Fri, 9 Jul 2021 17:01:57 +0300 Subject: configs/releng/airootfs/etc/systemd/network/: move RouteMetric= from [DHCPv6] to [IPv6AcceptRA] systemd moved the option. See https://github.com/systemd/systemd/commit/8ebafba9f987c21aa5787c8767f2e390b4ec0bc5 . Implements #123. Document in comments why the route metrics need to be set (because of https://github.com/systemd/systemd/issues/17698 ) and use the same metric values as NetworkManager. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/blob/main/src/core/devices/nm-device.c Additionally remove RouteMetric from configs/baseline/airootfs/etc/systemd/network/20-ethernet.network. There is only one networkd configuration file in baseline, meaning, there are no other routes. --- .../baseline/airootfs/etc/systemd/network/20-ethernet.network | 3 --- .../releng/airootfs/etc/systemd/network/20-ethernet.network | 11 ++++++++--- configs/releng/airootfs/etc/systemd/network/20-wlan.network | 11 ++++++++--- configs/releng/airootfs/etc/systemd/network/20-wwan.network | 11 ++++++++--- 4 files changed, 24 insertions(+), 12 deletions(-) (limited to 'configs') diff --git a/configs/baseline/airootfs/etc/systemd/network/20-ethernet.network b/configs/baseline/airootfs/etc/systemd/network/20-ethernet.network index efa309c..9157e96 100644 --- a/configs/baseline/airootfs/etc/systemd/network/20-ethernet.network +++ b/configs/baseline/airootfs/etc/systemd/network/20-ethernet.network @@ -8,6 +8,3 @@ Name=eth* [Network] DHCP=yes IPv6PrivacyExtensions=yes - -[DHCP] -RouteMetric=512 diff --git a/configs/releng/airootfs/etc/systemd/network/20-ethernet.network b/configs/releng/airootfs/etc/systemd/network/20-ethernet.network index 142c591..88662a4 100644 --- a/configs/releng/airootfs/etc/systemd/network/20-ethernet.network +++ b/configs/releng/airootfs/etc/systemd/network/20-ethernet.network @@ -9,8 +9,13 @@ Name=eth* DHCP=yes IPv6PrivacyExtensions=yes +# systemd-networkd does not set per-interface-type default route metrics +# https://github.com/systemd/systemd/issues/17698 +# Explicitly set route metric, so that Ethernet is preferred over Wi-Fi and Wi-Fi is preferred over mobile broadband. +# Use values from NetworkManager. From nm_device_get_route_metric_default in +# https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/blob/main/src/core/devices/nm-device.c [DHCPv4] -RouteMetric=512 +RouteMetric=100 -[DHCPv6] -RouteMetric=512 +[IPv6AcceptRA] +RouteMetric=100 diff --git a/configs/releng/airootfs/etc/systemd/network/20-wlan.network b/configs/releng/airootfs/etc/systemd/network/20-wlan.network index c164666..6bbd7ed 100644 --- a/configs/releng/airootfs/etc/systemd/network/20-wlan.network +++ b/configs/releng/airootfs/etc/systemd/network/20-wlan.network @@ -8,8 +8,13 @@ Name=wl* DHCP=yes IPv6PrivacyExtensions=yes +# systemd-networkd does not set per-interface-type default route metrics +# https://github.com/systemd/systemd/issues/17698 +# Explicitly set route metric, so that Ethernet is preferred over Wi-Fi and Wi-Fi is preferred over mobile broadband. +# Use values from NetworkManager. From nm_device_get_route_metric_default in +# https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/blob/main/src/core/devices/nm-device.c [DHCPv4] -RouteMetric=1024 +RouteMetric=600 -[DHCPv6] -RouteMetric=1024 +[IPv6AcceptRA] +RouteMetric=600 diff --git a/configs/releng/airootfs/etc/systemd/network/20-wwan.network b/configs/releng/airootfs/etc/systemd/network/20-wwan.network index 7fba35b..d57cb0f 100644 --- a/configs/releng/airootfs/etc/systemd/network/20-wwan.network +++ b/configs/releng/airootfs/etc/systemd/network/20-wwan.network @@ -8,8 +8,13 @@ Name=ww* DHCP=yes IPv6PrivacyExtensions=yes +# systemd-networkd does not set per-interface-type default route metrics +# https://github.com/systemd/systemd/issues/17698 +# Explicitly set route metric, so that Ethernet is preferred over Wi-Fi and Wi-Fi is preferred over mobile broadband. +# Use values from NetworkManager. From nm_device_get_route_metric_default in +# https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/blob/main/src/core/devices/nm-device.c [DHCPv4] -RouteMetric=2048 +RouteMetric=700 -[DHCPv6] -RouteMetric=2048 +[IPv6AcceptRA] +RouteMetric=700 -- cgit v1.2.3-70-g09d2 From 8fa110e9d71efef57a4d843e54bdff2fe3085e26 Mon Sep 17 00:00:00 2001 From: nl6720 Date: Sun, 11 Jul 2021 17:15:23 +0300 Subject: configs/*/airootfs/etc/systemd/system/systemd-networkd-wait-online.service.d/wait-for-only-one-interface.conf: document why the drop-in file exists Related to #142. Add missing `ExecStart=` to baseline's /etc/systemd/system/systemd-networkd-wait-online.service.d/wait-for-only-one-interface.conf. --- .../wait-for-only-one-interface.conf | 4 ++++ .../wait-for-only-one-interface.conf | 3 +++ 2 files changed, 7 insertions(+) (limited to 'configs') diff --git a/configs/baseline/airootfs/etc/systemd/system/systemd-networkd-wait-online.service.d/wait-for-only-one-interface.conf b/configs/baseline/airootfs/etc/systemd/system/systemd-networkd-wait-online.service.d/wait-for-only-one-interface.conf index a4d7442..191db81 100644 --- a/configs/baseline/airootfs/etc/systemd/system/systemd-networkd-wait-online.service.d/wait-for-only-one-interface.conf +++ b/configs/baseline/airootfs/etc/systemd/system/systemd-networkd-wait-online.service.d/wait-for-only-one-interface.conf @@ -1,5 +1,9 @@ # # SPDX-License-Identifier: GPL-3.0-or-later +# Allow systemd-networkd-wait-online to succeed with one interface, otherwise, if multiple network interfaces exist, +# network-online.target gets needlessly delayed. +# See https://wiki.archlinux.org/title/systemd-networkd#systemd-networkd-wait-online [Service] +ExecStart= ExecStart=/usr/lib/systemd/systemd-networkd-wait-online --any diff --git a/configs/releng/airootfs/etc/systemd/system/systemd-networkd-wait-online.service.d/wait-for-only-one-interface.conf b/configs/releng/airootfs/etc/systemd/system/systemd-networkd-wait-online.service.d/wait-for-only-one-interface.conf index 1b4c091..191db81 100644 --- a/configs/releng/airootfs/etc/systemd/system/systemd-networkd-wait-online.service.d/wait-for-only-one-interface.conf +++ b/configs/releng/airootfs/etc/systemd/system/systemd-networkd-wait-online.service.d/wait-for-only-one-interface.conf @@ -1,6 +1,9 @@ # # SPDX-License-Identifier: GPL-3.0-or-later +# Allow systemd-networkd-wait-online to succeed with one interface, otherwise, if multiple network interfaces exist, +# network-online.target gets needlessly delayed. +# See https://wiki.archlinux.org/title/systemd-networkd#systemd-networkd-wait-online [Service] ExecStart= ExecStart=/usr/lib/systemd/systemd-networkd-wait-online --any -- cgit v1.2.3-70-g09d2