Permalink
Cannot retrieve contributors at this time
| #!@SHELL@ | |
| # busybox udhcp setup script | |
| # shellcheck shell=sh disable=SC1008 | |
| PATH=/bin:/usr/bin:/sbin:/usr/sbin | |
| peer_var() | |
| { | |
| [ -n "$1" ] && [ "$1" != "yes" ] | |
| } | |
| update_dns() | |
| { | |
| peer_var "${PEER_DNS}" && return | |
| [ -z "${domain}" ] && [ -z "${dns}" ] && return | |
| conf="# Generated by udhcpc for ${interface}\n" | |
| [ -n "${domain}" ] && conf="${conf}domain ${domain}\n" | |
| for i in ${dns} ; do | |
| conf="${conf}nameserver ${i}\n" | |
| done | |
| if [ -x /sbin/resolvconf ] ; then | |
| printf "${conf}" | resolvconf -a ${interface} | |
| else | |
| printf "${conf}" > /etc/resolv.conf | |
| chmod 644 /etc/resolv.conf | |
| fi | |
| } | |
| update_ntp() | |
| { | |
| peer_var "${PEER_NTP}" && return | |
| [ -z "${ntpsrv}" ] && return | |
| conf="# Generated by udhcpc for interface ${interface}\n" | |
| conf="${conf}restrict default noquery notrust nomodify\n" | |
| conf="${conf}restrict 127.0.0.1\n" | |
| for i in ${ntpsrv} ; do | |
| conf="${conf}restrict ${i} nomodify notrap noquery\n" | |
| conf="${conf}server ${i}\n" | |
| done | |
| conf="${conf}driftfile /var/lib/ntp/ntp.drift\n" | |
| conf="${conf}logfile /var/log/ntp.log\n" | |
| printf "${conf}" > /etc/ntp.conf | |
| chmod 644 /etc/ntp.conf | |
| } | |
| update_hostname() | |
| { | |
| peer_var "${PEER_HOSTNAME}" && return | |
| [ -z "${hostname}" ] && return | |
| myhost="$(hostname)" | |
| [ -z "${myhost}" ] || [ "${myhost}" = "(none)" ] && hostname "${hostname}" | |
| } | |
| update_interface() | |
| { | |
| [ -n "${broadcast}" ] && broadcast="broadcast ${broadcast}" | |
| [ -n "${subnet}" ] && netmask="netmask ${subnet}" | |
| [ -n "${mtu}" ] && mtu="mtu ${mtu}" | |
| ifconfig "${interface}" ${ip} ${broadcast} ${netmask} ${mtu} | |
| } | |
| update_classless_routes() | |
| { | |
| if [ -n "${staticroutes}" ] ; then | |
| max_routes=128 | |
| metric= | |
| [ -n "${IF_METRIC}" ] && metric="metric ${IF_METRIC}" | |
| while [ -n "$1" ] && [ -n "$2" ] && [ $max_routes -gt 0 ]; do | |
| gw_arg= | |
| if [ "$2" != '0.0.0.0' ]; then | |
| gw_arg="gw $2" | |
| fi | |
| [ ${1##*/} -eq 32 ] && type=host || type=net | |
| route add -$type "$1" ${gw_arg} ${metric} dev "${interface}" | |
| max=$((max-1)) | |
| shift 2 | |
| done | |
| fi | |
| } | |
| update_routes() | |
| { | |
| peer_var "${PEER_ROUTERS}" && return | |
| # RFC 3442 | |
| [ -n "${staticroutes}" ] && update_classless_routes $staticroutes | |
| # If the DHCP server returns both a Classless Static Routes option and | |
| # a Router option, the DHCP client MUST ignore the Router option. | |
| if [ -n "${router}" ] && [ -z "${staticroutes}" ] ; then | |
| metric= | |
| [ -n "${IF_METRIC}" ] && metric="metric ${IF_METRIC}" | |
| for i in ${router} ; do | |
| route add default gw "${i}" ${metric} dev "${interface}" | |
| done | |
| fi | |
| } | |
| deconfig() | |
| { | |
| ifconfig "${interface}" 0.0.0.0 | |
| if ! peer_var "${PEER_ROUTERS}" ; then | |
| while route del default dev "${interface}" >/dev/null 2>&1; do | |
| : | |
| done | |
| fi | |
| if ! peer_var "${PEER_DNS}" ; then | |
| [ -x /sbin/resolvconf ] && resolvconf -d "${interface}" | |
| fi | |
| } | |
| if [ -r "/run/udhcpc-${interface}.conf" ]; then | |
| # shellcheck disable=SC1090 | |
| . "/run/udhcpc-${interface}.conf" | |
| fi | |
| case "$1" in | |
| bound|renew) | |
| update_hostname | |
| update_interface | |
| update_routes | |
| update_dns | |
| update_ntp | |
| ;; | |
| deconfig|leasefail) | |
| deconfig | |
| ;; | |
| nak) | |
| echo "nak: ${message}" | |
| ;; | |
| *) | |
| echo "unknown option $1" >&2 | |
| echo "Usage: $0 {bound|deconfig|leasefail|nak|renew}" >&2 | |
| exit 1 | |
| ;; | |
| esac | |
| exit 0 |