diff -up dhcp-3.0.5/client/scripts/linux.original dhcp-3.0.5/client/scripts/linux --- dhcp-3.0.5/client/scripts/linux.original 2011-03-11 18:19:16.000000000 +0900 +++ dhcp-3.0.5/client/scripts/linux 2011-03-11 18:30:37.000000000 +0900 @@ -238,9 +238,9 @@ function dhconfig() 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 0 down + # IP address changed. Delete all routes, and clear the ARP cache. + ip -4 addr flush dev ${interface} >/dev/null 2>&1 + ip -4 neigh flush dev ${interface} >/dev/null 2>&1 fi fi if [ x$reason = xBOUND ] || [ x$reason = xREBOOT ] || @@ -542,8 +542,9 @@ if [ x$reason = xEXPIRE ] || [ x$reason ifconfig $interface:0- inet 0 fi if [ x$old_ip_address != x ]; then - # Shut down interface, which will delete routes and clear arp cache. - ifconfig $interface inet 0 down + # Delete routes and clear arp cache. + ip -4 addr flush dev ${interface} >/dev/null 2>&1 + ip -4 neigh flush dev ${interface} >/dev/null 2>&1 fi if [ x$alias_ip_address != x ]; then ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg @@ -566,7 +567,8 @@ if [ x$reason = xTIMEOUT ] && [ "x$new_r exit_with_hooks 0 fi if [ -z "${dhc_dbus}" ] || (( ( dhc_dbus & 2 ) != 2 )); then - ifconfig $interface inet 0 down + ip -4 addr flush dev ${interface} >/dev/null 2>&1 + ip -4 neigh flush dev ${interface} >/dev/null 2>&1 fi; exit_with_hooks 1 elif [ x$reason = xTIMEOUT ]; then