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:
parent
a58da042f5
commit
1ba87b376b
6
RELNOTES
6
RELNOTES
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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 }
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user