summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Hankins <dhankins@isc.org>2005-02-22 21:11:51 +0000
committerDavid Hankins <dhankins@isc.org>2005-02-22 21:11:51 +0000
commitec5b877f1fb50396a8934336ae801b78a222df18 (patch)
treeae121df1ebd3522da5b29dddaf748d3aeb17cff1
parent7bca70686bfb415006ca584eed1f875f57ba93fe (diff)
downloadisc-dhcp-ec5b877f1fb50396a8934336ae801b78a222df18.tar.gz
- merge rt13329
-rw-r--r--RELNOTES5
-rw-r--r--server/dhcp.c5
2 files changed, 7 insertions, 3 deletions
diff --git a/RELNOTES b/RELNOTES
index 3ff2183c..8dbe0139 100644
--- a/RELNOTES
+++ b/RELNOTES
@@ -76,6 +76,11 @@ and for prodding me into improving it.
single-threaded system. In all cases, ISC DHCP should now hold fast to
a 1-second timeout, trying only once.
+- The siaddr field was being improperly set to the server-identifier when
+ responding to DHCP messages. RFC2131 clarified the siaddr field as
+ meaning the 'next server in the bootstrap process', eg a tftp server.
+ The siaddr field is now left zeroed unless next-server is configured.
+
Changes since 3.0.2rc3
- A previously undocumented configuration directive, 'local-address',
diff --git a/server/dhcp.c b/server/dhcp.c
index 8e1a48cf..c75b3f8c 100644
--- a/server/dhcp.c
+++ b/server/dhcp.c
@@ -34,7 +34,7 @@
#ifndef lint
static char copyright[] =
-"$Id: dhcp.c,v 1.192.2.44 2004/11/24 17:39:19 dhankins Exp $ Copyright (c) 2004 Internet Systems Consortium. All rights reserved.\n";
+"$Id: dhcp.c,v 1.192.2.45 2005/02/22 21:11:51 dhankins Exp $ Copyright (c) 2004 Internet Systems Consortium. All rights reserved.\n";
#endif /* not lint */
#include "dhcpd.h"
@@ -1209,7 +1209,6 @@ void dhcpinform (packet, ms_nulltp)
log_info ("%s", msgbuf);
/* Figure out the address of the boot file server. */
- raw.siaddr = from;
if ((oc =
lookup_option (&server_universe, options, SV_NEXT_SERVER))) {
if (evaluate_option_cache (&d1, packet, (struct lease *)0,
@@ -2486,7 +2485,7 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp)
}
/* Figure out the address of the boot file server. */
- memcpy (&state -> siaddr, state -> from.iabuf, sizeof state -> siaddr);
+ memset (&state -> siaddr, 0, sizeof state -> siaddr);
if ((oc =
lookup_option (&server_universe,
state -> options, SV_NEXT_SERVER))) {