123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #!/bin/sh
- # udhcpc script edited by Tim Riker <Tim@Rikers.org>
- RESOLV_CONF="/etc/resolv.conf"
- [ -n "$1" ] || { echo "Error: should be called from udhcpc"; exit 1; }
- NETMASK=""
- if command -v ip >/dev/null; then
- [ -n "$subnet" ] && NETMASK="/$subnet"
- else
- [ -n "$subnet" ] && NETMASK="netmask $subnet"
- fi
- BROADCAST="broadcast +"
- [ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
- case "$1" in
- deconfig)
- echo "Clearing IP addresses on $interface, upping it"
- if command -v ip >/dev/null; then
- ip -4 addr flush dev $interface
- ip link set dev $interface up
- else
- ifconfig $interface 0.0.0.0
- fi
- ;;
- renew|bound)
- echo "Setting IP address $ip on $interface"
- if command -v ip >/dev/null; then
- ip addr add $ip$NETMASK $BROADCAST dev $interface
- else
- ifconfig $interface $ip $NETMASK $BROADCAST
- fi
- if [ -n "$router" ] ; then
- echo "Deleting routers"
- while route del default gw 0.0.0.0 dev $interface ; do
- :
- done
- metric=0
- for i in $router ; do
- echo "Adding router $i"
- if [ "$subnet" = "255.255.255.255" ]; then
- # special case for /32 subnets:
- # /32 instructs kernel to always use routing for all outgoing packets
- # (they can never be sent to local subnet - there is no local subnet for /32).
- # Used in datacenters, avoids the need for private ip-addresses between two hops.
- ip route add $i dev $interface
- fi
- route add default gw $i dev $interface metric $((metric++))
- done
- fi
- # If the file is a symlink somewhere (like /etc/resolv.conf
- # pointing to /run/resolv.conf), make sure things work.
- if test -L "$RESOLV_CONF"; then
- # If it's a dangling symlink, try to create the target.
- test -e "$RESOLV_CONF" || touch "$RESOLV_CONF"
- fi
- realconf=$(readlink -f "$RESOLV_CONF" 2>/dev/null || echo "$RESOLV_CONF")
- echo "Recreating $realconf"
- tmpfile="$realconf-$$"
- > "$tmpfile"
- [ -n "$domain" ] && echo "search $domain" >> "$tmpfile"
- for i in $dns ; do
- echo " Adding DNS server $i"
- echo "nameserver $i" >> "$tmpfile"
- done
- mv "$tmpfile" "$realconf"
- ;;
- esac
- exit 0
|