#!/bin/sh . /etc/network/functions set -eu dhcpd_enabled=false address= subnet= gateway= dhcpd_start_config() { exec 3>"/var/run/udhcpd.${IFACE}.conf" printf 'interface %s\n' "${IFACE}" >&3 printf 'pidfile /var/run/udhcpd.%s.pid\n' "${IFACE}" >&3 printf 'lease_file /var/lib/misc/udhcpd.%s.leases\n' "${IFACE}" >&3 } dhcpd_opt_cb() { local key="${1}" shift 1 local val="${*}" 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 ;; address) address="${val}" ;; subnet) subnet="${val}" ;; gateway) gateway="${val}" ;; esac } dhcpd_end_config() { printf 'option subnet %s\n' "${subnet}" >&3 if [ "x${gateway}" != 'x' ]; then printf 'option router %s\n' "${gateway}" >&3 else printf 'option router %s\n' "${address}" >&3 fi sed 's/nameserver/option dns/' /etc/resolv.conf >&3 exec &3>- udhcpd -S "/var/run/udhcpd.${IFACE}.conf" } get_iface_opts dhcpd_opt_cb if ${dhcpd_enabled}; then dhcpd_end_config fi