#!/bin/sh [ -z "$1" ] && echo "Error: should be run by udhcpc" && exit 1 set_classless_routes() { local max=128 local type while [ -n "$1" -a -n "$2" -a $max -gt 0 ]; do [ ${1##*/} -eq 32 ] && type=host || type=net echo "udhcpc: adding route for $type $1 via $2" route add -$type "$1" gw "$2" dev "$interface" max=$(($max-1)) shift 2 done } setup_interface() { echo "udhcpc: ip addr add $ip/${subnet:-255.255.255.0} broadcast ${broadcast:-+} dev $interface" ip addr add $ip/${subnet:-255.255.255.0} broadcast ${broadcast:-+} dev $interface [ -n "$router" ] && [ "$router" != "0.0.0.0" ] && [ "$router" != "255.255.255.255" ] && { echo "udhcpc: setting default routers: $router" local valid_gw="" for i in $router ; do route add default gw $i dev $interface valid_gw="${valid_gw:+$valid_gw|}$i" done eval $(route -n | awk ' /^0.0.0.0\W{9}('$valid_gw')\W/ {next} /^0.0.0.0/ {print "route del -net "$1" gw "$2";"} ') } # CIDR STATIC ROUTES (rfc3442) [ -n "$staticroutes" ] && set_classless_routes $staticroutes [ -n "$msstaticroutes" ] && set_classless_routes $msstaticroutes } applied= case "$1" in deconfig) ip -4 addr flush dev "$interface" ;; renew) setup_interface update ;; bound) setup_interface ifup ;; esac # user rules [ -f /etc/udhcpc.user ] && . /etc/udhcpc.user exit 0