aboutsummaryrefslogtreecommitdiffstats
path: root/main/busybox-initscripts/default.script
diff options
context:
space:
mode:
Diffstat (limited to 'main/busybox-initscripts/default.script')
-rw-r--r--main/busybox-initscripts/default.script108
1 files changed, 108 insertions, 0 deletions
diff --git a/main/busybox-initscripts/default.script b/main/busybox-initscripts/default.script
new file mode 100644
index 0000000000..c6cfbc5be1
--- /dev/null
+++ b/main/busybox-initscripts/default.script
@@ -0,0 +1,108 @@
+#!/bin/sh
+
+# script for udhcpc
+# Copyright (c) 2008 Natanael Copa <natanael.copa@gmail.com>
+
+UDHCPC="/etc/udhcpc"
+UDHCPC_CONF="$UDHCPC/udhcpc.conf"
+
+RESOLV_CONF="/etc/resolv.conf"
+[ -f $UDHCPC_CONF ] && . $UDHCPC_CONF
+
+export broadcast
+export dns
+export domain
+export interface
+export ip
+export mask
+export metric
+export router
+export subnet
+
+export PATH=/usr/bin:/bin:/usr/sbin:/sbin
+
+run_scripts() {
+ local dir=$1
+ if [ -d $dir ]; then
+ for i in $dir/*; do
+ [ -f $i ] && $i
+ done
+ fi
+}
+
+deconfig() {
+ ip addr flush dev $interface
+}
+
+routes() {
+ [ -z "$router" ] && return
+ local gw metric
+ while ip route del default via dev $interface 2>/dev/null; do
+ :
+ done
+ metric=0
+ for gw in $router; do
+ route add default gw $gw dev $interface metric $metric
+ metric=$(( $metric + 1 ))
+ done
+}
+
+resolvconf() {
+ local i
+ if [ "$RESOLV_CONF" = "no" ] || [ "$RESOLV_CONF" = "NO" ] \
+ || [ -z "$RESOLV_CONF" ]; then
+ return
+ fi
+ echo -n > "$RESOLV_CONF"
+ [ -n "$domain" ] && echo "search $domain" >> "$RESOLV_CONF"
+ for i in $dns; do
+ echo "nameserver $i" >> "$RESOLV_CONF"
+ done
+}
+
+bound() {
+ ip addr add $ip/$mask dev $interface
+ ip link set dev $interface up
+ routes
+ resolvconf
+}
+
+renew() {
+ if ! ip addr show dev $interface | grep $ip/$mask; then
+ ip addr flush dev $interface
+ ip addr add $ip/$mask dev $interface
+ fi
+
+ local i
+ for i in $router; do
+ if ! ip route show | grep ^default | grep $i; then
+ routes
+ break
+ fi
+ done
+
+ if ! grep "^search $domain"; then
+ resolvconf
+ return
+ fi
+ for i in $dns; do
+ if ! grep "^nameserver $i"; then
+ resolvconf
+ return
+ fi
+ done
+}
+
+case "$1" in
+ deconfig|renew|bound)
+ run_scripts $UDHCPC/pre-$1
+ $1
+ run_scripts $UDHCPC/post-$1
+ ;;
+ *)
+ echo "Error: this script should be called from udhcpc" >&2
+ exit 1
+ ;;
+esac
+exit 0
+