1#!/bin/sh 2 3# udhcpc script edited by Tim Riker <Tim@Rikers.org> 4 5[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1 6 7RESOLV_CONF="/etc/resolv.conf" 8[ -n "$subnet" ] && NETMASK="netmask $subnet" 9 10# return 0 if root is mounted on a network filesystem 11root_is_nfs() { 12 sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\1 \2/p' /proc/mounts | 13 grep -q "^/ \(nfs\|smbfs\|ncp\|coda\)$" 14} 15 16have_bin_ip=0 17if [ -x /SBIN_DIR/ip ]; then 18 have_bin_ip=1 19 BROADCAST="broadcast +" 20fi 21 22[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast" 23 24case "$1" in 25 deconfig) 26 if [ -x /SBIN_DIR/resolvconf ]; then 27 /SBIN_DIR/resolvconf -d "${interface}.udhcpc" 28 fi 29 if ! root_is_nfs ; then 30 if [ $have_bin_ip -eq 1 ]; then 31 /SBIN_DIR/ip addr flush dev $interface 32 /SBIN_DIR/ip link set dev $interface up 33 else 34 /SBIN_DIR/ifconfig $interface 0.0.0.0 35 fi 36 fi 37 ;; 38 39 renew|bound) 40 if [ $have_bin_ip -eq 1 ]; then 41 /SBIN_DIR/ip addr add dev $interface local $ip/$mask $BROADCAST 42 else 43 /SBIN_DIR/ifconfig $interface $ip $BROADCAST $NETMASK 44 fi 45 46 if [ -n "$router" ] ; then 47 if ! root_is_nfs ; then 48 if [ $have_bin_ip -eq 1 ]; then 49 while /SBIN_DIR/ip route del default dev $interface 2>/dev/null ; do 50 : 51 done 52 else 53 while /SBIN_DIR/route del default gw 0.0.0.0 dev $interface 2>/dev/null ; do 54 : 55 done 56 fi 57 fi 58 59 metric=10 60 for i in $router ; do 61 if [ $have_bin_ip -eq 1 ]; then 62 /SBIN_DIR/ip route add default via $i metric $metric 63 else 64 /SBIN_DIR/route add default gw $i dev $interface metric $metric 2>/dev/null 65 fi 66 metric=$(($metric + 1)) 67 done 68 fi 69 70 # Update resolver configuration file 71 R="" 72 [ -n "$domain" ] && R="domain $domain 73" 74 for i in $dns; do 75 echo "$0: Adding DNS $i" 76 R="${R}nameserver $i 77" 78 done 79 80 if [ -x /SBIN_DIR/resolvconf ]; then 81 echo -n "$R" | /SBIN_DIR/resolvconf -a "${interface}.udhcpc" 82 else 83 echo -n "$R" > "$RESOLV_CONF" 84 fi 85 ;; 86esac 87 88exit 0 89