]> git.ipfire.org Git - thirdparty/dhcp.git/commitdiff
- merge rt13329
authorDavid Hankins <dhankins@isc.org>
Tue, 22 Feb 2005 21:11:51 +0000 (21:11 +0000)
committerDavid Hankins <dhankins@isc.org>
Tue, 22 Feb 2005 21:11:51 +0000 (21:11 +0000)
RELNOTES
server/dhcp.c

index 3ff2183cd12d5ae7c35f26d3a0974f989336fb72..8dbe01390f02f8b2c54496847632362c2946adca 100644 (file)
--- 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',
index 8e1a48cf609b0d9cb73e64cd41980e252aa7b502..c75b3f8cbb3dbdeba4087bc7e2fd495c815818fe 100644 (file)
@@ -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))) {