diff options
| author | Roy Marples <roy@marples.name> | 2008-10-17 21:30:25 +0000 |
|---|---|---|
| committer | Roy Marples <roy@marples.name> | 2008-10-17 21:30:25 +0000 |
| commit | 08a40a313fd57ceaded511764d4781fea6e513a7 (patch) | |
| tree | 20b17b1f00bfee97d18a4a288a551fbf0c7f6bdc /dhcp.c | |
| parent | a6fa5cfde80f408434f47700525f1f4ba9cf225c (diff) | |
| download | dhcpcd-08a40a313fd57ceaded511764d4781fea6e513a7.tar.xz | |
We should send the IP address we decline and the server ID for release.
Diffstat (limited to 'dhcp.c')
| -rw-r--r-- | dhcp.c | 27 |
1 files changed, 18 insertions, 9 deletions
@@ -821,6 +821,24 @@ 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) @@ -851,15 +869,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 (ifo->leasetime != 0) { *p++ = DHO_LEASETIME; *p++ = 4; |
