From 3547a3f0a6447c6ef44a96103f0aa8b4b58791ea Mon Sep 17 00:00:00 2001 From: Roy Marples Date: Fri, 17 Oct 2008 21:30:41 +0000 Subject: [PATCH] We should send the IP address we decline and the server ID for release. --- dhcp.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/dhcp.c b/dhcp.c index ec405c6d..40f09626 100644 --- a/dhcp.c +++ b/dhcp.c @@ -815,6 +815,23 @@ make_message(struct dhcp_message **message, p += iface->clientid[0] + 1; } + if (lease->addr.s_addr && !IN_LINKLOCAL(htonl(lease->addr.s_addr))) { + if (type == DHCP_DECLINE || + type == DHCP_DISCOVER || + (type == DHCP_REQUEST && + lease->addr.s_addr != iface->addr.s_addr)) + { + PUTADDR(DHO_IPADDRESS, lease->addr); + if (lease->server.s_addr) + PUTADDR(DHO_SERVERID, lease->server); + } + } + + if (type == DHCP_RELEASE) { + if (lease->server.s_addr) + PUTADDR(DHO_SERVERID, lease->server); + } + if (type == DHCP_DISCOVER || type == DHCP_INFORM || type == DHCP_REQUEST) @@ -844,15 +861,6 @@ make_message(struct dhcp_message **message, } if (type != DHCP_INFORM) { - if (lease->addr.s_addr && - lease->addr.s_addr != iface->addr.s_addr && - !IN_LINKLOCAL(ntohl(lease->addr.s_addr))) - { - PUTADDR(DHO_IPADDRESS, lease->addr); - if (lease->server.s_addr) - PUTADDR(DHO_SERVERID, lease->server); - } - if (options->leasetime != 0) { *p++ = DHO_LEASETIME; *p++ = 4; -- 2.47.2