** Description changed:
+ [Impact]
+
+ * Due to changes in systemd's networkctl output networkd-dispatcher 2.0
contains a bug, producing invalid keys/values inside the JSON it provides to
its scripts
+ * e.g.: json={"A": ["ress: 119.224.106.22 (DHCP4)"], ...}
+ * Therefore the scripts cannot access the relevant network configuration
state
+
+
+ [Test Plan]
+
+ * Run systemd v244+ (e.g. in a LXD container)
+ * Make sure you got an IP address via DHCP:
+ * # networkctl status eth0
+ ● 120: eth0
+ Link File: /usr/lib/systemd/network/99-default.link
+ Network File: /run/systemd/network/10-netplan-eth0.network
+ Type: ether
+ State: routable (configured)
+ Driver: veth
+ HW Address: 00:16:3e:0b:d7:74 (Xensource, Inc.)
+ MTU: 1500 (min: 68, max: 65535)
+ Queue Length (Tx/Rx): 1/1
+ Auto negotiation: no
+ Speed: 10Gbps
+ Duplex: full
+ Port: tp
+ Address: 10.238.94.146 (DHCP4)
+ fd42:7213:f20e:bd74:216:3eff:fe0b:d774
+ fe80::216:3eff:fe0b:d774
+ Gateway: 10.238.94.1 (Xensource, Inc.)
+ fe80::216:3eff:fe0f:ee29 (Xensource, Inc.)
+ DNS: 10.238.94.1
+ fd42:7213:f20e:bd74::1
+ fe80::216:3eff:fe0f:ee29
+ Search Domains: lxd
+ Activation Policy: up
+ * # cat /etc/networkd-dispatcher/routable.d/00run.sh
+ #!/bin/bash
+ env > /tmp/out.log
+ * chmod +x /etc/networkd-dispatcher/routable.d/00run.sh
+ * # networkd-dispatcher --run-startup-triggers
+ * cat /tmp/out.log
+ * Check json= ENV to verify if it contains the correct IPv4 address (without
"(DHCP4)" suffix).
+
+ [Where problems could occur]
+
+ * This was broken in 2.0 and the fix changes the behavior back to what was
originally intended.
+ * If people adopted to the broken environment variable, to somehow parse the
information they need from the broken JSON, this change will most probably
break their networkd-dispatcher scripts (again).
+
+
+ [Other Info]
+
+ * The upstream version 2.1 just fixes the parsing of current networkctl
output (in addition to a few testing and documentation improvements)
+ * The Debian revision -2 fixes the parsing of the "(DHCP4 ...)" suffix
+
+
+ === Original description ===
+
I just reinstalled my RPI3 router from Eoan to Focal but a lot of things
about networkd broke. I'm not sure whether they are related or not.
The first thing I noticed was, that I did not get my upstream DNS
servers. I use a dispatcher script to extract the information from the
json environment variable when my uplink becomes routable. Using a test
script to dump the environment I found this:
IP6_ADDRS=
PWD=/
json={"A": ["ress: 119.224.106.22 (DHCP4)"], "AdministrativeState":
"configuring", "Auto negot": ["tion: yes", "peed: 100Mbps", "plex: full",
"Port: mii"], "G": ["eway: 119.224.106.21", "DNS: 202.180.64.10",
"202.180.64.11", ""], "HW A": ["ress: b8:27:eb:b6:a5:f4 (Raspberry Pi
Foundation)", "MTU: 1500 (max: 65535)"], "InterfaceName": "wan", "Jun 20
00:01:49": ["mnus systemd-networkd[534]: wan: netdev ready", "mnus
systemd-networkd[534]: wan: Link UP", "mnus systemd-networkd[534]: wan: Gained
carrier"], "Jun 20 00:01:50": ["mnus systemd-networkd[534]: wan: Lost
carrier"], "Jun 20 00:01:51": ["mnus systemd-networkd[534]: wan: Gained
carrier"], "Jun 20 00:01:53": ["mnus systemd-networkd[534]: wan: DHCPv4 address
119.224.106.22/30 via 119.224.106.21"], "Lin": ["File:
/usr/lib/systemd/network/99-default.link"], "Networ": ["File:
/etc/systemd/network/07-wan.network", "Type: vlan", "tate: routable
(configured)", "iver: 802.1Q VLAN Support"], "OperationalState": "routable",
"Queue Length (": ["/Rx): 1/1"], "State": "routable (configuring)", "Type":
"vlan"}
AdministrativeState=configuring
IFACE=wan
LANG=en_NZ.UTF-8
INVOCATION_ID=384cc7de4e8d45e48ecb2ecf3cb55508
IP_ADDRS=
ESSID=
ADDR=
NOTIFY_SOCKET=/run/systemd/notify
SHLVL=1
STATE=routable
JOURNAL_STREAM=9:35403
OperationalState=routable
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
networkd_dispatcher_args=--run-startup-triggers
Note that the script worked perfectly fine on Eoan.
Also when I tried to get the dump above, I ran the following command after
installing the test-script:
ip link delete wan type vlan; systemctl restart systemd-networkd
in order to force networkd to recreate and reconfigure my uplink interface.
Doing this resulted in all connectivity with the router being lost (up- and
downstream). After a restart, I found the following in the networkd journal
indicating that networkd had in fact crashed.
Jun 19 23:59:58 tumnus systemd-networkd[539]: wan: Link DOWN
Jun 19 23:59:58 tumnus systemd-networkd[539]: wan: Lost carrier
Jun 19 23:59:58 tumnus systemd-networkd[539]: wan: DHCP lease lost
Jun 19 23:59:58 tumnus systemd[1]: Stopping Network Service...
Jun 19 23:59:58 tumnus systemd[1]: systemd-networkd.service: Succeeded.
Jun 19 23:59:58 tumnus systemd[1]: Stopped Network Service.
Jun 19 23:59:58 tumnus systemd[1]: Starting Network Service...
Jun 19 23:59:59 tumnus systemd-networkd[1986]: private: netdev ready
Jun 19 23:59:59 tumnus systemd-networkd[1986]: Enumeration completed
Jun 19 23:59:59 tumnus systemd[1]: Started Network Service.
Jun 19 23:59:59 tumnus systemd-networkd[1986]: private: netdev exists, using
existing without changing its parameters
Jun 20 00:00:00 tumnus systemd[1]: systemd-networkd.service: Main process
exited, code=dumped, status=11/SEGV
Jun 20 00:00:00 tumnus systemd[1]: systemd-networkd.service: Failed with
result 'core-dump'.
Jun 20 00:00:00 tumnus systemd[1]: systemd-networkd.service: Scheduled
restart job, restart counter is at 1.
Jun 20 00:00:00 tumnus systemd[1]: Stopped Network Service.
Jun 20 00:00:00 tumnus systemd[1]: Starting Network Service...
Jun 20 00:00:01 tumnus systemd-networkd[2034]: private: netdev ready
Jun 20 00:00:01 tumnus systemd-networkd[2034]: Enumeration completed
Jun 20 00:00:01 tumnus systemd[1]: Started Network Service.
Jun 20 00:00:01 tumnus systemd-networkd[2034]: private: netdev exists, using
existing without changing its parameters
Jun 20 00:00:01 tumnus systemd-networkd[2034]: wan: Link UP
Jun 20 00:00:01 tumnus systemd-networkd[2034]: wan: Gained carrier
Jun 20 00:00:01 tumnus systemd-networkd[2034]: private: Could not join
netdev: Can not enslave a bridge to a bridge. Too many levels of symbolic links
Jun 20 00:00:01 tumnus systemd-networkd[2034]: private: Failed
Jun 20 00:00:01 tumnus systemd-networkd[2034]: wan: DHCPv4 address
119.224.106.22/30 via 119.224.106.21
Jun 20 00:01:22 tumnus systemd[1]: Stopping Network Service...
Jun 20 00:01:22 tumnus systemd-networkd[2034]: wan: DHCP lease lost
Jun 20 00:01:22 tumnus systemd[1]: systemd-networkd.service: Succeeded.
Jun 20 00:01:22 tumnus systemd[1]: Stopped Network Service.
-- Reboot --
However, no crash file had been generated.
The system is running systemd 245.4-4ubuntu3.1 and networkd-dispatcher
2.0.1-1.
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1884248
Title:
[SRU] networkd-dispatcher gives corrupted information
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/networkd-dispatcher/+bug/1884248/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs