rewrite of the network scripts and configuration
[openwrt-10.03/.git] / package / base-files / default / usr / share / udhcpc / default.script
index cef2c2ed25c0aa0525879315e53f350da3ad513c..a244e05a157da9a45e6abbc89f4ee5f3d8e47fc6 100755 (executable)
@@ -1,18 +1,21 @@
 #!/bin/sh
 [ -z "$1" ] && echo "Error: should be run by udhcpc" && exit 1
+. /etc/functions.sh
+include 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,21 +29,20 @@ 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
+                       echo "adding dns $i"
+                       echo "nameserver $i" >> $RESOLV_CONF
                done
                
                hotplug_event ifup