udhcpc.script 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #!/bin/sh
  2. # udhcpc script edited by Tim Riker <Tim@Rikers.org>
  3. [ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
  4. RESOLV_CONF="/etc/resolv.conf"
  5. [ -e $RESOLV_CONF ] || touch $RESOLV_CONF
  6. [ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
  7. [ -n "$subnet" ] && NETMASK="netmask $subnet"
  8. case "$1" in
  9. deconfig)
  10. /sbin/ifconfig $interface up
  11. /sbin/ifconfig $interface 0.0.0.0
  12. # drop info from this interface
  13. # resolv.conf may be a symlink to /tmp/, so take care
  14. TMPFILE=$(mktemp)
  15. grep -vE "# $interface\$" $RESOLV_CONF > $TMPFILE
  16. cat $TMPFILE > $RESOLV_CONF
  17. rm -f $TMPFILE
  18. if [ -x /usr/sbin/avahi-autoipd ]; then
  19. /usr/sbin/avahi-autoipd -k $interface
  20. fi
  21. ;;
  22. leasefail|nak)
  23. if [ -x /usr/sbin/avahi-autoipd ]; then
  24. /usr/sbin/avahi-autoipd -wD $interface --no-chroot
  25. fi
  26. ;;
  27. renew|bound)
  28. if [ -x /usr/sbin/avahi-autoipd ]; then
  29. /usr/sbin/avahi-autoipd -k $interface
  30. fi
  31. /sbin/ifconfig $interface $ip $BROADCAST $NETMASK
  32. if [ -n "$router" ] ; then
  33. echo "deleting routers"
  34. while route del default gw 0.0.0.0 dev $interface 2> /dev/null; do
  35. :
  36. done
  37. for i in $router ; do
  38. route add default gw $i dev $interface
  39. done
  40. fi
  41. # drop info from this interface
  42. # resolv.conf may be a symlink to /tmp/, so take care
  43. TMPFILE=$(mktemp)
  44. grep -vE "# $interface\$" $RESOLV_CONF > $TMPFILE
  45. cat $TMPFILE > $RESOLV_CONF
  46. rm -f $TMPFILE
  47. # prefer rfc3397 domain search list (option 119) if available
  48. if [ -n "$search" ]; then
  49. search_list=$search
  50. elif [ -n "$domain" ]; then
  51. search_list=$domain
  52. fi
  53. [ -n "$search_list" ] &&
  54. echo "search $search_list # $interface" >> $RESOLV_CONF
  55. for i in $dns ; do
  56. echo adding dns $i
  57. echo "nameserver $i # $interface" >> $RESOLV_CONF
  58. done
  59. ;;
  60. esac
  61. HOOK_DIR="$0.d"
  62. for hook in "${HOOK_DIR}/"*; do
  63. [ -f "${hook}" -a -x "${hook}" ] || continue
  64. "${hook}" "${@}"
  65. done
  66. exit 0