From 96a68750a1ba9791291a94db2f73d1c3b3ffdf20 Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Wed, 06 Aug 2014 10:42:01 -0400 Subject: Add networking hooks for udhcpd --- (limited to 'src.etc/network/if-up.d/dhcpd') diff --git a/src.etc/network/if-up.d/dhcpd b/src.etc/network/if-up.d/dhcpd new file mode 100644 index 0000000..5fcc18e --- /dev/null +++ b/src.etc/network/if-up.d/dhcpd @@ -0,0 +1,56 @@ +#!/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 -- cgit v0.9.1