blob: 3d2a5cb791bb9428f0830cae62a34c52265015ff
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 | |
33 | # TODO: put $domain into /etc/resolv.conf (thru /var/service/fw) |
34 | |
35 | service=${PWD##*/} |
36 | file_ipconf="$service.ipconf" |
37 | file_ntpconf="$service.ntpconf" |
38 | dir_ipconf="/var/run/service/fw" |
39 | dir_ntpconf="/var/run/service/ntpd" |
40 | |
41 | exec >/dev/null |
42 | #exec >>"$0.out" #debug |
43 | exec 2>&1 |
44 | |
45 | echo "`date`: Params: $*" |
46 | |
47 | if test x"$1" != x"bound" && test x"$1" != x"renew" ; then |
48 | # Reconfigure network with this interface disabled |
49 | echo "Deconfiguring" |
50 | rm "env.out" |
51 | rm "$file_ipconf" |
52 | rm "$file_ntpconf" |
53 | rm "$dir_ipconf/$file_ipconf" |
54 | rm "$dir_ntpconf/$file_ntpconf" |
55 | sv u /var/service/fw |
56 | exit |
57 | fi |
58 | |
59 | # Bound: we've got the lease |
60 | # Record information for e.g. dhcp_$IF_pinger service |
61 | env >"env.out" |
62 | |
63 | ./convert2ipconf "$file_ipconf" |
64 | # Reconfigure routing and firewall if needed |
65 | diff --brief "$file_ipconf" "$dir_ipconf/$file_ipconf" >/dev/null 2>&1 |
66 | if test $? != 0; then |
67 | echo "Reconfiguring fw" |
68 | mkdir -p "$dir_ipconf" 2>/dev/null |
69 | cp "$file_ipconf" "$dir_ipconf/$file_ipconf" |
70 | sv u /var/service/fw |
71 | fi |
72 | |
73 | if test -d /var/service/ntpd; then |
74 | ./convert2ntpconf "$file_ntpconf" |
75 | # Reconfigure ntp server addresses if needed |
76 | diff --brief "$file_ntpconf" "$dir_ntpconf/$file_ntpconf" >/dev/null 2>&1 |
77 | if test $? != 0; then |
78 | echo "Reconfiguring ntp" |
79 | mkdir -p "$dir_ntpconf" 2>/dev/null |
80 | cp "$file_ntpconf" "$dir_ntpconf/$file_ntpconf" |
81 | sv t /var/service/ntpd |
82 | sv u /var/service/ntpd |
83 | fi |
84 | fi |
85 |