2
0
mirror of https://gitlab.isc.org/isc-projects/dhcp synced 2025-09-04 08:15:14 +00:00

- Add tracing hooks.

- Fix a bug in handling of DHCPNAK that would make the server act like
  it wasn't authoritative.
This commit is contained in:
Ted Lemon
2001-02-12 21:00:02 +00:00
parent d8765900f4
commit 27e90ede57

View File

@@ -43,7 +43,7 @@
#ifndef lint #ifndef lint
static char copyright[] = static char copyright[] =
"$Id: dhcp.c,v 1.180 2001/01/26 05:57:35 mellon Exp $ Copyright (c) 1995-2000 The Internet Software Consortium. All rights reserved.\n"; "$Id: dhcp.c,v 1.181 2001/02/12 21:00:02 mellon Exp $ Copyright (c) 1995-2000 The Internet Software Consortium. All rights reserved.\n";
#endif /* not lint */ #endif /* not lint */
#include "dhcpd.h" #include "dhcpd.h"
@@ -52,6 +52,10 @@ int outstanding_pings;
static char dhcp_message [256]; static char dhcp_message [256];
#if defined (TRACING)
# define send_packet trace_packet_send
#endif
void dhcp (packet) void dhcp (packet)
struct packet *packet; struct packet *packet;
{ {
@@ -380,6 +384,8 @@ void dhcprequest (packet, ms_nulltp, ip_lease)
#if defined (FAILOVER_PROTOCOL) #if defined (FAILOVER_PROTOCOL)
dhcp_failover_state_t *peer; dhcp_failover_state_t *peer;
#endif #endif
int have_server_identifier = 0;
int have_requested_addr = 0;
oc = lookup_option (&dhcp_universe, packet -> options, oc = lookup_option (&dhcp_universe, packet -> options,
DHO_DHCP_REQUESTED_ADDRESS); DHO_DHCP_REQUESTED_ADDRESS);
@@ -392,6 +398,7 @@ void dhcprequest (packet, ms_nulltp, ip_lease)
cip.len = 4; cip.len = 4;
memcpy (cip.iabuf, data.data, 4); memcpy (cip.iabuf, data.data, 4);
data_string_forget (&data, MDL); data_string_forget (&data, MDL);
have_requested_addr = 1;
} else { } else {
oc = (struct option_cache *)0; oc = (struct option_cache *)0;
cip.len = 4; cip.len = 4;
@@ -427,6 +434,7 @@ void dhcprequest (packet, ms_nulltp, ip_lease)
memcpy (sip.iabuf, data.data, 4); memcpy (sip.iabuf, data.data, 4);
data_string_forget (&data, MDL); data_string_forget (&data, MDL);
sprintf (smbuf, " (%s)", piaddr (sip)); sprintf (smbuf, " (%s)", piaddr (sip));
have_server_identifier = 1;
} else } else
smbuf [0] = 0; smbuf [0] = 0;
@@ -517,7 +525,7 @@ void dhcprequest (packet, ms_nulltp, ip_lease)
if (!packet -> shared_network || if (!packet -> shared_network ||
(packet -> raw -> ciaddr.s_addr && (packet -> raw -> ciaddr.s_addr &&
packet -> raw -> giaddr.s_addr) || packet -> raw -> giaddr.s_addr) ||
(oc && !packet -> raw -> ciaddr.s_addr)) { (have_requested_addr && !packet -> raw -> ciaddr.s_addr)) {
/* If we don't know where it came from but we do know /* If we don't know where it came from but we do know
where it claims to have come from, it didn't come where it claims to have come from, it didn't come