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
parent
a299e3d91c
commit
37cea1dd47
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ "${reason}" = CARRIER ]; then
|
||||||
|
systemd-notify --pid=${pid} --ready
|
||||||
|
fi
|
Loading…
Reference in New Issue