# DHCP client script to add static routes offerred by DHCP server as per RFC3442 # For Debian GNU/Linux, put this file under /etc/dhcp3/dhclient-exit-hooks.d/ # Theppitak Karoonboonyanan HexToDec() { hex=`echo $1 | sed 's/\(.\)/\U\1/g'` echo "ibase=16; $hex" | bc } if [ "x$new_unknown_121" != "x" ]; then i=1 while true; do # read mask bits count bits=`echo $new_unknown_121 | cut -d':' -f$i` if [ "x$bits" = "x" ]; then return 0 fi i=`expr $i + 1` # read network address bits=`HexToDec $bits` bytes=`expr $bits / 8` n=0 net_addr= while [ $bytes -gt 0 ]; do b=`echo $new_unknown_121 | cut -d':' -f$i` if [ "x$b" = "x" ]; then return 1 fi b=`HexToDec $b` net_addr="${net_addr}.$b" i=`expr $i + 1` n=`expr $n + 1` bytes=`expr $bytes - 1` done while [ $n -lt 4 ]; do net_addr="${net_addr}.0" n=`expr $n + 1` done net_addr=`echo $net_addr | sed -e 's/^.//'` # read router address n=0 router_addr= while [ $n -lt 4 ]; do b=`echo $new_unknown_121 | cut -d':' -f$i` if [ "x$b" = "x" ]; then return 1 fi b=`HexToDec $b` router_addr="${router_addr}.$b" i=`expr $i + 1` n=`expr $n + 1` done router_addr=`echo $router_addr | sed -e 's/^.//'` route add -net $net_addr/$bits gw $router_addr done fi