]> git.ipfire.org Git - thirdparty/dhcp.git/commitdiff
Always initialize offered_expiry; return after NAKing
authorTed Lemon <source@isc.org>
Mon, 26 Feb 1996 09:29:28 +0000 (09:29 +0000)
committerTed Lemon <source@isc.org>
Mon, 26 Feb 1996 09:29:28 +0000 (09:29 +0000)
dhcp.c
server/dhcp.c

diff --git a/dhcp.c b/dhcp.c
index be92bf816b220ba2143f6f52bc96826b728b80ab..43a8b110c14ecb82d48bcdf73e11ce689e68fc9a 100644 (file)
--- a/dhcp.c
+++ b/dhcp.c
@@ -116,6 +116,7 @@ void dhcprequest (packet)
        /* If we didn't find a lease, try to allocate one... */
        if (!lease) {
                nak_lease (packet);
+               return;
        }
 
        ack_lease (packet, lease, DHCPOFFER, cur_time + 120);
@@ -175,8 +176,8 @@ void nak_lease (packet)
                to.sin_addr = raw.giaddr;
        /* Otherwise, broadcast it on the local network. */
        else
-               inet_aton ("204.254.239.255", &to.sin_addr); /* XXX bcst bug */
-/*             to.sin_addr.s_addr = INADDR_BROADCAST; XXX */
+/*             inet_aton ("204.254.239.2", &to.sin_addr); /* XXX bcst bug */
+               to.sin_addr.s_addr = INADDR_BROADCAST;
 
        to.sin_port = htons (ntohs (server_port) + 1); /* XXX */
        to.sin_family = AF_INET;
@@ -243,6 +244,8 @@ void ack_lease (packet, lease, offer, when)
        lt.offered_expiry = cur_time + lease_time;
        if (when)
                lt.ends = when;
+       else
+               lt.ends = lt.offered_expiry;
 
        lt.timestamp = cur_time;
 
@@ -341,8 +344,8 @@ void ack_lease (packet, lease, offer, when)
           hardware address */
        /* Otherwise, broadcast it on the local network. */
        else
-               inet_aton ("204.254.239.255", &to.sin_addr); /* XXX bcst bug */
-/*             to.sin_addr.s_addr = INADDR_BROADCAST; XXX */
+/*             inet_aton ("204.254.239.255", &to.sin_addr); /* XXX bcst bug */
+               to.sin_addr.s_addr = INADDR_BROADCAST;
 
        to.sin_port = htons (ntohs (server_port) + 1); /* XXX */
        to.sin_family = AF_INET;
index be92bf816b220ba2143f6f52bc96826b728b80ab..43a8b110c14ecb82d48bcdf73e11ce689e68fc9a 100644 (file)
@@ -116,6 +116,7 @@ void dhcprequest (packet)
        /* If we didn't find a lease, try to allocate one... */
        if (!lease) {
                nak_lease (packet);
+               return;
        }
 
        ack_lease (packet, lease, DHCPOFFER, cur_time + 120);
@@ -175,8 +176,8 @@ void nak_lease (packet)
                to.sin_addr = raw.giaddr;
        /* Otherwise, broadcast it on the local network. */
        else
-               inet_aton ("204.254.239.255", &to.sin_addr); /* XXX bcst bug */
-/*             to.sin_addr.s_addr = INADDR_BROADCAST; XXX */
+/*             inet_aton ("204.254.239.2", &to.sin_addr); /* XXX bcst bug */
+               to.sin_addr.s_addr = INADDR_BROADCAST;
 
        to.sin_port = htons (ntohs (server_port) + 1); /* XXX */
        to.sin_family = AF_INET;
@@ -243,6 +244,8 @@ void ack_lease (packet, lease, offer, when)
        lt.offered_expiry = cur_time + lease_time;
        if (when)
                lt.ends = when;
+       else
+               lt.ends = lt.offered_expiry;
 
        lt.timestamp = cur_time;
 
@@ -341,8 +344,8 @@ void ack_lease (packet, lease, offer, when)
           hardware address */
        /* Otherwise, broadcast it on the local network. */
        else
-               inet_aton ("204.254.239.255", &to.sin_addr); /* XXX bcst bug */
-/*             to.sin_addr.s_addr = INADDR_BROADCAST; XXX */
+/*             inet_aton ("204.254.239.255", &to.sin_addr); /* XXX bcst bug */
+               to.sin_addr.s_addr = INADDR_BROADCAST;
 
        to.sin_port = htons (ntohs (server_port) + 1); /* XXX */
        to.sin_family = AF_INET;