summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--usr/lib/autowifi/lib/network3
-rwxr-xr-xusr/lib/autowifi/opt/udhcpc.run70
2 files changed, 72 insertions, 1 deletions
diff --git a/usr/lib/autowifi/lib/network b/usr/lib/autowifi/lib/network
index 820ccad6..5394e7c9 100644
--- a/usr/lib/autowifi/lib/network
+++ b/usr/lib/autowifi/lib/network
@@ -32,7 +32,8 @@ ip_start(){
elif exists udhcpc; then
PIDFILE=/var/run/udhcpc-${interface}.pid
[ -e $PIDFILE ] && kill `cat $PIDFILE` ||:
- udhcpc -n -i $interface -s /lib/netifd/dhcp.script -C -p /var/run/udhcpc-${interface}.pid
+ udhcpc -n -p $PIDFILE -i $interface -s \
+ "$root/usr/lib/autowifi/opt/udhcpc.run"
fi ;;
*) echo "do not know ip starter $1" >&2;;
esac
diff --git a/usr/lib/autowifi/opt/udhcpc.run b/usr/lib/autowifi/opt/udhcpc.run
new file mode 100755
index 00000000..2e1b919f
--- /dev/null
+++ b/usr/lib/autowifi/opt/udhcpc.run
@@ -0,0 +1,70 @@
+#!/bin/sh
+# shamelessly stolen from http://www.doit.org/udhcpc/S50default
+
+PATH=/bin:/usr/bin:/sbin:/usr/sbin
+
+RESOLV_CONF="/etc/resolv.conf"
+
+update_interface()
+{
+ [ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
+ [ -n "$subnet" ] && NETMASK="netmask $subnet"
+ ifconfig $interface $ip $BROADCAST $NETMASK
+}
+
+update_routes()
+{
+ if [ -n "$router" ]
+ then
+ echo "deleting routes"
+ 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
+}
+
+update_dns()
+{
+ echo -n > $RESOLV_CONF
+ [ -n "$domain" ] && echo domain $domain >> $RESOLV_CONF
+ for i in $dns
+ do
+ echo adding dns $i
+ echo nameserver $i >> $RESOLV_CONF
+ done
+}
+
+deconfig()
+{
+ ifconfig $interface 0.0.0.0
+}
+
+case "$1" in
+ bound)
+ update_interface;
+ update_routes;
+ update_dns;
+ ;;
+
+ renew)
+ update_interface;
+ update_routes;
+ update_dns;
+ ;;
+
+ deconfig)
+ deconfig;
+ ;;
+
+ *)
+ echo "Usage: $0 {bound|renew|deconfig}"
+ exit 1
+ ;;
+esac
+
+exit 0