summaryrefslogtreecommitdiffstats
path: root/dhcp.c
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2008-11-19 15:48:18 +0000
committerRoy Marples <roy@marples.name>2008-11-19 15:48:18 +0000
commit299662da4f99217bf4dfdd62147c273c0a5e3f1b (patch)
treec9d6c3ec127c587bcd3e14a5d23bd3c0b10b728c /dhcp.c
parent0b10229bc6ae7eadcc84a3c5e5710aac11c4f163 (diff)
downloaddhcpcd-299662da4f99217bf4dfdd62147c273c0a5e3f1b.tar.xz
We are now a BOOTP client also :)
Diffstat (limited to 'dhcp.c')
-rw-r--r--dhcp.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/dhcp.c b/dhcp.c
index 8a861f23..cd6d7195 100644
--- a/dhcp.c
+++ b/dhcp.c
@@ -1277,7 +1277,11 @@ get_lease(struct dhcp_lease *lease, const struct dhcp_message *dhcp)
{
struct timeval now;
- lease->addr.s_addr = dhcp->yiaddr;
+ /* BOOTP does not set yiaddr for replies when ciaddr is set. */
+ if (dhcp->yiaddr)
+ lease->addr.s_addr = dhcp->yiaddr;
+ else
+ lease->addr.s_addr = dhcp->ciaddr;
if (get_option_addr(&lease->net.s_addr, dhcp, DHO_SUBNETMASK) == -1)
lease->net.s_addr = get_netmask(dhcp->yiaddr);
if (get_option_uint32(&lease->leasetime, dhcp, DHO_LEASETIME) == 0) {