wok annotate busybox/stuff/udhcp.script @ rev 20068

busybox/udhcpc6: update script (again)
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sat Sep 23 16:49:43 2017 +0200 (2017-09-23)
parents 78a25960b7ef
children 265e84f3feb6
rev   line source
pascal@1770 1 #!/bin/sh
pascal@1770 2
pascal@1770 3 # udhcpc script edited by Tim Riker <Tim@Rikers.org>
pascal@1770 4
pascal@1770 5 [ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
pascal@1770 6
pascal@10926 7 [ "$subnet" == "255.255.255.255" ] && subnet="255.255.0.0" # qemu/ipv6 weirdness
pascal@1770 8 RESOLV_CONF="/etc/resolv.conf"
pascal@1770 9 [ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
pascal@1770 10 [ -n "$subnet" ] && NETMASK="netmask $subnet"
pascal@20068 11 DEV="dev $interface"
pascal@1770 12
pascal@10926 13 netfs()
pascal@10926 14 {
pascal@20065 15 grep -qe '\(:.* /\|httpfs\|nfs\|smbfs\|ncp\|coda\)' /proc/mounts
pascal@10926 16 }
pascal@10926 17
pascal@20065 18 logger "$0 interface=$interface ip=$ip ipv6=$ipv6 broadcast=$broadcast subnet=$subnet ipv6prefix=$ipv6prefix router=$router domain=$domain dns=$dns fqdn=$fqdn $@"
pascal@12153 19
pascal@20068 20 skip="$(sed "/skipdhcpip=/!d;s/.*skipdhcpip=\([^ ]*\).*/\1/" </proc/cmdline)"
pascal@20068 21 case " $skip " in *\ $ip\ *) exit 0;; esac
pascal@19065 22
pascal@1770 23 case "$1" in
pascal@1770 24 deconfig)
pascal@20065 25 if !netfs; then
pascal@20065 26 ifconfig $interface 0.0.0.0
pascal@20068 27 ip -6 addr flush $DEV
pascal@20065 28 fi
pascal@1770 29 for i in /etc/ipdown.d/*; do
pascal@4544 30 [ -x $i ] && $i $interface
pascal@1770 31 done
pascal@1770 32 ;;
pascal@1770 33
pascal@1770 34 renew|bound)
pascal@20068 35 ipv6mask=${ipv6prefix#*/}
pascal@20068 36 [ -n "$ip" ] || ip=$ipv6
pascal@20068 37 if [ ${ip/:/} == $ip ]; then
pascal@20065 38 ifconfig $interface $ip $BROADCAST $NETMASK
pascal@20065 39 else
pascal@20068 40 ip -6 addr add $ip/${ipv6mask:-64} $DEV
pascal@20065 41 fi
pascal@1770 42
pascal@1770 43 if [ -n "$router" ] ; then
pascal@20068 44 while route del default gw 0.0.0.0 $DEV ; do
pascal@1770 45 :
pascal@1770 46 done
pascal@20068 47 t=
pascal@20068 48 [ ${ip/:/} != $ip ] && t="-A inet6" && ip -6 route flush $DEV
pascal@1770 49 metric=0
pascal@1770 50 for i in $router ; do
pascal@20068 51 route $t add default gw $i $DEV metric $((metric++))
pascal@20068 52 done
pascal@20068 53 fi 2>/dev/null
pascal@1770 54
pascal@20068 55 echo -en ${domain:+search $domain \\n} > $RESOLV_CONF
pascal@1770 56 for i in $dns ; do
pascal@20068 57 echo nameserver $i
pascal@20068 58 done >> $RESOLV_CONF
pascal@4544 59 [ "$1" == "bound" ] && for i in /etc/ipup.d/*; do
pascal@4544 60 [ -x $i ] && $i $interface $ip $dns
pascal@1770 61 done
pascal@1770 62 ;;
pascal@1770 63 esac
pascal@1770 64
pascal@1770 65 exit 0