| #!/bin/sh |
| # executed by udhcpc |
| # parameters: $1 and environment |
| # $1 is: |
| # |
| # deconfig: udhcpc starts, or lease is lost. |
| # Environment example: interface=eth0 |
| # |
| # bound: lease is obtained. Environment example: |
| # dhcptype=5 |
| # serverid=172.16.42.102 |
| # lease=97200 |
| # interface=eth0 |
| # ip=172.16.42.177 |
| # subnet=255.255.255.0 |
| # mask=24 |
| # broadcast=172.16.22.255 |
| # router=172.16.42.98 |
| # dns=10.34.32.125 10.32.63.5 10.34.255.7 10.11.255.27 |
| # domain=lab.example.com example.com |
| # ntpsrv=10.34.32.125 10.34.255.7 |
| # |
| # renew: lease is renewed. Environment is similar to "bound". |
| # The IP address does not change, however, the other DHCP parameters, |
| # such as the default gateway, subnet mask, and dns server may change. |
| # |
| # nak: udhcpc received a NAK message. |
| # Environment example: interface=eth0 |
| # |
| # leasefail: udhcpc cannot obtain a lease (DHCP server not responding, etc). |
| # Environment example: interface=eth0 |
| |
| # TODO: put $domain into /etc/resolv.conf (thru /var/service/fw) |
| |
| service=${PWD##*/} |
| file_ipconf="$service.ipconf" |
| file_ntpconf="$service.ntpconf" |
| dir_ipconf="/var/run/service/fw" |
| dir_ntpconf="/var/run/service/ntpd" |
| |
| exec >/dev/null |
| #exec >>"$0.out" #debug |
| exec 2>&1 |
| |
| echo "`date`: Params: $*" |
| |
| if test x"$1" != x"bound" && test x"$1" != x"renew" ; then |
| # Reconfigure network with this interface disabled |
| echo "Deconfiguring" |
| rm "env.out" |
| rm "$file_ipconf" |
| rm "$file_ntpconf" |
| rm "$dir_ipconf/$file_ipconf" |
| rm "$dir_ntpconf/$file_ntpconf" |
| svc -u fw |
| exit |
| fi |
| |
| # Bound: we've got the lease |
| # Record information for e.g. dhcp_$IF_pinger service |
| env >"env.out" |
| |
| ./convert2ipconf "$file_ipconf" |
| # Reconfigure routing and firewall if needed |
| diff --brief "$file_ipconf" "$dir_ipconf/$file_ipconf" >/dev/null 2>&1 |
| if test $? != 0; then |
| echo "Reconfiguring fw" |
| mkdir -p "$dir_ipconf" 2>/dev/null |
| cp "$file_ipconf" "$dir_ipconf/$file_ipconf" |
| svc -u fw |
| fi |
| |
| if test -d ../ntpd; then |
| ./convert2ntpconf "$file_ntpconf" |
| # Reconfigure ntp server addresses if needed |
| diff --brief "$file_ntpconf" "$dir_ntpconf/$file_ntpconf" >/dev/null 2>&1 |
| if test $? != 0; then |
| echo "Reconfiguring ntp" |
| mkdir -p "$dir_ntpconf" 2>/dev/null |
| cp "$file_ntpconf" "$dir_ntpconf/$file_ntpconf" |
| svc -t ntpd |
| svc -u ntpd |
| fi |
| fi |