From 2e8e51060ffcc46bb1308d7eae4d2bc3456deacf Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Mon, 7 Nov 2005 01:12:51 +0000
Subject: add hotplug stuff to trunk/

SVN-Revision: 2364
---
 .../default/usr/share/udhcpc/default.script        | 73 ++++++++++++----------
 1 file changed, 41 insertions(+), 32 deletions(-)

(limited to 'openwrt/package/base-files/default/usr/share/udhcpc')

diff --git a/openwrt/package/base-files/default/usr/share/udhcpc/default.script b/openwrt/package/base-files/default/usr/share/udhcpc/default.script
index 0c08985..9fac628 100755
--- a/openwrt/package/base-files/default/usr/share/udhcpc/default.script
+++ b/openwrt/package/base-files/default/usr/share/udhcpc/default.script
@@ -1,42 +1,51 @@
 #!/bin/sh
-# udhcpc script edited by Tim Riker <Tim@Rikers.org>
-# (slightly modified for OpenWrt)
-
 [ -z "$1" ] && echo "Error: should be run by udhcpc" && exit 1
 
 RESOLV_CONF="/tmp/resolv.conf"
 
-case "$1" in
-        deconfig)
-                ifconfig $interface 0.0.0.0
-                ;;
-
-        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 ; do
-                                :
-                        done
-
-                        for i in $router ; do
-                                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
+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 ; do :; done
+					
+			for i in $router ; do
+				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
+		
+		hotplug_event ifup
+		
 		# user rules
 		[ -f /etc/udhcpc.user ] && . /etc/udhcpc.user
-
-                done
-                ;;
+	;;
 esac
+
 exit 0
-- 
cgit v1.1