diff -p -up dhcp-4.1.1/client/scripts/linux.prevent_wireless dhcp-4.1.1/client/scripts/linux --- dhcp-4.1.1/client/scripts/linux.prevent_wireless 2010-02-25 11:37:31.000000000 -0300 +++ dhcp-4.1.1/client/scripts/linux 2010-02-25 11:37:37.000000000 -0300 @@ -13,6 +13,8 @@ # 1. ifconfig down apparently deletes all relevant routes and flushes # the arp cache, so this doesn't need to be done explicitly. +# 1.1. ifconfig $interface inet 0 is enough, and prevents unneeded +# deassociation on wireless interfaces # 2. The alias address handling here has not been tested AT ALL. # I'm just going by the doc of modern Linux ip aliasing, which uses @@ -170,7 +172,7 @@ if [ x$reason = xBOUND ] || [ x$reason = 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 + ifconfig $interface inet 0 fi if [ x$old_ip_address = x ] || [ x$old_ip_address != x$new_ip_address ] || \ @@ -224,7 +226,7 @@ if [ x$reason = xEXPIRE ] || [ x$reason fi if [ x$old_ip_address != x ]; then # Shut down interface, which will delete routes and clear arp cache. - ifconfig $interface inet 0 down + ifconfig $interface inet 0 fi if [ x$alias_ip_address != x ]; then ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg @@ -259,7 +261,7 @@ if [ x$reason = xTIMEOUT ]; then fi exit_with_hooks 0 fi - ifconfig $interface inet 0 down + ifconfig $interface inet 0 exit_with_hooks 1 fi