dhcpcd: Wait for carrier before active

In order to ensure that network interfaces are active, but not
necessarily fully configured, before *network.target* is reached, the
*dhcpcd.service* unit now waits until at least one interface has
processed the `CARRIER` event before being marked as active.  This is
accomplished using the *sd_notify* infrastructure, via the
`systemd-notify` command, executed in a client configuration hook
script.
pull/2/head
Dustin 2022-06-27 13:37:34 -05:00
parent a299e3d91c
commit 37cea1dd47
3 changed files with 10 additions and 1 deletions

View File

@ -5,6 +5,9 @@ define DHCPCD_INSTALL_INIT_SYSTEMD
$(INSTALL) -D -m u=rw,go=r \ $(INSTALL) -D -m u=rw,go=r \
$(BR2_EXTERNAL_metricspi_PATH)/package/dhcpcd/dhcpcd-wait-online.service \ $(BR2_EXTERNAL_metricspi_PATH)/package/dhcpcd/dhcpcd-wait-online.service \
$(TARGET_DIR)/usr/lib/systemd/system/dhcpcd-wait-online.service $(TARGET_DIR)/usr/lib/systemd/system/dhcpcd-wait-online.service
$(INSTALL) -D -m u=rwx,go=rx \
$(BR2_EXTERNAL_metricspi_PATH)/package/dhcpcd/ready.hook.sh \
$(TARGET_DIR)/usr/lib/dhcpcd/dhcpcd-hooks/01-ready
$(INSTALL) -D -m u=rwx,go=rx \ $(INSTALL) -D -m u=rwx,go=rx \
$(BR2_EXTERNAL_metricspi_PATH)/package/dhcpcd/online.hook.sh \ $(BR2_EXTERNAL_metricspi_PATH)/package/dhcpcd/online.hook.sh \
$(TARGET_DIR)/usr/lib/dhcpcd/dhcpcd-hooks/99-online $(TARGET_DIR)/usr/lib/dhcpcd/dhcpcd-hooks/99-online

View File

@ -4,7 +4,8 @@ Wants=network.target
Before=network.target Before=network.target
[Service] [Service]
ExecStart=/usr/sbin/dhcpcd -q --nobackground Type=notify
ExecStart=/usr/sbin/dhcpcd -q --nobackground --env NOTIFY_SOCKET=${NOTIFY_SOCKET}
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target

View File

@ -0,0 +1,5 @@
#!/bin/sh
if [ "${reason}" = CARRIER ]; then
systemd-notify --pid=${pid} --ready
fi