ISC DHCP  4.3.6
A reference DHCPv4 and DHCPv6 implementation
site.h
Go to the documentation of this file.
1 /* Site-specific definitions.
2 
3  For supported systems, you shouldn't need to make any changes here.
4  However, you may want to, in order to deal with site-specific
5  differences. */
6 
7 /* Add any site-specific definitions and inclusions here... */
8 
9 /* #include <site-foo-bar.h> */
10 /* #define SITE_FOOBAR */
11 
12 /* Define this if you don't want dhcpd to run as a daemon and do want
13  to see all its output printed to stdout instead of being logged via
14  syslog(). This also makes dhcpd use the dhcpd.conf in its working
15  directory and write the dhcpd.leases file there. */
16 
17 /* #define DEBUG */
18 
19 /* Define this to see what the parser is parsing. You probably don't
20  want to see this. */
21 
22 /* #define DEBUG_TOKENS */
23 
24 /* Define this to see dumps of incoming and outgoing packets. This
25  slows things down quite a bit... */
26 
27 /* #define DEBUG_PACKET */
28 
29 /* Define this if you want to see dumps of expression evaluation. */
30 
31 /* #define DEBUG_EXPRESSIONS */
32 
33 /* Define this if you want to see dumps of find_lease() in action. */
34 
35 /* #define DEBUG_FIND_LEASE */
36 
37 /* Define this if you want to see dumps of parsed expressions. */
38 
39 /* #define DEBUG_EXPRESSION_PARSE */
40 
41 /* Define this if you want to watch the class matching process. */
42 
43 /* #define DEBUG_CLASS_MATCHING */
44 
45 /* Define this if you want to track memory usage for the purpose of
46  noticing memory leaks quickly. */
47 
48 /* #define DEBUG_MEMORY_LEAKAGE */
49 /* #define DEBUG_MEMORY_LEAKAGE_ON_EXIT */
50 
51 /* Define this if you want exhaustive (and very slow) checking of the
52  malloc pool for corruption. */
53 
54 /* #define DEBUG_MALLOC_POOL */
55 
56 /* Define this if you want to see a message every time a lease's state
57  changes. */
58 /* #define DEBUG_LEASE_STATE_TRANSITIONS */
59 
60 /* Define this if you want to maintain a history of the last N operations
61  that changed reference counts on objects. This can be used to debug
62  cases where an object is dereferenced too often, or not often enough. */
63 
64 /* #define DEBUG_RC_HISTORY */
65 
66 /* Define this if you want to see the history every cycle. */
67 
68 /* #define DEBUG_RC_HISTORY_EXHAUSTIVELY */
69 
70 /* This is the number of history entries to maintain - by default, 256. */
71 
72 /* #define RC_HISTORY_MAX 10240 */
73 
74 /* Define this if you want dhcpd to dump core when a non-fatal memory
75  allocation error is detected (i.e., something that would cause a
76  memory leak rather than a memory smash). */
77 
78 /* #define POINTER_DEBUG */
79 
80 /* Define this if you want debugging output for DHCP failover protocol
81  messages. */
82 
83 /* #define DEBUG_FAILOVER_MESSAGES */
84 
85 /* Define this to include contact messages in failover message debugging.
86  The contact messages are sent once per second, so this can generate a
87  lot of log entries. */
88 
89 /* #define DEBUG_FAILOVER_CONTACT_MESSAGES */
90 
91 /* Define this if you want debugging output for DHCP failover protocol
92  event timeout timing. */
93 
94 /* #define DEBUG_FAILOVER_TIMING */
95 
96 /* Define this if you want to include contact message timing, which is
97  performed once per second and can generate a lot of log entries. */
98 
99 /* #define DEBUG_FAILOVER_CONTACT_TIMING */
100 
101 /* Define this if you want all leases written to the lease file, even if
102  they are free leases that have never been used. */
103 
104 /* #define DEBUG_DUMP_ALL_LEASES */
105 
106 /* Define this if you want to see the requests and replies between the
107  DHCP code and the DNS library code. */
108 
109 /* #define DEBUG_DNS_UPDATES */
110 
111 /* Define this if you want to debug the host part of the inform processing */
112 /* #define DEBUG_INFORM_HOST */
113 
114 /* Define this if you want to debug the binary leases (lease_chain) code */
115 /* #define DEBUG_BINARY_LEASES */
116 
117 /* Define this if you want to debug checksum calculations */
118 /* #define DEBUG_CHECKSUM */
119 
120 /* Define this if you want to verbosely debug checksum calculations */
121 /* #define DEBUG_CHECKSUM_VERBOSE */
122 
123 
124 /* Define this if you want DHCP failover protocol support in the DHCP
125  server. */
126 
127 /* #define FAILOVER_PROTOCOL */
128 
129 /* Define this if you want DNS update functionality to be available. */
130 
131 #define NSUPDATE
132 
133 /* Define this if you want to enable the DHCP server attempting to
134  find a nameserver to use for DDNS updates. */
135 #define DNS_ZONE_LOOKUP
136 
137 /* Define this if you want the dhcpd.pid file to go somewhere other than
138  the default (which varies from system to system, but is usually either
139  /etc or /var/run. */
140 
141 /* #define _PATH_DHCPD_PID "/var/run/dhcpd.pid" */
142 
143 /* Define this if you want the dhcpd.leases file (the dynamic lease database)
144  to go somewhere other than the default location, which is normally
145  /etc/dhcpd.leases. */
146 
147 /* #define _PATH_DHCPD_DB "/etc/dhcpd.leases" */
148 
149 /* Define this if you want the dhcpd.conf file to go somewhere other than
150  the default location. By default, it goes in /etc/dhcpd.conf. */
151 
152 /* #define _PATH_DHCPD_CONF "/etc/dhcpd.conf" */
153 
154 /* Network API definitions. You do not need to choose one of these - if
155  you don't choose, one will be chosen for you in your system's config
156  header. DON'T MESS WITH THIS UNLESS YOU KNOW WHAT YOU'RE DOING!!! */
157 
158 /* Define USE_SOCKETS to use the standard BSD socket API.
159 
160  On many systems, the BSD socket API does not provide the ability to
161  send packets to the 255.255.255.255 broadcast address, which can
162  prevent some clients (e.g., Win95) from seeing replies. This is
163  not a problem on Solaris.
164 
165  In addition, the BSD socket API will not work when more than one
166  network interface is configured on the server.
167 
168  However, the BSD socket API is about as efficient as you can get, so if
169  the aforementioned problems do not matter to you, or if no other
170  API is supported for your system, you may want to go with it. */
171 
172 /* #define USE_SOCKETS */
173 
174 /* Define this to use the Sun Streams NIT API.
175 
176  The Sun Streams NIT API is only supported on SunOS 4.x releases. */
177 
178 /* #define USE_NIT */
179 
180 /* Define this to use the Berkeley Packet Filter API.
181 
182  The BPF API is available on all 4.4-BSD derivatives, including
183  NetBSD, FreeBSD and BSDI's BSD/OS. It's also available on
184  DEC Alpha OSF/1 in a compatibility mode supported by the Alpha OSF/1
185  packetfilter interface. */
186 
187 /* #define USE_BPF */
188 
189 /* Define this to use the raw socket API.
190 
191  The raw socket API is provided on many BSD derivatives, and provides
192  a way to send out raw IP packets. It is only supported for sending
193  packets - packets must be received with the regular socket API.
194  This code is experimental - I've never gotten it to actually transmit
195  a packet to the 255.255.255.255 broadcast address - so use it at your
196  own risk. */
197 
198 /* #define USE_RAW_SOCKETS */
199 
200 /* Define this to keep the old program name (e.g., "dhcpd" for
201  the DHCP server) in place of the (base) name the program was
202  invoked with. */
203 
204 /* #define OLD_LOG_NAME */
205 
206 /* Define this to change the logging facility used by dhcpd. */
207 
208 /* #define DHCPD_LOG_FACILITY LOG_DAEMON */
209 
210 
211 /* Define this if you want to be able to execute external commands
212  during conditional evaluation. */
213 
214 /* #define ENABLE_EXECUTE */
215 
216 /* Define this if you aren't debugging and you want to save memory
217  (potentially a _lot_ of memory) by allocating leases in chunks rather
218  than one at a time. */
219 
220 #define COMPACT_LEASES
221 
222 /* Define this if you want to be able to save and playback server operational
223  traces. */
224 
225 /* #define TRACING */
226 
227 /* Define this if you want the server to use the previous behavior
228  when determining the DDNS TTL. If the user has specified a ddns-ttl
229  option that is used to detemine the ttl. (If the user specifies
230  an option that references the lease structure it is only usable
231  for v4. In that case v6 will use the default.) Otherwise when
232  defined the defaults are: v4 - 1/2 the lease time,
233  v6 - DEFAULT_DDNS_TTL. When undefined the defaults are 1/2 the
234  (preferred) lease time for both but with a cap on the maximum. */
235 
236 /* #define USE_OLD_DDNS_TTL */
237 
238 /* Define this if you want a DHCPv6 server to send replies to the
239  source port of the message it received. This is useful for testing
240  but is only included for backwards compatibility. */
241 /* #define REPLY_TO_SOURCE_PORT */
242 
243 /* Define this if you want to enable strict checks in DNS Updates mechanism.
244  Do not enable this unless are DHCP developer. */
245 /* #define DNS_UPDATES_MEMORY_CHECKS */
246 
247 /* Define this if you want to allow domain list in domain-name option.
248  RFC2132 does not allow that behavior, but it is somewhat used due
249  to historic reasons. Note that it may be removed some time in the
250  future. */
251 
252 #define ACCEPT_LIST_IN_DOMAIN_NAME
253 
254 /* In previous versions of the code when the server generates a NAK
255  it doesn't attempt to determine if the configuration included a
256  server ID for that client. Defining this option causes the server
257  to make a modest effort to determine the server id when building
258  a NAK as a response. This effort will only check the first subnet
259  and pool associated with a shared subnet and will not check for
260  host declarations. With some configurations the server id
261  computed for a NAK may not match that computed for an ACK. */
262 
263 #define SERVER_ID_FOR_NAK
264 
265 /* NOTE: SERVER_ID_CHECK switch has been removed. Enabling server id
266  * checking is now done via the server-id-check statement. Please refer
267  * to the dhcpd manpage (server/dhcpd.conf.5) */
268 
269 /* Include code to do a slow transition of DDNS records
270  from the interim to the standard version, or backwards.
271  The normal code will handle removing an old style record
272  when the name on a lease is being changed. This adds code
273  to handle the case where the name isn't being changed but
274  the old record should be removed to allow a new record to
275  be added. This is the slow transition as leases are only
276  updated as a client touches them. A fast transition would
277  entail updating all the records at once, probably at start
278  up. */
279 #define DDNS_UPDATE_SLOW_TRANSITION
280 
281 /* Define the default prefix length passed from the client to
282  the script when modifying an IPv6 IA_NA or IA_TA address.
283  The two most useful values are 128 which is what the current
284  specifications call for or 64 which is what has been used in
285  the past. For most OSes 128 will indicate that the address
286  is a host address and doesn't include any on-link information.
287  64 indicates that the first 64 bits are the subnet or on-link
288  prefix. */
289 #define DHCLIENT_DEFAULT_PREFIX_LEN 128
290 
291 /* Enable the gentle shutdown signal handling. Currently this
292  means that on SIGINT or SIGTERM a client will release its
293  address and a server in a failover pair will go through
294  partner down. Both of which can be undesireable in some
295  situations. We plan to revisit this feature and may
296  make non-backwards compatible changes including the
297  removal of this define. Use at your own risk. */
298 /* #define ENABLE_GENTLE_SHUTDOWN */
299 
300 /* Include old error codes. This is provided in case you
301  are building an external program similar to omshell for
302  which you need the ISC_R_* error codes. You should switch
303  to DHCP_R_* error codes for those that have been defined
304  (see includes/omapip/result.h). The extra defines and
305  this option will be removed at some time. */
306 /* #define INCLUDE_OLD_DHCP_ISC_ERROR_CODES */
307 
308 /* Use the older factors for scoring a lease in the v6 client code.
309  The new factors cause the client to choose more bindings (IAs)
310  over more addresse within a binding. Most uses will get a
311  single address in a single binding and only get an adverstise
312  from a single server and there won't be a difference. */
313 /* #define USE_ORIGINAL_CLIENT_LEASE_WEIGHTS */
314 
315 /* Print out specific error messages for dhclient, dhcpd
316  or dhcrelay when processing an incorrect command line. This
317  is included for those that might require the exact error
318  messages, as we don't expect that is necessary it is on by
319  default. */
320 #define PRINT_SPECIFIC_CL_ERRORS
321 
322 /* Limit the value of a file descriptor the serve will use
323  when accepting a connecting request. This can be used to
324  limit the number of TCP connections that the server will
325  allow at one time. A value of 0 means there is no limit.*/
326 #define MAX_FD_VALUE 200
327 
328 /* Enable enforcement of the require option statement as documented
329  * in man page. Instructs the dhclient, when in -6 mode, to discard
330  * offered leases that do not contain all options specified as required
331  * in the client's configuration file. The client already enforces this
332  * in -4 mode. */
333 /* #define ENFORCE_DHCPV6_CLIENT_REQUIRE */
334 
335 /* Enable the invocation of the client script with a FAIL state code
336  * by dhclient when running in one-try mode (-T) and the attempt to
337  * obtain the desired lease(s) fails. Applies to IPv4 mode only. */
338 /* #define CALL_SCRIPT_ON_ONETRY_FAIL */
339 
340 /* Include definitions for various options. In general these
341  should be left as is, but if you have already defined one
342  of these and prefer your definition you can comment the
343  RFC define out to avoid conflicts */
344 #define RFC2563_OPTIONS
345 #define RFC2937_OPTIONS
346 #define RFC4776_OPTIONS
347 #define RFC4833_OPTIONS
348 #define RFC4994_OPTIONS
349 #define RFC5192_OPTIONS
350 #define RFC5223_OPTIONS
351 #define RFC5417_OPTIONS
352 #define RFC5460_OPTIONS
353 #define RFC5969_OPTIONS
354 #define RFC5970_OPTIONS
355 #define RFC5986_OPTIONS
356 #define RFC6011_OPTIONS
357 #define RFC6011_OPTIONS
358 #define RFC6153_OPTIONS
359 #define RFC6334_OPTIONS
360 #define RFC6440_OPTIONS
361 #define RFC6731_OPTIONS
362 #define RFC6939_OPTIONS
363 #define RFC6977_OPTIONS
364 #define RFC7083_OPTIONS
365 #define RFC7341_OPTIONS
366 #define RFC7618_OPTIONS
367 #define RFC7710_OPTIONS