#!/bin/sh . /etc/network/functions set -eu address= subnet= gateway= dhcpd_opts_start_cb() { 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-*) 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_opts_end_cb() { 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_opts_start_cb dhcpd_opt_cb dhcpd_opts_end_cb