wok annotate busybox/stuff/udhcp.script @ rev 20067
busybox/udhcpc6: update script (again)
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Sat Sep 23 15:53:27 2017 +0200 (2017-09-23) |
parents | 22fbe02a8c96 |
children | 3437359e0ac3 |
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@1770 | 11 |
pascal@10926 | 12 netfs() |
pascal@10926 | 13 { |
pascal@20065 | 14 grep -qe '\(:.* /\|httpfs\|nfs\|smbfs\|ncp\|coda\)' /proc/mounts |
pascal@10926 | 15 } |
pascal@10926 | 16 |
pascal@20065 | 17 logger "$0 interface=$interface ip=$ip ipv6=$ipv6 broadcast=$broadcast subnet=$subnet ipv6prefix=$ipv6prefix router=$router domain=$domain dns=$dns fqdn=$fqdn $@" |
pascal@12153 | 18 |
pascal@19065 | 19 skip=$(sed "/skipdhcpip=/!d;s/.*skipdhcpip=\([^ ]*\).*/\1/" </proc/cmdline) |
pascal@19065 | 20 [ -n "$skip" ] && case "$ip" in $skip*) exit 0;; esac |
pascal@19065 | 21 |
pascal@1770 | 22 case "$1" in |
pascal@1770 | 23 deconfig) |
pascal@20065 | 24 if !netfs; then |
pascal@20065 | 25 ifconfig $interface 0.0.0.0 |
pascal@20065 | 26 ip -6 addr flush dev $interface |
pascal@20065 | 27 fi |
pascal@1770 | 28 for i in /etc/ipdown.d/*; do |
pascal@4544 | 29 [ -x $i ] && $i $interface |
pascal@1770 | 30 done |
pascal@1770 | 31 ;; |
pascal@1770 | 32 |
pascal@1770 | 33 renew|bound) |
pascal@20067 | 34 ipv6prefix=${ipv6prefix:-/64} |
pascal@20067 | 35 [ -n "$ip" ] && if [ ${ip/:/} == $ip ]; then |
pascal@20065 | 36 ifconfig $interface $ip $BROADCAST $NETMASK |
pascal@20065 | 37 else |
pascal@20065 | 38 ip -6 addr add ${ip}/${ipv6prefix#*/} dev $interface |
pascal@20065 | 39 fi |
pascal@20067 | 40 [ -n "$ipv6" ] && ip -6 addr add ${ipv6}/${ipv6prefix#*/} dev $interface |
pascal@1770 | 41 |
pascal@1770 | 42 if [ -n "$router" ] ; then |
pascal@1770 | 43 echo "deleting routers" |
pascal@12152 | 44 while route del default gw 0.0.0.0 dev $interface 2>/dev/null; do |
pascal@1770 | 45 : |
pascal@1770 | 46 done |
pascal@20065 | 47 [ ${ip/:/} != $ip ] && ip -6 route flush dev $interface |
pascal@1770 | 48 |
pascal@1770 | 49 metric=0 |
pascal@1770 | 50 for i in $router ; do |
pascal@20065 | 51 if [ ${ip/:/} == $ip ]; then |
pascal@20065 | 52 route add default gw $i dev $interface metric $((metric++)) |
pascal@20065 | 53 else |
pascal@20065 | 54 route -A inet6 add default gw $i dev $interface metric $((metric++)) |
pascal@20065 | 55 fi |
pascal@20065 | 56 done 2>/dev/null |
pascal@1770 | 57 fi |
pascal@1770 | 58 |
pascal@1770 | 59 echo -n > $RESOLV_CONF |
pascal@1770 | 60 [ -n "$domain" ] && echo search $domain >> $RESOLV_CONF |
pascal@1770 | 61 for i in $dns ; do |
pascal@1770 | 62 echo adding dns $i |
pascal@1770 | 63 echo nameserver $i >> $RESOLV_CONF |
pascal@1770 | 64 done |
pascal@4544 | 65 [ "$1" == "bound" ] && for i in /etc/ipup.d/*; do |
pascal@4544 | 66 [ -x $i ] && $i $interface $ip $dns |
pascal@1770 | 67 done |
pascal@1770 | 68 ;; |
pascal@1770 | 69 esac |
pascal@1770 | 70 |
pascal@1770 | 71 exit 0 |