#!/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="$ifc" DEVICE="$ifname" PROTO=dhcp /sbin/hotplug iface
+ done
}
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