From bae0bd0024a349a13aaa260f487b8642b9dc6ea1 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 2 Nov 2023 13:18:45 +0900 Subject: [PATCH 1/7] meson: install newly added example .network file Follow-up for e6ba085398866ab05511fe748b8e9f7cbe85148e. --- network/meson.build | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/network/meson.build b/network/meson.build index b6745298f6..e44779ad26 100644 --- a/network/meson.build +++ b/network/meson.build @@ -1,17 +1,19 @@ # SPDX-License-Identifier: LGPL-2.1-or-later if conf.get('ENABLE_NETWORKD') == 1 - install_data('80-6rd-tunnel.network', - '80-container-host0.network', - '80-container-vb.network', - '80-container-ve.network', - '80-container-vz.network', - '80-ethernet.network.example', - '80-vm-vt.network', - '80-wifi-adhoc.network', - '80-wifi-ap.network.example', - '80-wifi-station.network.example', - install_dir : networkdir) + install_data( + '80-6rd-tunnel.network', + '80-auto-link-local.network.example', + '80-container-host0.network', + '80-container-vb.network', + '80-container-ve.network', + '80-container-vz.network', + '80-ethernet.network.example', + '80-vm-vt.network', + '80-wifi-adhoc.network', + '80-wifi-ap.network.example', + '80-wifi-station.network.example', + install_dir : networkdir) if install_sysconfdir install_emptydir(sysconfdir / 'systemd/network') From 71164ee9fe1abf649ced47a9df7119ff1bc4eec7 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 2 Nov 2023 13:29:45 +0900 Subject: [PATCH 2/7] network: disable IPv6AcceptRA= in several default config Also, - drop DHCP=no, as it is the default setting, - enable IPv6SendRA= for wifi access point, - enable MulticastDNS= for wifi adhoc mode. --- network/80-auto-link-local.network.example | 1 - network/80-container-ve.network | 1 + network/80-container-vz.network | 1 + network/80-vm-vt.network | 1 + network/80-wifi-adhoc.network | 2 ++ network/80-wifi-ap.network.example | 2 ++ 6 files changed, 7 insertions(+), 1 deletion(-) diff --git a/network/80-auto-link-local.network.example b/network/80-auto-link-local.network.example index 7f6a14ac41..286b532496 100644 --- a/network/80-auto-link-local.network.example +++ b/network/80-auto-link-local.network.example @@ -16,6 +16,5 @@ Property=ID_NET_AUTO_LINK_LOCAL_ONLY=1 [Network] LinkLocalAddressing=yes -DHCP=no IPv6AcceptRA=no MulticastDNS=yes diff --git a/network/80-container-ve.network b/network/80-container-ve.network index d295d131aa..5e94041be6 100644 --- a/network/80-container-ve.network +++ b/network/80-container-ve.network @@ -27,4 +27,5 @@ DHCPServer=yes IPMasquerade=both LLDP=yes EmitLLDP=customer-bridge +IPv6AcceptRA=no IPv6SendRA=yes diff --git a/network/80-container-vz.network b/network/80-container-vz.network index 7d902e78bd..a8b4d462a0 100644 --- a/network/80-container-vz.network +++ b/network/80-container-vz.network @@ -26,4 +26,5 @@ DHCPServer=yes IPMasquerade=both LLDP=yes EmitLLDP=customer-bridge +IPv6AcceptRA=no IPv6SendRA=yes diff --git a/network/80-vm-vt.network b/network/80-vm-vt.network index 7979871e2c..a58f753cfc 100644 --- a/network/80-vm-vt.network +++ b/network/80-vm-vt.network @@ -26,4 +26,5 @@ DHCPServer=yes IPMasquerade=both LLDP=yes EmitLLDP=customer-bridge +IPv6AcceptRA=no IPv6SendRA=yes diff --git a/network/80-wifi-adhoc.network b/network/80-wifi-adhoc.network index d7a341d018..fd3faca60c 100644 --- a/network/80-wifi-adhoc.network +++ b/network/80-wifi-adhoc.network @@ -17,3 +17,5 @@ WLANInterfaceType=ad-hoc [Network] LinkLocalAddressing=yes +IPv6AcceptRA=no +MulticastDNS=yes diff --git a/network/80-wifi-ap.network.example b/network/80-wifi-ap.network.example index 6ea1024312..09de9192d7 100644 --- a/network/80-wifi-ap.network.example +++ b/network/80-wifi-ap.network.example @@ -17,3 +17,5 @@ WLANInterfaceType=ap Address=0.0.0.0/24 DHCPServer=yes IPMasquerade=both +IPv6AcceptRA=no +IPv6SendRA=yes From b94f59b9d56b1ce6352bda54803f2ee1c503f574 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 2 Nov 2023 13:41:30 +0900 Subject: [PATCH 3/7] network: make generated configs have higher precedence over default configs We use 80- for default .network files. So, the generated files from the kernel command line should have smaller prefix. --- src/network/generator/main.c | 6 +++--- .../{91-default.network => 71-default.network} | 0 .../{90-bridge99.netdev => 70-bridge99.netdev} | 0 .../{90-bridge99.network => 70-bridge99.network} | 0 .../{90-eth0.network => 70-eth0.network} | 0 .../{90-eth1.network => 70-eth1.network} | 0 .../{90-enp3s0.network => 70-enp3s0.network} | 0 7 files changed, 3 insertions(+), 3 deletions(-) rename test/test-network-generator-conversion/test-01-dhcp.expected/{91-default.network => 71-default.network} (100%) rename test/test-network-generator-conversion/test-02-bridge.expected/{90-bridge99.netdev => 70-bridge99.netdev} (100%) rename test/test-network-generator-conversion/test-02-bridge.expected/{90-bridge99.network => 70-bridge99.network} (100%) rename test/test-network-generator-conversion/test-02-bridge.expected/{90-eth0.network => 70-eth0.network} (100%) rename test/test-network-generator-conversion/test-02-bridge.expected/{90-eth1.network => 70-eth1.network} (100%) rename test/test-network-generator-conversion/test-03-issue-14319.expected/{90-enp3s0.network => 70-enp3s0.network} (100%) diff --git a/src/network/generator/main.c b/src/network/generator/main.c index 3456fc4cf8..0439a9d769 100644 --- a/src/network/generator/main.c +++ b/src/network/generator/main.c @@ -33,7 +33,7 @@ static int network_save(Network *network, const char *dest_dir) { if (asprintf(&p, "%s/%s-%s.network", dest_dir, - isempty(network->ifname) ? "91" : "90", + isempty(network->ifname) ? "71" : "70", isempty(network->ifname) ? "default" : network->ifname) < 0) return log_oom(); @@ -59,7 +59,7 @@ static int netdev_save(NetDev *netdev, const char *dest_dir) { netdev_dump(netdev, f); - if (asprintf(&p, "%s/90-%s.netdev", dest_dir, netdev->ifname) < 0) + if (asprintf(&p, "%s/70-%s.netdev", dest_dir, netdev->ifname) < 0) return log_oom(); r = conservative_rename(temp_path, p); @@ -86,7 +86,7 @@ static int link_save(Link *link, const char *dest_dir) { if (asprintf(&p, "%s/%s-%s.link", dest_dir, - !isempty(link->ifname) ? "90" : !hw_addr_is_null(&link->mac) ? "91" : "92", + !isempty(link->ifname) ? "70" : !hw_addr_is_null(&link->mac) ? "71" : "72", link->filename) < 0) return log_oom(); diff --git a/test/test-network-generator-conversion/test-01-dhcp.expected/91-default.network b/test/test-network-generator-conversion/test-01-dhcp.expected/71-default.network similarity index 100% rename from test/test-network-generator-conversion/test-01-dhcp.expected/91-default.network rename to test/test-network-generator-conversion/test-01-dhcp.expected/71-default.network diff --git a/test/test-network-generator-conversion/test-02-bridge.expected/90-bridge99.netdev b/test/test-network-generator-conversion/test-02-bridge.expected/70-bridge99.netdev similarity index 100% rename from test/test-network-generator-conversion/test-02-bridge.expected/90-bridge99.netdev rename to test/test-network-generator-conversion/test-02-bridge.expected/70-bridge99.netdev diff --git a/test/test-network-generator-conversion/test-02-bridge.expected/90-bridge99.network b/test/test-network-generator-conversion/test-02-bridge.expected/70-bridge99.network similarity index 100% rename from test/test-network-generator-conversion/test-02-bridge.expected/90-bridge99.network rename to test/test-network-generator-conversion/test-02-bridge.expected/70-bridge99.network diff --git a/test/test-network-generator-conversion/test-02-bridge.expected/90-eth0.network b/test/test-network-generator-conversion/test-02-bridge.expected/70-eth0.network similarity index 100% rename from test/test-network-generator-conversion/test-02-bridge.expected/90-eth0.network rename to test/test-network-generator-conversion/test-02-bridge.expected/70-eth0.network diff --git a/test/test-network-generator-conversion/test-02-bridge.expected/90-eth1.network b/test/test-network-generator-conversion/test-02-bridge.expected/70-eth1.network similarity index 100% rename from test/test-network-generator-conversion/test-02-bridge.expected/90-eth1.network rename to test/test-network-generator-conversion/test-02-bridge.expected/70-eth1.network diff --git a/test/test-network-generator-conversion/test-03-issue-14319.expected/90-enp3s0.network b/test/test-network-generator-conversion/test-03-issue-14319.expected/70-enp3s0.network similarity index 100% rename from test/test-network-generator-conversion/test-03-issue-14319.expected/90-enp3s0.network rename to test/test-network-generator-conversion/test-03-issue-14319.expected/70-enp3s0.network From 2c4534854a04dd7ccc836f9193e50ac07dc15b2b Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 2 Nov 2023 14:18:16 +0900 Subject: [PATCH 4/7] man: mention that network files should be prefixed with number smaller than 70 --- man/systemd.link.xml | 4 ++-- man/systemd.netdev.xml | 4 ++-- man/systemd.network.xml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/man/systemd.link.xml b/man/systemd.link.xml index 62578f48e4..b75dc7fcd4 100644 --- a/man/systemd.link.xml +++ b/man/systemd.link.xml @@ -40,8 +40,8 @@ /etc/systemd/network. All configuration files are collectively sorted and processed in alphanumeric order, regardless of the directories in which they live. However, files with identical filenames replace each other. It is recommended that each filename is prefixed with - a number (e.g. 10-eth0.link). Otherwise, the default - .link files or those generated by + a number smaller than 70 (e.g. 10-eth0.link). Otherwise, the + default .link files or those generated by systemd-network-generator.service8 may take precedence over user configured files. Files in /etc/ have the highest priority, files in /run/ take precedence over files with the same name diff --git a/man/systemd.netdev.xml b/man/systemd.netdev.xml index 3f1b18b2af..2d3e575a8b 100644 --- a/man/systemd.netdev.xml +++ b/man/systemd.netdev.xml @@ -46,8 +46,8 @@ /etc/systemd/network. All configuration files are collectively sorted and processed in alphanumeric order, regardless of the directories in which they live. However, files with identical filenames replace each other. It is recommended that each filename is prefixed with - a number (e.g. 10-vlan.netdev). Otherwise, .netdev files - generated by + a number smaller than 70 (e.g. 10-vlan.netdev). Otherwise, + .netdev files generated by systemd-network-generator.service8 may take precedence over user configured files. Files in /etc/ have the highest priority, files in /run/ take precedence over files with the same name diff --git a/man/systemd.network.xml b/man/systemd.network.xml index 02039b4942..3eadad3739 100644 --- a/man/systemd.network.xml +++ b/man/systemd.network.xml @@ -44,8 +44,8 @@ /etc/systemd/network. All configuration files are collectively sorted and processed in alphanumeric order, regardless of the directories in which they live. However, files with identical filenames replace each other. It is recommended that each filename is prefixed with - a number (e.g. 10-eth0.network). Otherwise, the default - .network files or those generated by + a number smaller than 70 (e.g. 10-eth0.network). Otherwise, the + default .network files or those generated by systemd-network-generator.service8 may take precedence over user configured files. Files in /etc/ have the highest priority, files in /run/ take precedence over files with the same name under From 9b7a624267fddc5c20bd15480e7a393d7a3b270e Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 2 Nov 2023 14:12:42 +0900 Subject: [PATCH 5/7] network: add meson option to rename .example files on install Also this renames 80-ethernet.network.example -> 89-ethernet.network.example, to make it have lower precedence over other default .network files for Ethernet interfaces. Closes #29765. --- meson_options.txt | 2 ++ ...rk.example => 89-ethernet.network.example} | 0 network/meson.build | 22 ++++++++++++++++--- 3 files changed, 21 insertions(+), 3 deletions(-) rename network/{80-ethernet.network.example => 89-ethernet.network.example} (100%) diff --git a/meson_options.txt b/meson_options.txt index c31e3cd4d7..83b1f81214 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -130,6 +130,8 @@ option('homed', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : ' description : 'install the systemd-homed stack') option('networkd', type : 'boolean', description : 'install the systemd-networkd stack') +option('default-network', type : 'boolean', value : true, + description : 'install default .network files') option('timedated', type : 'boolean', description : 'install the systemd-timedated daemon') option('timesyncd', type : 'boolean', diff --git a/network/80-ethernet.network.example b/network/89-ethernet.network.example similarity index 100% rename from network/80-ethernet.network.example rename to network/89-ethernet.network.example diff --git a/network/meson.build b/network/meson.build index e44779ad26..b9564b766f 100644 --- a/network/meson.build +++ b/network/meson.build @@ -3,17 +3,33 @@ if conf.get('ENABLE_NETWORKD') == 1 install_data( '80-6rd-tunnel.network', - '80-auto-link-local.network.example', '80-container-host0.network', '80-container-vb.network', '80-container-ve.network', '80-container-vz.network', - '80-ethernet.network.example', '80-vm-vt.network', '80-wifi-adhoc.network', + install_dir : networkdir) + + example_network_files = files( + '80-auto-link-local.network.example', + '89-ethernet.network.example', '80-wifi-ap.network.example', '80-wifi-station.network.example', - install_dir : networkdir) + ) + + if get_option('default-network') + foreach f : example_network_files + install_data( + f, + rename : fs.replace_suffix(f, ''), + install_dir : networkdir) + endforeach + else + install_data( + example_network_files, + install_dir : networkdir) + endif if install_sysconfdir install_emptydir(sysconfdir / 'systemd/network') From 6256c65aad2a719ac9054961561bb26e497208ce Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 2 Nov 2023 14:20:11 +0900 Subject: [PATCH 6/7] meson: /etc/systemd/network is also used by udevd --- network/meson.build | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/network/meson.build b/network/meson.build index b9564b766f..b343bf6ad3 100644 --- a/network/meson.build +++ b/network/meson.build @@ -31,10 +31,11 @@ if conf.get('ENABLE_NETWORKD') == 1 install_dir : networkdir) endif - if install_sysconfdir - install_emptydir(sysconfdir / 'systemd/network') - endif endif install_data('99-default.link', install_dir : networkdir) + +if install_sysconfdir + install_emptydir(sysconfdir / 'systemd/network') +endif From 08752450c76a5d38f6f2cd884beafa65b02586a1 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 3 Nov 2023 11:53:50 +0900 Subject: [PATCH 7/7] Update NEWS --- NEWS | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/NEWS b/NEWS index 8e5ae59119..04c45ecee6 100644 --- a/NEWS +++ b/NEWS @@ -305,6 +305,16 @@ CHANGES WITH 255 in spe: link-local addressing if ip=link-local is specified on the kernel command line. + * The prefix of the configuration files generated by the network + generator from the kernel command line is now prefixed with '70-', + to make them have higher precedence over the default configuration + files. + + * Added -Ddefault-network=BOOL meson option, to make install more + default .network files, which match more generic setups, e.g. + 89-ethernet.network matches all Ethernet interfaces and enables both + DHCPv4 and DHCPv6 clients. + Changes in systemd-analyze: * "systemd-analyze plot" has gained tooltips on each unit name with