-
-
Notifications
You must be signed in to change notification settings - Fork 4.1k
Closed
Labels
bug 🐛Programming errors, that need preferential fixingProgramming errors, that need preferential fixingdhcpnetwork
Milestone
Description
I've tested this with systemd 238, but it should be the same in master.
This happens when the .network file specifies ConfigureWithoutCarrier=yes:
[Match]
Name=eth0
[Network]
Address=10.123.42.1/24
ConfigureWithoutCarrier=yes
DHCPServer=yes
When ConfigureWithoutCarrier, addresses are set (link_enter_set_addresses). This also starts the DHCP server.
Then, the carrier appears. link_carrier_gained sees that the link is in one of the following states:
LINK_STATE_SETTING_ADDRESSESif the kernel is very slow to set themLINK_STATE_SETTING_ROUTESif link-local addresses still haven't been setLINK_STATE_CONFIGUREDif everything has been set properly and a few seconds have passed
link_carrier_gained calls link_acquire_conf (again) and link_enter_set_addresses (again). The problem is that link_enter_set_addresses tries to start the already running DHCP server, which fails with -EBUSY:
Failed to read $container of PID 1, ignoring: Permission denied
Found container virtualization none.
Failed to open configuration file '/etc/systemd/networkd.conf': Success
timestamp of '/etc/systemd/network' changed
Ignoring /etc/systemd/network/10-eth0.link, because it's not a regular file with suffix .netdev.
Ignoring /etc/systemd/network/10-eth0.network, because it's not a regular file with suffix .netdev.
Ignoring /usr/lib/systemd/network/80-container-host0.network, because it's not a regular file with suffix .netdev.
Ignoring /usr/lib/systemd/network/99-default.link, because it's not a regular file with suffix .netdev.
Ignoring /usr/lib/systemd/network/80-container-ve.network, because it's not a regular file with suffix .netdev.
Ignoring /usr/lib/systemd/network/80-container-vz.network, because it's not a regular file with suffix .netdev.
Ignoring /etc/systemd/network/10-eth0.link, because it's not a regular file with suffix .network.
Ignoring /usr/lib/systemd/network/99-default.link, because it's not a regular file with suffix .network.
eth0: Flags change: +UP +MULTICAST +BROADCAST
eth0: Link 4 added
eth0: udev initialized link
eth0: Saved original MTU: 1500
eth0: Adding address: fe80::dead:beff:feef:0001/64 (valid forever)
eth0: Gained IPv6LL
eth0: Adding address: 10.123.42.1/24 (valid forever)
rtnl: received address with invalid family 129, ignoring
rtnl: received address with invalid family 128, ignoring
Enumeration completed
sd-netlink: ignored message with unknown type: 2
sd-netlink: ignored message with unknown type: 2
sd-netlink: ignored message with unknown type: 2
sd-netlink: ignored message with unknown type: 2
Successfully acquired requested service name.
eth0: Link state is up-to-date
eth0: found matching network '/etc/systemd/network/10-eth0.network'
LLDP: Started LLDP client
eth0: Started LLDP.
eth0: Discovering IPv6 routers
NDISC: Started IPv6 Router Solicitation client
eth0: Not emitting DNS server information on link, couldn't find suitable uplink.
eth0: Not emitting NTP server information on link, couldn't find suitable uplink.
DHCP SERVER: STARTED
eth0: Offering DHCPv4 leases
eth0: Setting addresses
NDISC: Sent Router Solicitation, next solicitation in 3s
eth0: Removing address: 10.123.42.1/24 (valid forever)
eth0: Adding address: 10.123.42.1/24 (valid forever)
eth0: Addresses set
NDISC: Sent Router Solicitation, next solicitation in 7s
NDISC: Sent Router Solicitation, next solicitation in 14s
NDISC: No RA received before link confirmation timeout
NDISC: Invoking callback for 't'.
eth0: Configured
Carrier appears
eth0: Flags change: +LOWER_UP +RUNNING
eth0: Gained carrier
eth0: Discovering IPv6 routers
eth0: Not emitting DNS server information on link, couldn't find suitable uplink.
eth0: Not emitting NTP server information on link, couldn't find suitable uplink.
Assertion '!server->receive_message' failed at ../src/libsystemd-network/sd-dhcp-server.c:1026, function sd_dhcp_server_start(). Ignoring.
eth0: Could not start DHCPv4 server instance: Device or resource busy
eth0: Failed
NDISC: Stopping IPv6 Router Solicitation client
I haven't tested the behaviour of the DHCP client, but I'm not sure if it will behave well because link_acquire_conf is also called twice.
Metadata
Metadata
Assignees
Labels
bug 🐛Programming errors, that need preferential fixingProgramming errors, that need preferential fixingdhcpnetwork