123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #!/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: ifconfig $interface $ip netmask ${subnet:-255.255.255.0} broadcast ${broadcast:-+}"
- ifconfig $interface $ip netmask ${subnet:-255.255.255.0} broadcast ${broadcast:-+}
- [ -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)
- ifconfig "$interface" 0.0.0.0
- ;;
- renew)
- setup_interface update
- ;;
- bound)
- setup_interface ifup
- ;;
- esac
- # user rules
- [ -f /etc/udhcpc.user ] && . /etc/udhcpc.user
- exit 0
|