Commit ab77c8b8 authored by Thomas Markwalder's avatar Thomas Markwalder

[master] Restores use of env vars for lease and pid files

    Merges in rt46859.
parent a2a0f98c
......@@ -298,10 +298,10 @@ dhcp-users@lists.isc.org.
- Added to the server (-6) a new statement, local-address6, which specifies
the source address of packets sent by the server. An additional flag,
bind-local-address6, disabled by default makes the service socket to
be bound to local-address6. Note as for local-address this does not
work with direct client: a relay has to forward packets to the server
using the local-address6 destination.
bind-local-address6, disabled by default, binds the service socket to
to local-address6. Note that bind-local-address does not work with direct
clients: a relay has to forward packets to the server using the
local-address6 destination.
[ISC-Bugs #46084]
Changes since 4.3.6 (Bugs):
......@@ -338,6 +338,14 @@ dhcp-users@lists.isc.org.
direction.
[ISC-Bugs #46767]
- The server now recognizes environment variables PATH_DHCPD_DB and
PATH_DHCPD_PID. These had been incorrectly compiled out of the code
unless DHCPv6 support was disabled. Additionally, the server man
pages were corrected to accurately reflect how the server chooses
file names (see lease-file-name and pid-file-name statements). Thanks
to Fernando Soto at Bluecat for bringing this matter to our attention.
[ISC-Bugs #46859]
Changes since 4.3.6b1
- None
......
......@@ -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");
......
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment