]> git.proxmox.com Git - qemu.git/commitdiff
give a new address at DHCPREQUEST too (useful if the OS remembers its IP address
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Thu, 30 Sep 2004 18:57:28 +0000 (18:57 +0000)
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Thu, 30 Sep 2004 18:57:28 +0000 (18:57 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1081 c046a42c-6fe2-441c-8c8c-71466251a162

slirp/bootp.c

index 30cb05e9569e4fd8bb5727e67cf8e21eb4d95870..8ae68af4661f018ddb859957cadac357e28085af 100644 (file)
@@ -150,6 +150,7 @@ static void bootp_reply(struct bootp_t *bp)
     memset(rbp, 0, sizeof(struct bootp_t));
 
     if (dhcp_msg_type == DHCPDISCOVER) {
+    new_addr:
         bc = get_new_addr(&daddr.sin_addr);
         if (!bc) {
             dprintf("no address left\n");
@@ -159,8 +160,9 @@ static void bootp_reply(struct bootp_t *bp)
     } else {
         bc = find_addr(&daddr.sin_addr, bp->bp_hwaddr);
         if (!bc) {
-            dprintf("no address assigned\n");
-            return;
+            /* if never assigned, behaves as if it was already
+               assigned (windows fix because it remembers its address) */
+            goto new_addr;
         }
     }
     dprintf("offered addr=%08x\n", ntohl(daddr.sin_addr.s_addr));