diff options
Diffstat (limited to 'src.etc/network/if-up.d/dhcpd')
-rw-r--r-- | src.etc/network/if-up.d/dhcpd | 14 |
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 |