SVN-Revision: 30741master
parent
e5b04d57ef
commit
8ad6213f59
@ -0,0 +1,57 @@ |
||||
#!/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 |
Loading…
Reference in new issue