summaryrefslogtreecommitdiffstats
path: root/src.etc/network/if-up.d/dhcpd
diff options
context:
space:
mode:
Diffstat (limited to 'src.etc/network/if-up.d/dhcpd')
-rw-r--r--src.etc/network/if-up.d/dhcpd14
1 files changed, 11 insertions, 3 deletions
diff --git a/src.etc/network/if-up.d/dhcpd b/src.etc/network/if-up.d/dhcpd
index 5fcc18e..1f86512 100644
--- a/src.etc/network/if-up.d/dhcpd
+++ b/src.etc/network/if-up.d/dhcpd
@@ -4,11 +4,12 @@
set -eu
+dhcpd_enabled=false
address=
subnet=
gateway=
-dhcpd_opts_start_cb()
+dhcpd_start_config()
{
exec 3>"/var/run/udhcpd.${IFACE}.conf"
printf 'interface %s\n' "${IFACE}" >&3
@@ -24,6 +25,10 @@ dhcpd_opt_cb()
case "${key}" in
dhcpd-*)
+ if ! ${dhcpd_enabled}; then
+ dhcpd_start_config
+ dhcpd_enabled=true
+ fi
key="$(printf '%s\n' "${key#dhcpd-}" | tr '-' '_')"
printf '%s %s\n' "${key}" "${val}" >&3
;;
@@ -39,7 +44,7 @@ dhcpd_opt_cb()
esac
}
-dhcpd_opts_end_cb()
+dhcpd_end_config()
{
printf 'option subnet %s\n' "${subnet}" >&3
if [ "x${gateway}" != 'x' ]; then
@@ -53,4 +58,7 @@ dhcpd_opts_end_cb()
udhcpd -S "/var/run/udhcpd.${IFACE}.conf"
}
-get_iface_opts dhcpd_opts_start_cb dhcpd_opt_cb dhcpd_opts_end_cb
+get_iface_opts dhcpd_opt_cb
+if ${dhcpd_enabled}; then
+ dhcpd_end_config
+fi