tag rc6
[openwrt/svn-archive/openwrt.git] / package / base-files / default / usr / share / udhcpc / default.script
diff --git a/package/base-files/default/usr/share/udhcpc/default.script b/package/base-files/default/usr/share/udhcpc/default.script
new file mode 100755 (executable)
index 0000000..cd45644
--- /dev/null
@@ -0,0 +1,54 @@
+#!/bin/sh
+[ -z "$1" ] && echo "Error: should be run by udhcpc" && exit 1
+
+RESOLV_CONF="/tmp/resolv.conf.auto"
+
+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
+       }
+}
+
+case "$1" in
+       deconfig)
+               ifconfig $interface 0.0.0.0
+               hotplug_event ifdown
+       ;;
+       renew|bound)
+               ifconfig $interface $ip \
+               netmask ${subnet:-255.255.255.0} \
+               broadcast ${broadcast:-+}
+
+               if [ -n "$router" ] ; then
+                       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
+
+               [ -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
+               
+               # user rules
+               [ -f /etc/udhcpc.user ] && . /etc/udhcpc.user
+       ;;
+esac
+
+exit 0