From 0bb68e81eca839c8eed0c629b403ac558ea662e6 Mon Sep 17 00:00:00 2001 From: nbd Date: Mon, 7 Nov 2005 01:12:51 +0000 Subject: add hotplug stuff to trunk/ git-svn-id: svn://svn.openwrt.org/openwrt/trunk/openwrt@2364 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../default/usr/share/udhcpc/default.script | 73 ++++++++++++---------- 1 file changed, 41 insertions(+), 32 deletions(-) (limited to 'package/base-files/default/usr/share/udhcpc') diff --git a/package/base-files/default/usr/share/udhcpc/default.script b/package/base-files/default/usr/share/udhcpc/default.script index 0c08985e7..9fac6286c 100755 --- a/package/base-files/default/usr/share/udhcpc/default.script +++ b/package/base-files/default/usr/share/udhcpc/default.script @@ -1,42 +1,51 @@ #!/bin/sh -# udhcpc script edited by Tim Riker -# (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.2.3