*** From dhcp-server -- To unsubscribe, see the end of this message. ***

> So... here's the REQUEST from the client,
> and the NAK from the server, and the lease in
> the database for reference.  Can anyone tell
> off the top of their heads if this is a broken
> client or a server oddity?

The client is broken.  It's sending both the server identifier and
requested address options when it's renewing.  The protocol says it
can't send either of those options when it's renewing.  The DHCP
server is looking at what it sent and concluding that it's rebinding,
(i.e., it's broadcasting its request).  Since giaddr is zero, it must
be on the local network.  The address it's requesting isn't on the
local network, so it gets NAKed.

I'm not sure what to do about this.  The client is very broken.  I've
included a patch below that will allow you to boot this client, but
I'm not sure what other broken client it might break.  It's probably
okay - what it would break is that if a compliant client is in the
REBINDING state and has an inappropriate IP address, it won't get
NAKed, and a broken client in the INIT-REBOOT state sending a nonzero
ciaddr also won't get NAKed.   All in all, the new behaviour from the
patch is probably less harmful - it's inappropriate to NAK a REBINDING
client anyway, although I think it's useful and I know some important
clients allow it.

                               _MelloN_

Index: dhcp.c
===================================================================
RCS file: /proj/src/isc/cvs-1/DHCP/server/dhcp.c,v
retrieving revision 1.57.2.25
diff -c -r1.57.2.25 dhcp.c
*** dhcp.c      1999/04/08 21:49:45     1.57.2.25
--- dhcp.c      1999/04/15 16:44:56
***************
*** 268,274 ****
        if (!packet -> shared_network ||
            (packet -> raw -> ciaddr.s_addr &&
             packet -> raw -> giaddr.s_addr) ||
!           packet -> options [DHO_DHCP_REQUESTED_ADDRESS].len) {
                
                /* If we don't know where it came from but we do know
                   where it claims to have come from, it didn't come
--- 268,275 ----
        if (!packet -> shared_network ||
            (packet -> raw -> ciaddr.s_addr &&
             packet -> raw -> giaddr.s_addr) ||
!           (packet -> options [DHO_DHCP_REQUESTED_ADDRESS].len &&
!            !packet -> raw -> ciaddr.s_addr)) {
                
                /* If we don't know where it came from but we do know
                   where it claims to have come from, it didn't come


------------------------------------------------------------------------------
To unsubscribe from this list, please visit http://www.fugue.com/dhcp/lists
If you are without web access, or if you are having trouble with the web page,
please send mail to [EMAIL PROTECTED]   Please try to use the web
page first - it will take a long time for your request to be processed by hand.
------------------------------------------------------------------------------

Reply via email to