3
0

dhcp_handler 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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 paramaters,
  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/ntp"
  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 "$service.out"
  46. rm "$file_ipconf"
  47. rm "$file_ntpconf"
  48. rm "$dir_ipconf/$file_ipconf"
  49. rm "$dir_ntpconf/$file_ntpconf"
  50. sv u /var/service/fw
  51. exit
  52. fi
  53. # Bound: we've got the lease
  54. #env >"$service.out" # debug
  55. ./convert2ipconf "$file_ipconf"
  56. # Reconfigure routing and firewall if needed
  57. diff --brief "$file_ipconf" "$dir_ipconf/$file_ipconf" >/dev/null 2>&1
  58. if test $? != 0; then
  59. echo "Reconfiguring fw"
  60. mkdir -p "$dir_ipconf" 2>/dev/null
  61. cp "$file_ipconf" "$dir_ipconf/$file_ipconf"
  62. sv u /var/service/fw
  63. fi
  64. if test -d /var/service/ntp; then
  65. ./convert2ntpconf "$file_ntpconf"
  66. # Reconfigure ntp server addresses if needed
  67. diff --brief "$file_ntpconf" "$dir_ntpconf/$file_ntpconf" >/dev/null 2>&1
  68. if test $? != 0; then
  69. echo "Reconfiguring ntp"
  70. mkdir -p "$dir_ntpconf" 2>/dev/null
  71. cp "$file_ntpconf" "$dir_ntpconf/$file_ntpconf"
  72. sv t /var/service/ntp
  73. sv u /var/service/ntp
  74. fi
  75. fi