summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorThomas Markwalder <tmark@isc.org>2017-12-19 15:51:02 -0500
committerThomas Markwalder <tmark@isc.org>2017-12-19 15:51:02 -0500
commitab77c8b8b58ae5741482886c74515d8c0772a92b (patch)
tree0582e874087f06cdf90ec150c31c2cba9d28f26d /server
parenta2a0f98c21c7c9926bb8901344e939e276a6242e (diff)
downloadisc-dhcp-ab77c8b8b58ae5741482886c74515d8c0772a92b.tar.gz
[master] Restores use of env vars for lease and pid files
Merges in rt46859.
Diffstat (limited to 'server')
-rw-r--r--server/dhcpd.c31
-rw-r--r--server/dhcpd.conf.5108
2 files changed, 65 insertions, 74 deletions
diff --git a/server/dhcpd.c b/server/dhcpd.c
index ea62d1a0..dfc617d0 100644
--- a/server/dhcpd.c
+++ b/server/dhcpd.c
@@ -271,9 +271,9 @@ main(int argc, char **argv) {
struct parse *parse;
int lose;
#endif
- int no_dhcpd_conf = 0;
- int no_dhcpd_db = 0;
- int no_dhcpd_pid = 0;
+ int have_dhcpd_conf = 0;
+ int have_dhcpd_db = 0;
+ int have_dhcpd_pid = 0;
#ifdef DHCPv6
int local_family_set = 0;
#ifdef DHCP4o6
@@ -464,17 +464,17 @@ main(int argc, char **argv) {
if (++i == argc)
usage(use_noarg, argv[i-1]);
path_dhcpd_conf = argv [i];
- no_dhcpd_conf = 1;
+ have_dhcpd_conf = 1;
} else if (!strcmp (argv [i], "-lf")) {
if (++i == argc)
usage(use_noarg, argv[i-1]);
path_dhcpd_db = argv [i];
- no_dhcpd_db = 1;
+ have_dhcpd_db = 1;
} else if (!strcmp (argv [i], "-pf")) {
if (++i == argc)
usage(use_noarg, argv[i-1]);
path_dhcpd_pid = argv [i];
- no_dhcpd_pid = 1;
+ have_dhcpd_pid = 1;
} else if (!strcmp(argv[i], "--no-pid")) {
no_pid_file = ISC_TRUE;
} else if (!strcmp (argv [i], "-t")) {
@@ -570,42 +570,43 @@ main(int argc, char **argv) {
}
#endif /* DHCPv6 && DHCP4o6 */
- if (!no_dhcpd_conf && (s = getenv ("PATH_DHCPD_CONF"))) {
+ if (!have_dhcpd_conf && (s = getenv ("PATH_DHCPD_CONF"))) {
path_dhcpd_conf = s;
}
#ifdef DHCPv6
if (local_family == AF_INET6) {
/* DHCPv6: override DHCPv4 lease and pid filenames */
- if (!no_dhcpd_db) {
+ if (!have_dhcpd_db) {
if ((s = getenv ("PATH_DHCPD6_DB")))
path_dhcpd_db = s;
else
path_dhcpd_db = _PATH_DHCPD6_DB;
}
- if (!no_dhcpd_pid) {
+ if (!have_dhcpd_pid) {
if ((s = getenv ("PATH_DHCPD6_PID")))
path_dhcpd_pid = s;
else
path_dhcpd_pid = _PATH_DHCPD6_PID;
}
} else
-#else /* !DHCPv6 */
+#endif /* DHCPv6 */
{
- if (!no_dhcpd_db && (s = getenv ("PATH_DHCPD_DB"))) {
+ if (!have_dhcpd_db && (s = getenv ("PATH_DHCPD_DB"))) {
path_dhcpd_db = s;
+ have_dhcpd_db = 1;
}
- if (!no_dhcpd_pid && (s = getenv ("PATH_DHCPD_PID"))) {
+ if (!have_dhcpd_pid && (s = getenv ("PATH_DHCPD_PID"))) {
path_dhcpd_pid = s;
+ have_dhcpd_pid = 1;
}
}
-#endif /* DHCPv6 */
/*
* convert relative path names to absolute, for files that need
* to be reopened after chdir() has been called
*/
- if (path_dhcpd_db[0] != '/') {
+ if (have_dhcpd_db && path_dhcpd_db[0] != '/') {
const char *path = path_dhcpd_db;
path_dhcpd_db = realpath(path_dhcpd_db, NULL);
if (path_dhcpd_db == NULL)
@@ -795,7 +796,7 @@ main(int argc, char **argv) {
#if defined (TRACING)
if (traceinfile) {
- if (!no_dhcpd_db) {
+ if (!have_dhcpd_db) {
log_error ("%s", "");
log_error ("** You must specify a lease file with -lf.");
log_error (" Dhcpd will not overwrite your default");
diff --git a/server/dhcpd.conf.5 b/server/dhcpd.conf.5
index 1ba4009f..b32915d4 100644
--- a/server/dhcpd.conf.5
+++ b/server/dhcpd.conf.5
@@ -2633,31 +2633,16 @@ statement
.B lease-file-name \fIname\fB;\fR
.PP
.I Name
-should be the name of the DHCP server's lease file. By default, this
-is DBDIR/dhcpd.leases. This statement \fBmust\fR appear in the outer
-scope of the configuration file - if it appears in some other scope,
-it will have no effect. Furthermore, it has no effect if overridden
-by the
-.B -lf
-flag or the
-.B PATH_DHCPD_DB
-environment variable.
-.RE
-.PP
-The
-.I limit-addrs-per-ia
-statement
-.RS 0.25i
+Where \fIname\fR is the name of the DHCP server's lease file. By default,
+this is DBDIR/dhcpd.leases. This statement \fBmust\fR appear in the outer
+scope of the configuration file - if it appears in some other scope, it will
+have no effect. The value must be the absolute path of the file to use.
+The order of precedence the server uses for the lease file name
+is:
.PP
-.B limit-addrs-per-ia \fInumber\fB;\fR
-.PP
-By default, the DHCPv6 server will limit clients to one IAADDR per IA
-option, meaning one address. If you wish to permit clients to hang onto
-multiple addresses at a time, configure a larger \fInumber\fR here.
-.PP
-Note that there is no present method to configure the server to forcibly
-configure the client with one IP address per each subnet on a shared network.
-This is left to future work.
+ 1. \fBlease-file-name\fR configuration file statement.
+ 2. \fB-lf\fR command line flag.
+ 3. \fBPATH_DHCPD_DB\fR environment variable.
.RE
.PP
The
@@ -2667,21 +2652,16 @@ statement
.PP
.B dhcpv6-lease-file-name \fIname\fB;\fR
.PP
-.I Name
-is the name of the lease file to use if and only if the server is running
-in DHCPv6 mode. By default, this is DBDIR/dhcpd6.leases. This statement,
-like
-.I lease-file-name,
-\fBmust\fR appear in the outer scope of the configuration file. It
-has no effect if overridden by the
-.B -lf
-flag or the
-.B PATH_DHCPD6_DB
-environment variable. If
-.I dhcpv6-lease-file-name
-is not specified, but
-.I lease-file-name
-is, the latter value will be used.
+Where \fIname\fR is the name of the DHCP server's lease file when the server
+is running DHCPv6. By default, this is DBDIR/dhcpd6.leases. This statement
+\fBmust\fR appear in the outer scope of the configuration file - if it appears
+in some other scope, it will have no effect. The value must be the absolute
+path of the file to use. The order of precedence the server uses
+for the lease file name is:
+.PP
+ 1. \fBdhcpv6-lease-file-name\fR configuration file statement.
+ 2. \fB-lf\fR command line flag.
+ 3. \fBPATH_DHCPD6_DB\fR environment variable.
.RE
.PP
The
@@ -2705,6 +2685,22 @@ automatically reads the values in either format.
.RE
.PP
The
+.I limit-addrs-per-ia
+statement
+.RS 0.25i
+.PP
+.B limit-addrs-per-ia \fInumber\fB;\fR
+.PP
+By default, the DHCPv6 server will limit clients to one IAADDR per IA
+option, meaning one address. If you wish to permit clients to hang onto
+multiple addresses at a time, configure a larger \fInumber\fR here.
+.PP
+Note that there is no present method to configure the server to forcibly
+configure the client with one IP address per each subnet on a shared network.
+This is left to future work.
+.RE
+.PP
+The
.I local-port
statement
.RS 0.25i
@@ -2970,14 +2966,13 @@ statement
.I Name
should be the name of the DHCP server's process ID file. This is the
file in which the DHCP server's process ID is stored when the server
-starts. By default, this is RUNDIR/dhcpd.pid. Like the
-.I lease-file-name
-statement, this statement must appear in the outer scope
-of the configuration file. It has no effect if overridden by the
-.B -pf
-flag or the
-.B PATH_DHCPD_PID
-environment variable.
+starts. By default, this is RUNDIR/dhcpd.pid. Like the \fIlease-file-name\fR
+statement, this statement must appear in the outer scope of the configuration
+file. The order of precedence used by the server is:
+.PP
+ 1. \fBpid-file-name\fR configuration file statement.
+ 2. \fB-lf\fR command line flag.
+ 3. \fBPATH_DHCPD_PID\fR environment variable.
.PP
The
.I dhcpv6-pid-file-name
@@ -2989,18 +2984,13 @@ statement
.I Name
is the name of the pid file to use if and only if the server is running
in DHCPv6 mode. By default, this is DBDIR/dhcpd6.pid. This statement,
-like
-.I pid-file-name,
-\fBmust\fR appear in the outer scope of the configuration file. It
-has no effect if overridden by the
-.B -pf
-flag or the
-.B PATH_DHCPD6_PID
-environment variable. If
-.I dhcpv6-pid-file-name
-is not specified, but
-.I pid-file-name
-is, the latter value will be used.
+like \fIpid-file-name\fr, \fBmust\fR appear in the outer scope of the
+configuration file. The order of precedence used by the server is:
+.PP
+ 1. \fBdhcpv6-pid-file-name\fR configuration file statement.
+ 2. \fB-lf\fR command line flag.
+ 3. \fBPATH_DHCPD6_PID\fR environment variable.
+.PP
.RE
.PP
The