--- dhclient-script Wed Sep 26 20:34:36 2007 +++ dhclient-script.iproute2 Wed Sep 26 21:00:16 2007 @@ -61,11 +61,11 @@ ########### fli4l ########### because the original uname -r does not work -########### properly, i set it by hand to kernel version 2.2 +########### properly, get it from /etc/kernel-major -release=2.4 -relminor=4 -relmajor=2 +eval release=`cat /etc/kernel-major` +relminor=`echo $release | cut -d "." -f2` +relmajor=`echo $release | cut -d "." -f1` if [ x$new_broadcast_address != x ]; then new_broadcast_arg="broadcast $new_broadcast_address" @@ -74,13 +74,13 @@ old_broadcast_arg="broadcast $old_broadcast_address" fi if [ x$new_subnet_mask != x ]; then - new_subnet_arg="netmask $new_subnet_mask" + new_subnet_arg=`netcalc netmaskbits $new_subnet_mask` fi if [ x$old_subnet_mask != x ]; then - old_subnet_arg="netmask $old_subnet_mask" + old_subnet_arg=`netcalc netmaskbits $new_subnet_mask` fi if [ x$alias_subnet_mask != x ]; then - alias_subnet_arg="netmask $alias_subnet_mask" + alias_subnet_arg=`netcalc netmaskbits $alias_subnet_mask` fi if [ x$reason = xMEDIUM ]; then @@ -91,16 +91,16 @@ if [ x$reason = xPREINIT ]; then if [ x$alias_ip_address != x ]; then # Bring down alias interface. Its routes will disappear too. - ifconfig $interface:0- inet 0 + ip link set $interface down fi if [ $relmajor -lt 2 ] || ( [ $relmajor -eq 2 ] && [ $relminor -eq 0 ] ) then - ifconfig $interface inet 0.0.0.0 netmask 0.0.0.0 \ - broadcast 255.255.255.255 up + ip link set $interface up + ip addr add 0.0.0.0/32 broadcast 255.255.255.255 label $interface dev $interface # Add route to make broadcast work. Do not omit netmask. - route add default dev $interface netmask 0.0.0.0 + ip route add default dev $interface else - ifconfig $interface up + ip link set $interface up fi # We need to give the kernel some time to get the interface up. @@ -124,82 +124,53 @@ fi fi - if [ x$old_ip_address != x ] && [ x$alias_ip_address != x ] && \ - [ x$alias_ip_address != x$old_ip_address ]; then - # Possible new alias. Remove old alias. - ifconfig $interface:0- inet 0 - fi if [ x$old_ip_address != x ] && [ x$old_ip_address != x$new_ip_address ]; then # IP address changed. Bringing down the interface will delete all routes, # and clear the ARP cache. - ifconfig $interface inet down + ip link set $interface down fi if [ x$old_ip_address = x ] || [ x$old_ip_address != x$new_ip_address ] || \ [ x$reason = xBOUND ] || [ x$reason = xREBOOT ]; then - ifconfig $interface inet $new_ip_address $new_subnet_arg \ - $new_broadcast_arg + ip link set $interface up + ip addr add $new_ip_address/$new_subnet_arg $new_broadcast_arg label $interface dev $interface # Add a network route to the computed network address. if [ $relmajor -lt 2 ] || \ ( [ $relmajor -eq 2 ] && [ $relminor -eq 0 ] ); then - route add -net $new_network_number $new_subnet_arg dev $interface + ip route add via $new_network_number/$new_subnet_arg dev $interface fi for router in $new_routers; do - route add default gw $router + ip route add default via $router done fi - if [ x$new_ip_address != x$alias_ip_address ] && [ x$alias_ip_address != x ]; - then - ifconfig $interface:0- inet 0 - ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg - route add -host $alias_ip_address $interface:0 - fi make_resolv_conf exit_with_hooks 0 fi -if [ x$reason = xEXPIRE ] || [ x$reason = xFAIL ]; then - if [ x$alias_ip_address != x ]; then - # Turn off alias interface. - ifconfig $interface:0- inet 0 - fi +if [ x$reason = xEXPIRE ] || [ x$reason = xFAIL ] |||| [ x$reason = xRELEASE ] \ + || [ x$reason = xSTOP ]; then if [ x$old_ip_address != x ]; then # Shut down interface, which will delete routes and clear arp cache. - ifconfig $interface inet down - fi - if [ x$alias_ip_address != x ]; then - ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg - route add -host $alias_ip_address $interface:0 + ip link set $interface down fi exit_with_hooks 0 fi if [ x$reason = xTIMEOUT ]; then - if [ x$alias_ip_address != x ]; then - ifconfig $interface:0- inet 0 - fi - ifconfig $interface inet $new_ip_address $new_subnet_arg \ - $new_broadcast_arg set $new_routers - ############## what is -w in ping? - if ping -q -c 1 $1; then - if [ x$new_ip_address != x$alias_ip_address ] && \ - [ x$alias_ip_address != x ]; then - ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg - route add -host $alias_ip_address dev $interface:0 - fi if [ $relmajor -lt 2 ] || \ ( [ $relmajor -eq 2 ] && [ $relminor -eq 0 ] ); then - route add -net $new_network_number + ip route add $new_network_number dev $interface fi for router in $new_routers; do - route add default gw $router + ip route add default via $router done make_resolv_conf exit_with_hooks 0 - fi - ifconfig $interface inet down + ip link set $interface down exit_with_hooks 1 fi