dhcp_handler 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #!/bin/sh
  2. # executed by udhcpc
  3. # parameters: $1 and environment
  4. # $1 is:
  5. #
  6. # deconfig: udhcpc starts, or lease is lost.
  7. # Environment example: interface=eth0
  8. #
  9. # bound: lease is obtained. Environment example:
  10. # dhcptype=5
  11. # serverid=172.16.42.102
  12. # lease=97200
  13. # interface=eth0
  14. # ip=172.16.42.177
  15. # subnet=255.255.255.0
  16. # mask=24
  17. # broadcast=172.16.22.255
  18. # router=172.16.42.98
  19. # dns=10.34.32.125 10.32.63.5 10.34.255.7 10.11.255.27
  20. # domain=lab.example.com example.com
  21. # ntpsrv=10.34.32.125 10.34.255.7
  22. #
  23. # renew: lease is renewed. Environment is similar to "bound".
  24. # The IP address does not change, however, the other DHCP parameters,
  25. # such as the default gateway, subnet mask, and dns server may change.
  26. #
  27. # nak: udhcpc received a NAK message.
  28. # Environment example: interface=eth0
  29. #
  30. # leasefail: udhcpc cannot obtain a lease (DHCP server not responding, etc).
  31. # Environment example: interface=eth0
  32. # TODO: put $domain into /etc/resolv.conf (thru /var/service/fw)
  33. service=${PWD##*/}
  34. file_ipconf="$service.ipconf"
  35. file_ntpconf="$service.ntpconf"
  36. dir_ipconf="/var/run/service/fw"
  37. dir_ntpconf="/var/run/service/ntpd"
  38. exec >/dev/null
  39. #exec >>"$0.out" #debug
  40. exec 2>&1
  41. echo "`date`: Params: $*"
  42. if test x"$1" != x"bound" && test x"$1" != x"renew" ; then
  43. # Reconfigure network with this interface disabled
  44. echo "Deconfiguring"
  45. rm "env.out"
  46. rm "$file_ipconf"
  47. rm "$file_ntpconf"
  48. rm "$dir_ipconf/$file_ipconf"
  49. rm "$dir_ntpconf/$file_ntpconf"
  50. svc -u fw
  51. exit
  52. fi
  53. # Bound: we've got the lease
  54. # Record information for e.g. dhcp_$IF_pinger service
  55. env >"env.out"
  56. ./convert2ipconf "$file_ipconf"
  57. # Reconfigure routing and firewall if needed
  58. diff --brief "$file_ipconf" "$dir_ipconf/$file_ipconf" >/dev/null 2>&1
  59. if test $? != 0; then
  60. echo "Reconfiguring fw"
  61. mkdir -p "$dir_ipconf" 2>/dev/null
  62. cp "$file_ipconf" "$dir_ipconf/$file_ipconf"
  63. svc -u fw
  64. fi
  65. if test -d ../ntpd; then
  66. ./convert2ntpconf "$file_ntpconf"
  67. # Reconfigure ntp server addresses if needed
  68. diff --brief "$file_ntpconf" "$dir_ntpconf/$file_ntpconf" >/dev/null 2>&1
  69. if test $? != 0; then
  70. echo "Reconfiguring ntp"
  71. mkdir -p "$dir_ntpconf" 2>/dev/null
  72. cp "$file_ntpconf" "$dir_ntpconf/$file_ntpconf"
  73. svc -t ntpd
  74. svc -u ntpd
  75. fi
  76. fi