1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
|
Internet Software Consortium
Dynamic Host Configuration Protocol Server
Beta Release 5
August 29, 1996
Release Notes
!!!!!!! IMPORTANT !!!!!!!
THE FORMAT OF THE dhcpd.conf AND dhcpd.leases FILES HAS CHANGED!
!!!!!!! IMPORTANT !!!!!!!
If you are currently using dhcpd Beta 4 Patchlevel 7 or earlier, YOU
MUST CONVERT YOUR LEASE DATABASE AND CONFIGURATION FILES before
running the new version of DHCPD. At best, dhcpd will not work. At
worst, the lease database could be erased.
To convert your dhcpd.leases and dhcpd.conf files, make a backup copy
of each file and then run the dhcpxlt command with the old config file
as input and the new config file as output. For example:
mv /etc/dhcpd.conf /etc/dhcpd.conf.old
./dhcpxlt </etc/dhcpd.conf.old >/etc/dhcpd.conf
mv /var/db/dhcpd.leases /var/db/dhcpd.leases.old
./dhcpxlt </var/db/dhcpd.leases.old >/var/db/dhcpd.leases
The dhcpxlt command has been tested and appears to work, but it is
brand new and has only been tested by one person - me - at one site -
mine. Unfortunately, my site is relatively simple, so there's a
decent chance that I've overlooked something. Please proceed with
caution.
NEW FEATURES
NEW CONFIG FILE FORMAT
Obviously, the first new feature is that the configuration file
formats have been changed. The old format was a major source of
confusion for new users. The new format uses braces for nesting and
semicolons to end every statement, so what in the old version looked
like:
shared-network FOO
option domain-name "fugue.com"
subnet 204.254.239.0 netmask 255.255.255.224
option routers 204.254.239.1
subnet 205.254.239.32 netmask 255.255.255.224
option routers 204.254.239.33;
Now looks like:
shared-network FOO {
option domain-name "fugue.com";
subnet 204.254.239.0 netmask 255.255.255.224 {
option routers 204.254.239.1;
}
subnet 205.254.239.32 netmask 255.255.255.224 {
option routers 204.254.239.33;
}
}
I'm hoping that this will reduce confusion somewhat.
In addition to changing the file format, I've also documented it
(finally)! The definitive documentation is in dhcpd.conf.5, and gives
a complete and hopefully fairly readable description of the syntax,
along with examples and a reference section.
Also, the parser should now report line numbers correctly. Instead
of reporting the character position at which the offending token
starts, it now prints the line containing the offending token with an
arrow pointing at that token.
Hostnames may now begin with numbers - previously, a hostname like
1Q7.isc.org would not have been allowed.
Dhcpd will now exit if errors are found in the config file - before,
it would try to press on. I added this so that dhcpd would not even
try to read the dhcpd.leases file if the config file was broken.
README FILE UPDATED
Please take a look at the new README file - it's been brought forward
into the 20th century.
QNX SUPPORT
Brian Stecher of Watcom has donated configuration code for the QNX
operating system.
MAKEFILE FUN
Several people donated clean targets for the Makefile. The idea
being that you type ``make clean'', and all the object files are
removed. I added the target I liked best (donated by Mark Sirota).
DYNAMIC BOOTP LEASES
Mark also suggested a change that would set the expiry date on leases
for Dynamic BOOTP clients to something other than infinity. Two
different keywords have been added so that you can set either a cutoff
date or just a shorter lease length.
MEMORY ALLOCATION ZAPPED
A lot of bugs cropped up in Beta 4 having to do with uninitialized
allocated memory. I finally gave up and put code in the allocator to
just zero out every hunk of memory that gets allocated. Ugly, but
probably worthwhile.
NEW GROUP DECLARATION
Several users have asked for the ability to define client groupings
with common boot parameters which don't correspond with subnet
boundaries. This would be useful for a LAN where several departments
are spread out so that each department has some machines on one subnet
and some machines on another. It would also be useful for grouping
particular kinds of hardware together. The syntax looks like this:
group {
option domain-name "accounting.isc.org";
host foo {...}
host bar {...}
host baz {...}
}
NEXT BOOT SERVER SUPPORT
DHCP and BOOTP clients often need to load a kernel using TFTP or NFS
once they've configured their network interface. If your TFTP or NFS
server was the same as your DHCP server, this worked fine, but
otherwise, there was no way to boot. The next-server parameter now
allows you to specify the address of the server from which the boot
file should be loaded.
RESTRICTED DHCP
It is now possible to restrict access to dynamic addresses using the
boot-unknown-clients parameter. If boot-unknown-clients is turned
off on a given network, dhcpd will only provide addresses to clients
for which host entries exist.
DEBUGGING
It is now possible to start dhcpd without having it immediately go
into the background, using the -f option. This is handy for running
under a debugger or for running dhcpd out of /etc/inittab. It is
also possible to get a normally-compiled version of dhcpd to log its
debugging information to standard error as well as to syslogd, using
the -d flag.
HOSTNAMES
Dhcpd now looks up the hostnames for each address in the allocation
pool using gethostbyaddr. If a hostname option was not specified for
a client, the name is taken from the name of the client's host
declaration, if there is one. Otherwise, it's taken from the domain
name associated with the address being assigned to the client. This
only affects clients that want to learn their hostnames from the
server.
DHCPD.PID FILE WRITTEN SOONER
One user complained that the dhcpd.pid file was being written after
the lease database was loaded, and this could take a very significant
amount of time. Dhcpd now reads the pid file before loading the
database, and if no server is running on that pid, dhcpd rewrites the
pid file immediately. There are still race conditions here, but this
should improve things somewhat.
LOOPBACK AND POINT-TO-POINT INTERFACES AUTOMATICALLY ELIMINATED
I have added code which works everywhere I've tested it so far to
determine what kind of network connection each identified interface
provides, and to ignore any interface claiming to be a loopback
interface or a point-to-point interface. I am somewhat concerned
that this code may fail on Linux, but it should work on BSD-derived
TCP stacks, which are present on most Unix systems.
NUMEROUS BUG FIXES
Beta 4 Patchlevel 7 was not a very successful release, mostly because
I had to do it from Montreal over an X terminal, and so I wasn't able
to test it. A bunch of bugs introduced in Beta 4.7 have been fixed,
including:
- NIT no longer consumes excessive resources on SunOS
- NIT no longer fails on SunOS versions prior to 4.1.4.
- Mobile hosts should no longer corrupt the in-memory lease
database (I can't test this here - please let me know)
- DHCPD no longer gets infinite BOOTREQUESTs when booting
BOOTP clients on the other side of a BOOTP gateway.
- DHCPD should dump core less often - a lot of bogus pointer
dereferences have been fixed.
- IP aliases should now be handled correctly on Linux
machines. It would be nice if somebody could test this - I
can't.
- Lease times are now printed using printf and read in using a
hand-coded conversion routine. As a result, dhcpd no
longer puts GMT times on syslog messages.
- The lease database code is more robust (I don't know if this
ever caused any problems).
|