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
|
---|