Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 0546855d7431d3fdfce69d4cced3d294 > files > 16

dhcp-3.0.5-31.el5.src.rpm

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