2
0
mirror of https://gitlab.isc.org/isc-projects/dhcp synced 2025-08-22 18:07:25 +00:00

A new server config option "fqdn-reply" specifies whether the server

should send out option 81 (FQDN).  Defaults to "on".  If set to "off",
the FQDN option is not sent, even if the client requested it.  This is
needed because some clients misbehave otherwise. [rt16624]
This commit is contained in:
Evan Hunt 2007-04-27 22:48:00 +00:00
parent a58da042f5
commit 1ba87b376b
4 changed files with 26 additions and 3 deletions

View File

@ -27,6 +27,12 @@ the README file.
Changes since 3.1.0b1
- A new server config option "fqdn-reply" specifies whether the server
should send out option 81 (FQDN). Defaults to "on". If set to "off",
the FQDN option is not sent, even if the client requested it. This is
needed because some clients misbehave otherwise. Thanks to Christof Chen
at Allianz.
- Allow trace output files (-tf option) to be overwritten, rather than
crashing dhcpd if the file already exists

View File

@ -552,6 +552,7 @@ struct lease_state {
#define SV_LEASEQUERY 49
#define SV_ADAPTIVE_LEASE_TIME_THRESHOLD 50
#define SV_DO_REVERSE_UPDATES 51
#define SV_FQDN_REPLY 52
#if !defined (DEFAULT_PING_TIMEOUT)
# define DEFAULT_PING_TIMEOUT 1

View File

@ -34,7 +34,7 @@
#ifndef lint
static char copyright[] =
"$Id: ddns.c,v 1.25 2007/04/03 16:46:03 dhankins Exp $ Copyright (c) 2004-2007 Internet Systems Consortium. All rights reserved.\n";
"$Id: ddns.c,v 1.26 2007/04/27 22:48:00 each Exp $ Copyright (c) 2004-2007 Internet Systems Consortium. All rights reserved.\n";
#endif /* not lint */
#include "dhcpd.h"
@ -597,6 +597,21 @@ int ddns_updates (struct packet *packet,
}
noerror:
/*
* If fqdn-reply option is disabled in dhcpd.conf, then don't
* send the client an FQDN option at all, even if one was requested.
* (WinXP clients allegedly misbehave if the option is present,
* refusing to handle PTR updates themselves).
*/
if ((oc = lookup_option (&server_universe, state->options,
SV_FQDN_REPLY)) &&
!evaluate_boolean_option_cache (&ignorep, packet, lease,
(struct client_state *)0,
packet->options,
state->options,
&lease->scope, oc, MDL)) {
goto badfqdn;
/* If we're ignoring client updates, then we tell a sort of 'white
* lie'. We've already updated the name the server wants (per the
* config written by the server admin). Now let the client do as
@ -605,7 +620,7 @@ int ddns_updates (struct packet *packet,
* We only form an FQDN option this way if the client supplied an
* FQDN option that had FQDN_SERVER_UPDATE set false.
*/
if (client_ignorep &&
} else if (client_ignorep &&
(oc = lookup_option(&fqdn_universe, packet->options,
FQDN_SERVER_UPDATE)) &&
!evaluate_boolean_option_cache(&ignorep, packet, lease, NULL,

View File

@ -34,7 +34,7 @@
#ifndef lint
static char copyright[] =
"$Id: stables.c,v 1.36 2007/04/03 16:46:03 dhankins Exp $ Copyright (c) 2004-2007 Internet Systems Consortium. All rights reserved.\n";
"$Id: stables.c,v 1.37 2007/04/27 22:48:00 each Exp $ Copyright (c) 2004-2007 Internet Systems Consortium. All rights reserved.\n";
#endif /* not lint */
#include "dhcpd.h"
@ -237,6 +237,7 @@ static struct option server_options[] = {
{ "leasequery", "f", &server_universe, 49, 1 },
{ "adaptive-lease-time-threshold", "B", &server_universe, 50, 1 },
{ "do-reverse-updates", "f", &server_universe, 51, 1 },
{ "fqdn-reply", "f", &server_universe, 52, 1 },
{ NULL, NULL, NULL, 0, 0 }
};