make network scripts more robust, prevent multiple instances of pppd and udhcpc for...
[openwrt.git] / package / base-files / default / usr / share / udhcpc / default.script
index cef2c2e..74e7037 100755 (executable)
@@ -1,18 +1,21 @@
 #!/bin/sh
 [ -z "$1" ] && echo "Error: should be run by udhcpc" && exit 1
+. /etc/functions.sh
+include /lib/network
 
 RESOLV_CONF="/tmp/resolv.conf"
 
 hotplug_event() {
-       nvram show 2>&- | grep _proto=dhcp | {
-               while :; do
-                       read FOO
-                       [ -z "$FOO" ] && break
-                       FOO="${FOO%%_*}"
-                       [ "$(nvram get ${FOO}_ifname)" = "${interface}" ] || continue
-                       env -i ACTION="$1" INTERFACE="${FOO}" PROTO=dhcp /sbin/hotplug iface
-               done
-       }
+       scan_interfaces
+       for ifc in $interfaces; do
+               config_get ifname $ifc ifname
+               [ "$ifname" = "$interface" ] || continue
+
+               config_get proto $ifc proto
+               [ "$proto" = "dhcp" ] || continue
+
+               env -i ACTION="$1" INTERFACE="$ifname" PROTO=dhcp /sbin/hotplug iface
+       done
 }
 
 case "$1" in
@@ -26,22 +29,23 @@ case "$1" in
                broadcast ${broadcast:-+}
 
                if [ -n "$router" ] ; then
-
-                       if [ "$router" != "$(route -n | grep '^0.0.0.0' | grep $interface | awk '{ print $2 }')" ] ; then
-                               echo "deleting routers"
-                               while route del default gw 0.0.0.0 dev $interface ; do :; done                          
-                               for i in $router ; do
-                                       route add default gw $i dev $interface
-                               done
-                       fi
+                       echo "deleting routers"
+                       while route del default gw 0.0.0.0 dev $interface >&- 2>&- ; do :; done
+                                       
+                       for i in $router ; do
+                               echo "adding router $i"
+                               route add default gw $i dev $interface
+                       done
                fi
-
-               echo -n > $RESOLV_CONF
-               ${domain:+echo search $domain} >> $RESOLV_CONF
-               for i in $dns ; do
-                       echo adding dns $i
-                       echo nameserver $i >> $RESOLV_CONF
-               done
+               
+               [ -n "$dns" ] && {
+                       echo -n > $RESOLV_CONF
+                       ${domain:+echo search $domain} >> $RESOLV_CONF
+                       for i in $dns ; do
+                               echo "adding dns $i"
+                               echo "nameserver $i" >> $RESOLV_CONF
+                       done
+               }
                
                hotplug_event ifup
                
This page took 0.025929 seconds and 4 git commands to generate.