diff options
author | David Hankins <dhankins@isc.org> | 2005-02-22 21:11:51 +0000 |
---|---|---|
committer | David Hankins <dhankins@isc.org> | 2005-02-22 21:11:51 +0000 |
commit | ec5b877f1fb50396a8934336ae801b78a222df18 (patch) | |
tree | ae121df1ebd3522da5b29dddaf748d3aeb17cff1 | |
parent | 7bca70686bfb415006ca584eed1f875f57ba93fe (diff) | |
download | isc-dhcp-ec5b877f1fb50396a8934336ae801b78a222df18.tar.gz |
- merge rt13329
-rw-r--r-- | RELNOTES | 5 | ||||
-rw-r--r-- | server/dhcp.c | 5 |
2 files changed, 7 insertions, 3 deletions
@@ -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))) { |