2
0
mirror of https://gitlab.isc.org/isc-projects/dhcp synced 2025-08-29 21:38:10 +00:00

- dhclient will now fork() into the background once it binds to an

IPv6 address, or immediately if the -n flag is supplised.
  [ISC-Bugs #16872]

- -q is now the default behaviour on dhclient, with -d or -v enabling
  non-quiet (stderr logging) mode.  [ISC-Bugs #16872]
This commit is contained in:
David Hankins 2007-05-18 18:45:51 +00:00
parent 4ba5891941
commit 8ea19a715c
5 changed files with 49 additions and 15 deletions

View File

@ -74,6 +74,12 @@ the README file.
- Corrected a segmentation violation in DHCPv4 socket processing.
- dhclient will now fork() into the background once it binds to an
IPv6 address, or immediately if the -n flag is supplised.
- -q is now the default behaviour on dhclient, with -d or -v enabling
non-quiet (stderr logging) mode.
Changes since 3.1.0 (NEW FEATURES)
- DHCPv6 Client and Server protocol support. Use '-6' to run the daemons

View File

@ -24,7 +24,7 @@
#ifndef lint
static char ocopyright[] =
"$Id: dhc6.c,v 1.3 2007/05/17 18:27:10 dhankins Exp $ Copyright (c) 2006 Internet Systems Consortium. All rights reserved.\n";
"$Id: dhc6.c,v 1.4 2007/05/18 18:45:51 dhankins Exp $ Copyright (c) 2006 Internet Systems Consortium. All rights reserved.\n";
#endif /* not lint */
#include "dhcpd.h"
@ -853,6 +853,9 @@ start_init6(struct client_state *client)
*/
add_timeout(cur_time + (random() % SOL_MAX_DELAY), do_init6, client,
NULL, NULL);
if (nowait)
go_daemon();
}
/* start_init6() kicks off an "init-reboot" version of the process, at
@ -2592,10 +2595,14 @@ start_bound(struct client_state *client)
if (old != NULL)
dhc6_marshall_values("old_", client, old,
oldia, oldia->addrs);
oldia,
oldia != NULL ?
oldia->addrs : NULL);
dhc6_marshall_values("new_", client, lease, ia,
NULL);
script_go(client);
}
}
@ -2610,8 +2617,12 @@ start_bound(struct client_state *client)
old->bindings->addrs : NULL);
dhc6_marshall_values("new_", client, lease, NULL, NULL);
script_go(client);
}
go_daemon();
if (client->old_lease != NULL) {
dhc6_lease_destroy(client->old_lease, MDL);
client->old_lease = NULL;

View File

@ -1,4 +1,4 @@
.\" $Id: dhclient.8,v 1.21 2007/05/08 23:05:20 dhankins Exp $
.\" $Id: dhclient.8,v 1.22 2007/05/18 18:45:51 dhankins Exp $
.\"
.\" Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
.\" Copyright (c) 1996-2003 by Internet Software Consortium
@ -88,6 +88,12 @@ relay
.B -w
]
[
.B -v
]
[
.B --version
]
[
.I if0
[
.I ...ifN
@ -116,6 +122,9 @@ If given the -6 command line argument, dhclient will use the DHCPv6
protocol to obtain whatever PIv6 addresses are available along with
configuration parameters. Information-request is not yet supported.
.PP
If given the --version command line argument, dhclient will print its
version number and exit.
.PP
On startup, dhclient reads the
.IR dhclient.conf
for configuration instructions. It then gets a list of all the
@ -211,14 +220,17 @@ just as one would assign a variable in a shell. Eg:
.B -e
.I IF_METRIC=1
.PP
The client normally prints a startup message and displays the
protocol sequence to the standard error descriptor until it has
acquired an address, and then only logs messages using the
The client normally prints no output during its startup sequence. It
can be made to emit verbose messages displaying the startup sequence events
until it has acquired an address by supplying the
.B -v
command line argument. In either case, the client logs messages using
the
.B syslog (3)
facility. The
facility. A
.B -q
flag prevents any messages other than errors from being printed to the
standard error descriptor.
command line argument is provided for backwards compatibility, but since
dhclient is quiet by default, it has no effect.
.PP
The client normally doesn't release the current lease as it is not
required by the DHCP protocol. Some cable ISPs require their clients

View File

@ -32,7 +32,7 @@
#ifndef lint
static char ocopyright[] =
"$Id: dhclient.c,v 1.148 2007/05/17 18:27:10 dhankins Exp $ Copyright (c) 2004-2006 Internet Systems Consortium. All rights reserved.\n";
"$Id: dhclient.c,v 1.149 2007/05/18 18:45:51 dhankins Exp $ Copyright (c) 2004-2006 Internet Systems Consortium. All rights reserved.\n";
#endif /* not lint */
#include "dhcpd.h"
@ -73,7 +73,7 @@ int no_daemon=0;
struct string_list *client_env=NULL;
int client_env_count=0;
int onetry=0;
int quiet=0;
int quiet=1;
int nowait=0;
char *mockup_relay = NULL;
@ -169,6 +169,7 @@ main(int argc, char **argv) {
ntohs (local_port));
} else if (!strcmp (argv [i], "-d")) {
no_daemon = 1;
quiet = 0;
} else if (!strcmp (argv [i], "-pf")) {
if (++i == argc)
usage ();
@ -193,7 +194,6 @@ main(int argc, char **argv) {
onetry = 1;
} else if (!strcmp (argv [i], "-q")) {
quiet = 1;
quiet_interface_discovery = 1;
} else if (!strcmp (argv [i], "-s")) {
if (++i == argc)
usage ();
@ -221,6 +221,8 @@ main(int argc, char **argv) {
tmp -> next = client_env;
client_env = tmp;
client_env_count++;
} else if (!strcmp(argv[i], "-v")) {
quiet = 0;
} else if (!strcmp (argv [i], "--version")) {
log_info ("isc-dhclient-%s", DHCP_VERSION);
exit (0);
@ -299,8 +301,10 @@ main(int argc, char **argv) {
log_info (arr);
log_info (url);
log_info ("%s", "");
} else
} else {
log_perror = 0;
quiet_interface_discovery = 1;
}
/* If we're given a relay agent address to insert, for testing
purposes, figure out what it is. */
@ -518,7 +522,7 @@ static void usage ()
log_info (arr);
log_info (url);
log_error ("Usage: dhclient [-1dqr] [-nw] [-p <port>] %s",
log_error ("Usage: dhclient [-1dvr] [-nw] [-p <port>] %s",
"[-s server]");
log_error (" [-cf config-file] [-lf lease-file]%s",
"[-pf pid-file] [-e VAR=val]");
@ -3024,7 +3028,6 @@ void go_daemon ()
open("/dev/null", O_RDWR);
open("/dev/null", O_RDWR);
open("/dev/null", O_RDWR);
log_perror = 0; /* No sense logging to /dev/null. */
write_client_pid_file ();
}

View File

@ -2314,6 +2314,8 @@ char *piaddrmask(struct iaddr *, struct iaddr *);
char *piaddrcidr(const struct iaddr *, unsigned int);
/* dhclient.c */
extern int nowait;
extern const char *path_dhclient_conf;
extern const char *path_dhclient_db;
extern const char *path_dhclient_pid;