xref: /titanic_52/usr/src/lib/libdhcputil/README.inittab (revision 7c478bd95313f5f23a4c958a745db2134aa03244)
1*7c478bd9Sstevel@tonic-gate#
2*7c478bd9Sstevel@tonic-gate# CDDL HEADER START
3*7c478bd9Sstevel@tonic-gate#
4*7c478bd9Sstevel@tonic-gate# The contents of this file are subject to the terms of the
5*7c478bd9Sstevel@tonic-gate# Common Development and Distribution License, Version 1.0 only
6*7c478bd9Sstevel@tonic-gate# (the "License").  You may not use this file except in compliance
7*7c478bd9Sstevel@tonic-gate# with the License.
8*7c478bd9Sstevel@tonic-gate#
9*7c478bd9Sstevel@tonic-gate# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*7c478bd9Sstevel@tonic-gate# or http://www.opensolaris.org/os/licensing.
11*7c478bd9Sstevel@tonic-gate# See the License for the specific language governing permissions
12*7c478bd9Sstevel@tonic-gate# and limitations under the License.
13*7c478bd9Sstevel@tonic-gate#
14*7c478bd9Sstevel@tonic-gate# When distributing Covered Code, include this CDDL HEADER in each
15*7c478bd9Sstevel@tonic-gate# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*7c478bd9Sstevel@tonic-gate# If applicable, add the following below this CDDL HEADER, with the
17*7c478bd9Sstevel@tonic-gate# fields enclosed by brackets "[]" replaced with your own identifying
18*7c478bd9Sstevel@tonic-gate# information: Portions Copyright [yyyy] [name of copyright owner]
19*7c478bd9Sstevel@tonic-gate#
20*7c478bd9Sstevel@tonic-gate# CDDL HEADER END
21*7c478bd9Sstevel@tonic-gate#
22*7c478bd9Sstevel@tonic-gateCopyright (c) 2001 by Sun Microsystems, Inc.
23*7c478bd9Sstevel@tonic-gateAll rights reserved.
24*7c478bd9Sstevel@tonic-gate
25*7c478bd9Sstevel@tonic-gateInittab Purpose, Goals, and Functionality
26*7c478bd9Sstevel@tonic-gatePeter Memishian
27*7c478bd9Sstevel@tonic-gateident	"%Z%%M%	%I%	%E% SMI"
28*7c478bd9Sstevel@tonic-gate
29*7c478bd9Sstevel@tonic-gatePROBLEM STATEMENT
30*7c478bd9Sstevel@tonic-gate=================
31*7c478bd9Sstevel@tonic-gate
32*7c478bd9Sstevel@tonic-gateCurrently, each DHCP-related utility that needs to handle DHCP options
33*7c478bd9Sstevel@tonic-gateuses ad-hoc methods for learning and using them, ranging from using
34*7c478bd9Sstevel@tonic-gatehard-coded internal tables to providing published (but distinct)
35*7c478bd9Sstevel@tonic-gateconfiguration files describing these options.
36*7c478bd9Sstevel@tonic-gate
37*7c478bd9Sstevel@tonic-gateOriginally, when only the DHCP server needed to be concerned with DHCP
38*7c478bd9Sstevel@tonic-gateoptions, not having a standard API for managing and parsing DHCP
39*7c478bd9Sstevel@tonic-gateoptions was understandable.  Now, with four consumers of DHCP options
40*7c478bd9Sstevel@tonic-gatein core Solaris (in.dhcpd, dhcpinfo, snoop, and dhcpmgr), the
41*7c478bd9Sstevel@tonic-gatesituation has spiraled out of control.  In addition to the obvious
42*7c478bd9Sstevel@tonic-gatemaintenance headache caused by the redundant code, it has also become
43*7c478bd9Sstevel@tonic-gatea burden to our customers, who already have to cope with multiple
44*7c478bd9Sstevel@tonic-gateplaces where DHCP option information is stored (dhcptags(4),
45*7c478bd9Sstevel@tonic-gatedhcptab(4)).
46*7c478bd9Sstevel@tonic-gate
47*7c478bd9Sstevel@tonic-gateThe inittab API is designed to reduce the confusion, both for the
48*7c478bd9Sstevel@tonic-gatecustomer and the application developer.  Its goal is to provide a
49*7c478bd9Sstevel@tonic-gatesingle configuration for applications to receive their DHCP option
50*7c478bd9Sstevel@tonic-gateknowledge from and general routines for encoding and decoding DHCP
51*7c478bd9Sstevel@tonic-gateoptions.
52*7c478bd9Sstevel@tonic-gate
53*7c478bd9Sstevel@tonic-gateINITTAB
54*7c478bd9Sstevel@tonic-gate=======
55*7c478bd9Sstevel@tonic-gate
56*7c478bd9Sstevel@tonic-gateThe inittab file contains information regarding the syntax and (to
57*7c478bd9Sstevel@tonic-gatesome degree) the semantics of DHCP options.  It is primarily a
58*7c478bd9Sstevel@tonic-gateread-only file (like /etc/termcap) and should not need to be changed
59*7c478bd9Sstevel@tonic-gateby users.  Experienced sysadmins may need to update this file to add
60*7c478bd9Sstevel@tonic-gatenew DHCP options, but this should be rare.
61*7c478bd9Sstevel@tonic-gate
62*7c478bd9Sstevel@tonic-gateThe inittab file consists of inittab records, each being one line long
63*7c478bd9Sstevel@tonic-gateand describing a particular option.  The format is based heavily on
64*7c478bd9Sstevel@tonic-gatethe format for defining symbols in dhcptab(4).  Each line has the
65*7c478bd9Sstevel@tonic-gatefollowing syntax:
66*7c478bd9Sstevel@tonic-gate
67*7c478bd9Sstevel@tonic-gate   option_name	category, code, type, granularity, maximum, consumers
68*7c478bd9Sstevel@tonic-gate
69*7c478bd9Sstevel@tonic-gatewhere:
70*7c478bd9Sstevel@tonic-gate
71*7c478bd9Sstevel@tonic-gate   `option_name' is user-interpretable name of the option (for use with
72*7c478bd9Sstevel@tonic-gate      dhcpinfo(1M) for instance).  This field should at least be per-
73*7c478bd9Sstevel@tonic-gate      category unique and ideally should be unique across all categories.
74*7c478bd9Sstevel@tonic-gate      Of particular note is that options names in the STANDARD, SITE, and
75*7c478bd9Sstevel@tonic-gate      VENDOR spaces should not overlap, or the behavior is undefined.
76*7c478bd9Sstevel@tonic-gate
77*7c478bd9Sstevel@tonic-gate   `category' is one of STANDARD, SITE, VENDOR, FIELD, or INTERNAL and
78*7c478bd9Sstevel@tonic-gate      identifies the namespace in which the option falls.
79*7c478bd9Sstevel@tonic-gate
80*7c478bd9Sstevel@tonic-gate   `code' is the code of this option when it is sent over the
81*7c478bd9Sstevel@tonic-gate      wire.  (note: in most cases, `code' uniquely identifies the
82*7c478bd9Sstevel@tonic-gate      option, without a category.  however, in the case of internal
83*7c478bd9Sstevel@tonic-gate      categories like FIELD or INTERNAL, `code' may be used for
84*7c478bd9Sstevel@tonic-gate      other purposes and thus may not be globally unique).  This field
85*7c478bd9Sstevel@tonic-gate      should be per-category unique and the STANDARD and SITE fields
86*7c478bd9Sstevel@tonic-gate      should not have overlapping code fields or the behavior is
87*7c478bd9Sstevel@tonic-gate      undefined.
88*7c478bd9Sstevel@tonic-gate
89*7c478bd9Sstevel@tonic-gate   `type' describes the payload associated with this option.  Valid
90*7c478bd9Sstevel@tonic-gate      types are IP, ASCII, OCTET, NUMBER, BOOL, UNUMBER8, UNUMBER16,
91*7c478bd9Sstevel@tonic-gate      UNUMBER32, SNUMBER8, SNUMBER16, and SNUMBER32.  For numbers,
92*7c478bd9Sstevel@tonic-gate      a preceding `U' or `S' indicates whether the number is unsigned
93*7c478bd9Sstevel@tonic-gate      or signed, and the trailing number indicates the number of bits
94*7c478bd9Sstevel@tonic-gate      in the number.
95*7c478bd9Sstevel@tonic-gate
96*7c478bd9Sstevel@tonic-gate   `granularity' describes how many units of `type' payload make
97*7c478bd9Sstevel@tonic-gate      up a whole value for this option.  In the case of `NUMBER',
98*7c478bd9Sstevel@tonic-gate      granularity describes the number of bytes in the number.  Note
99*7c478bd9Sstevel@tonic-gate      that `NUMBER' is preserved for compatibility, but the more
100*7c478bd9Sstevel@tonic-gate      descriptive [SU]NUMBER{8,16,32,64} types should preferred.
101*7c478bd9Sstevel@tonic-gate
102*7c478bd9Sstevel@tonic-gate   `maximum' describes how many whole values are allowed for this
103*7c478bd9Sstevel@tonic-gate      option.  0 indicates an infinite number.
104*7c478bd9Sstevel@tonic-gate
105*7c478bd9Sstevel@tonic-gate   `consumers' describe which programs make use of this information.
106*7c478bd9Sstevel@tonic-gate      (`i' for dhcpinfo, `s' for snoop, `d' for in.dhcpd, and
107*7c478bd9Sstevel@tonic-gate       `m' for dhcpmgr).
108*7c478bd9Sstevel@tonic-gate
109*7c478bd9Sstevel@tonic-gateA sample entry would be
110*7c478bd9Sstevel@tonic-gate
111*7c478bd9Sstevel@tonic-gate  StaticRt	STANDARD, 33, IP, 2, 0, isdm
112*7c478bd9Sstevel@tonic-gate
113*7c478bd9Sstevel@tonic-gatewhich describes an option named `StaticRt', that is in the STANDARD
114*7c478bd9Sstevel@tonic-gatecategory (i.e., defined by the DHCP standard), and is option code
115*7c478bd9Sstevel@tonic-gate33, which is of type `IP Address', consisting of a potentially
116*7c478bd9Sstevel@tonic-gateinfinite number of pairs of IP addresses.  Lastly, the consumers of
117*7c478bd9Sstevel@tonic-gateoption are dhcpinfo, snoop, in.dhcpd and dhcpmgr.
118*7c478bd9Sstevel@tonic-gate
119*7c478bd9Sstevel@tonic-gateComments in the inittab file begin with `#', and end with a newline.
120*7c478bd9Sstevel@tonic-gateComments need not start at the beginning of a line.  Lines cannot be
121*7c478bd9Sstevel@tonic-gatecontinued (with `\' for instance).
122*7c478bd9Sstevel@tonic-gate
123*7c478bd9Sstevel@tonic-gateThe inittab file becomes the authoritative source for all DHCP options
124*7c478bd9Sstevel@tonic-gatefor all DHCP option consumers, with the following exceptions and notes:
125*7c478bd9Sstevel@tonic-gate
126*7c478bd9Sstevel@tonic-gate   o  The DHCP agent and DHCP server both have their core protocol-
127*7c478bd9Sstevel@tonic-gate      related functionality hardcoded into them, so changes to the
128*7c478bd9Sstevel@tonic-gate      inittab file do not generally affect their inner workings.
129*7c478bd9Sstevel@tonic-gate
130*7c478bd9Sstevel@tonic-gate   o  A program can specify which entries it wants from the inittab.
131*7c478bd9Sstevel@tonic-gate      This means that some DHCP options will never be used by some
132*7c478bd9Sstevel@tonic-gate      programs, even if they are listed as a `consumer' of the given
133*7c478bd9Sstevel@tonic-gate      option.  An example of this is that the DHCP server never
134*7c478bd9Sstevel@tonic-gate      requests any fields with the VENDOR category. (VENDOR information
135*7c478bd9Sstevel@tonic-gate      for the DHCP server comes from dhcptab(4) instead).
136*7c478bd9Sstevel@tonic-gate
137*7c478bd9Sstevel@tonic-gate   o  In general, changing provided information in a released inittab
138*7c478bd9Sstevel@tonic-gate      file is ill-advised.  Adding new entries should be the extent
139*7c478bd9Sstevel@tonic-gate      of the modifications that are performed.
140*7c478bd9Sstevel@tonic-gate
141*7c478bd9Sstevel@tonic-gate   o  The inittab C API also provides functions which allow programs
142*7c478bd9Sstevel@tonic-gate      to verify that a given entry in the inittab file is correct
143*7c478bd9Sstevel@tonic-gate      (which it does by consulting a compiled-in database of current
144*7c478bd9Sstevel@tonic-gate      options).  In general, this functionality is only used where
145*7c478bd9Sstevel@tonic-gate      absolutely necessary, since it nullifies some of the advantages
146*7c478bd9Sstevel@tonic-gate      of having an inittab.
147*7c478bd9Sstevel@tonic-gate
148*7c478bd9Sstevel@tonic-gate   o  Where a symbol is defined both in the inittab and in dhcptab(4),
149*7c478bd9Sstevel@tonic-gate      inittab is authoritative.  EXTEND symbol definitions in
150*7c478bd9Sstevel@tonic-gate      dhcptab(4) will be deprecated in a future release of Solaris.
151*7c478bd9Sstevel@tonic-gate
152*7c478bd9Sstevel@tonic-gateC-LEVEL API
153*7c478bd9Sstevel@tonic-gate===========
154*7c478bd9Sstevel@tonic-gate
155*7c478bd9Sstevel@tonic-gateEach inittab entry describes a specific DHCP option and is defined as
156*7c478bd9Sstevel@tonic-gatea dhcp_symbol_t (as defined in usr/src/lib/libdhcputil/common/dhcp_symbol.h).
157*7c478bd9Sstevel@tonic-gate
158*7c478bd9Sstevel@tonic-gateIn general, it is expected that inittab entries are acquired via
159*7c478bd9Sstevel@tonic-gateinittab_load(), inittab_getbyname(), or inittab_getbycode() and passed
160*7c478bd9Sstevel@tonic-gateas needed to the remaining inittab_XXX functions.  If consumers need
161*7c478bd9Sstevel@tonic-gateto convert the inittab entries into a different format, then the
162*7c478bd9Sstevel@tonic-gatefields inside the inittab entry may be read directly.  Some inittab
163*7c478bd9Sstevel@tonic-gatefunctions return dynamically allocated parameters; all such parameters
164*7c478bd9Sstevel@tonic-gatecan be freed with free(3c).
165*7c478bd9Sstevel@tonic-gate
166*7c478bd9Sstevel@tonic-gateTo get an inittab entry, one of the following API's must be used:
167*7c478bd9Sstevel@tonic-gate
168*7c478bd9Sstevel@tonic-gate    dhcp_symbol_t *
169*7c478bd9Sstevel@tonic-gate    inittab_load(uchar_t categories, char consumer, size_t *n_entries);
170*7c478bd9Sstevel@tonic-gate
171*7c478bd9Sstevel@tonic-gate    dhcp_symbol_t *
172*7c478bd9Sstevel@tonic-gate    inittab_getbyname(uchar_t categories, char consumer, const char *name);
173*7c478bd9Sstevel@tonic-gate
174*7c478bd9Sstevel@tonic-gate    dhcp_symbol_t *
175*7c478bd9Sstevel@tonic-gate    inittab_getbycode(uchar_t categories, char consumer, unsigned int code);
176*7c478bd9Sstevel@tonic-gate
177*7c478bd9Sstevel@tonic-gatewhere the `categories' parameter consists of the following values OR'd
178*7c478bd9Sstevel@tonic-gatetogether:
179*7c478bd9Sstevel@tonic-gate
180*7c478bd9Sstevel@tonic-gate    #define ITAB_CAT_STANDARD	0x01
181*7c478bd9Sstevel@tonic-gate    #define ITAB_CAT_FIELD	0x02
182*7c478bd9Sstevel@tonic-gate    #define ITAB_CAT_INTERNAL	0x04
183*7c478bd9Sstevel@tonic-gate    #define ITAB_CAT_VENDOR	0x08
184*7c478bd9Sstevel@tonic-gate    #define ITAB_CAT_SITE	0x10
185*7c478bd9Sstevel@tonic-gate
186*7c478bd9Sstevel@tonic-gateand the `consumer' field consists of one of the following:
187*7c478bd9Sstevel@tonic-gate
188*7c478bd9Sstevel@tonic-gate    #define ITAB_CONS_INFO	'i'
189*7c478bd9Sstevel@tonic-gate    #define ITAB_CONS_SERVER	'd'
190*7c478bd9Sstevel@tonic-gate    #define ITAB_CONS_SNOOP	's'
191*7c478bd9Sstevel@tonic-gate    #define ITAB_CONS_MANAGER	'm'
192*7c478bd9Sstevel@tonic-gate
193*7c478bd9Sstevel@tonic-gateinittab_load() creates and returns an array of dhcp_symbol_t's made
194*7c478bd9Sstevel@tonic-gateup of all the entries of the specified categories that are available
195*7c478bd9Sstevel@tonic-gateto the provided consumer.  Note that there is no specified order to
196*7c478bd9Sstevel@tonic-gatethe entries returned.  The array is dynamically allocated, and the
197*7c478bd9Sstevel@tonic-gatenumber of items in the array is returned in the `n_entries' parameter.
198*7c478bd9Sstevel@tonic-gate
199*7c478bd9Sstevel@tonic-gateinittab_getbyname()/inittab_getbycode() return an dhcp_symbol_t
200*7c478bd9Sstevel@tonic-gatematching the given name or code for the provided category and the
201*7c478bd9Sstevel@tonic-gateprovided consumer.  The dhcp_symbol_t is dynamically allocated.
202*7c478bd9Sstevel@tonic-gate
203*7c478bd9Sstevel@tonic-gateSome inittab consumers may need to make sure that a given inittab
204*7c478bd9Sstevel@tonic-gateentry has not been corrupted in the inittab file.  For those cases,
205*7c478bd9Sstevel@tonic-gateinittab_verify() can be used to validate an inittab_entry against an
206*7c478bd9Sstevel@tonic-gateinternal table compiled into the inittab API:
207*7c478bd9Sstevel@tonic-gate
208*7c478bd9Sstevel@tonic-gate    int
209*7c478bd9Sstevel@tonic-gate    inittab_verify(dhcp_symbol_t *inittab_ent,
210*7c478bd9Sstevel@tonic-gate		   dhcp_symbol_t *internal_ent);
211*7c478bd9Sstevel@tonic-gate
212*7c478bd9Sstevel@tonic-gatewhere `inittab_ent' is an dhcp_symbol_t previously returned from
213*7c478bd9Sstevel@tonic-gateinittab_load() or inittab_getbyX().  inittab_verify() returns
214*7c478bd9Sstevel@tonic-gateITAB_SUCCESS if `inittab_ent' is verified to be correct, ITAB_FAILURE
215*7c478bd9Sstevel@tonic-gateif `inittab_ent' is incorrect, and ITAB_UNKNOWN if inittab_verify()
216*7c478bd9Sstevel@tonic-gatedoesn't know.  If `internal_ent' is non-NULL, it is filled in with the
217*7c478bd9Sstevel@tonic-gatevalue of the option known internally to the inittab API.  Entries are
218*7c478bd9Sstevel@tonic-gateverified using the `ds_category' and `ds_code' fields from the
219*7c478bd9Sstevel@tonic-gatedhcp_symbol_t.  For ITAB_SUCCESS to be returned, the entry passed in
220*7c478bd9Sstevel@tonic-gateand the internal entry both must have the same ds_gran, ds_max, and
221*7c478bd9Sstevel@tonic-gateds_type values.
222*7c478bd9Sstevel@tonic-gate
223*7c478bd9Sstevel@tonic-gateTo perform encoding and decoding of DHCP options, the following
224*7c478bd9Sstevel@tonic-gateroutines are provided:
225*7c478bd9Sstevel@tonic-gate
226*7c478bd9Sstevel@tonic-gate    uchar_t *
227*7c478bd9Sstevel@tonic-gate    inittab_encode(dhcp_symbol_t *inittab_ent, const char *data,
228*7c478bd9Sstevel@tonic-gate		   uint16_t *lengthp, boolean_t just_payload);
229*7c478bd9Sstevel@tonic-gate
230*7c478bd9Sstevel@tonic-gate    const char *
231*7c478bd9Sstevel@tonic-gate    inittab_decode(dhcp_symbol_t *inittab_ent, uchar_t *data,
232*7c478bd9Sstevel@tonic-gate		   uint16_t length, boolean_t just_payload);
233*7c478bd9Sstevel@tonic-gate
234*7c478bd9Sstevel@tonic-gateBoth of these routines take an `inittab_ent' that was previously
235*7c478bd9Sstevel@tonic-gatereturned from inittab_load() or inittab_getbyX().
236*7c478bd9Sstevel@tonic-gate
237*7c478bd9Sstevel@tonic-gateFor inittab_encode(), `data' is an ASCII string to encode, and a
238*7c478bd9Sstevel@tonic-gatepointer to a dynamically allocated byte-array representing the encoded
239*7c478bd9Sstevel@tonic-gateoption is returned.  The size of the resulting data returned is stored
240*7c478bd9Sstevel@tonic-gatein `lengthp'.  Note that if the `just_payload' option is set, then
241*7c478bd9Sstevel@tonic-gateonly the payload of the option is returned (i.e., the option code and
242*7c478bd9Sstevel@tonic-gateoption length is left off the returned data).  To encode multiple
243*7c478bd9Sstevel@tonic-gateitems of a given type, separate the items by spaces, such as
244*7c478bd9Sstevel@tonic-gate"109.108.21.1 148.232.2.1".  Octal data should be of the form "0xNN"
245*7c478bd9Sstevel@tonic-gatewhere NN is a hexadecimal digit representing the byte.
246*7c478bd9Sstevel@tonic-gate
247*7c478bd9Sstevel@tonic-gateFor inittab_decode(), `data' is a byte-array representing an encoded
248*7c478bd9Sstevel@tonic-gateoption, which is `length' bytes long.  A pointer to a dynamically
249*7c478bd9Sstevel@tonic-gateallocated string representing the option's value in ASCII is returned.
250*7c478bd9Sstevel@tonic-gateNote that if the `data' byte-array consists of just the payload of the
251*7c478bd9Sstevel@tonic-gateoption, then the `just_payload' option should be set.
252*7c478bd9Sstevel@tonic-gate
253*7c478bd9Sstevel@tonic-gateIn addition, the following routines return extended error information
254*7c478bd9Sstevel@tonic-gatefor reporting parsing errors:
255*7c478bd9Sstevel@tonic-gate
256*7c478bd9Sstevel@tonic-gate    uchar_t *
257*7c478bd9Sstevel@tonic-gate    inittab_encode_e(dhcp_symbol_t *inittab_ent, const char *data,
258*7c478bd9Sstevel@tonic-gate		   uint16_t *lengthp, boolean_t just_payload, int *eerrno);
259*7c478bd9Sstevel@tonic-gate
260*7c478bd9Sstevel@tonic-gate    const char *
261*7c478bd9Sstevel@tonic-gate    inittab_decode_e(dhcp_symbol_t *inittab_ent, uchar_t *data,
262*7c478bd9Sstevel@tonic-gate		   uint16_t length, boolean_t just_payload, int *eerrno);
263*7c478bd9Sstevel@tonic-gate
264*7c478bd9Sstevel@tonic-gate
265*7c478bd9Sstevel@tonic-gateThe extended codes:
266*7c478bd9Sstevel@tonic-gate
267*7c478bd9Sstevel@tonic-gate/*
268*7c478bd9Sstevel@tonic-gate * DHCP Extended error codes
269*7c478bd9Sstevel@tonic-gate */
270*7c478bd9Sstevel@tonic-gate#define ITAB_SYNTAX_ERROR       (-1)
271*7c478bd9Sstevel@tonic-gate#define ITAB_BAD_IPADDR         (-2)
272*7c478bd9Sstevel@tonic-gate#define ITAB_BAD_STRING         (-3)
273*7c478bd9Sstevel@tonic-gate#define ITAB_BAD_OCTET          (-4)
274*7c478bd9Sstevel@tonic-gate#define ITAB_BAD_NUMBER         (-5)
275*7c478bd9Sstevel@tonic-gate#define ITAB_BAD_BOOLEAN        (-6)
276*7c478bd9Sstevel@tonic-gate#define ITAB_NOT_ENOUGH_IP      (-7)
277*7c478bd9Sstevel@tonic-gate#define ITAB_BAD_GRAN           (-8)
278*7c478bd9Sstevel@tonic-gate
279*7c478bd9Sstevel@tonic-gate
280*7c478bd9Sstevel@tonic-gateENVIRONMENT VARIABLES
281*7c478bd9Sstevel@tonic-gate=====================
282*7c478bd9Sstevel@tonic-gate
283*7c478bd9Sstevel@tonic-gateIn order to aid in debugging inittab-related problems, two environment
284*7c478bd9Sstevel@tonic-gatevariables, DHCP_INITTAB_DEBUG, and DHCP_INITTAB_PATH, can be set
285*7c478bd9Sstevel@tonic-gatebefore starting a program which uses the inittab API.
286*7c478bd9Sstevel@tonic-gate
287*7c478bd9Sstevel@tonic-gateIf DHCP_INITTAB_DEBUG is an exported environment variable, then the
288*7c478bd9Sstevel@tonic-gateinittab API will print useful diagnostic messages handy in tracking
289*7c478bd9Sstevel@tonic-gatedown problems in the inittab file.  If DHCP_INITTAB_PATH is an
290*7c478bd9Sstevel@tonic-gateexported environment variable, then its value is used as the location
291*7c478bd9Sstevel@tonic-gateof the inittab file, instead of /etc/dhcp/inittab.
292*7c478bd9Sstevel@tonic-gate
293*7c478bd9Sstevel@tonic-gate--
294*7c478bd9Sstevel@tonic-gatePeter Memishian, Internet Engineering, Solaris Software (meem@east.sun.com)
295