From: bellard Date: Thu, 30 Sep 2004 18:57:28 +0000 (+0000) Subject: give a new address at DHCPREQUEST too (useful if the OS remembers its IP address X-Git-Tag: release_0_6_1~68 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d981b88344e2c2b21683bea2af63a7bd519df21d;p=thirdparty%2Fqemu.git give a new address at DHCPREQUEST too (useful if the OS remembers its IP address git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1081 c046a42c-6fe2-441c-8c8c-71466251a162 --- diff --git a/slirp/bootp.c b/slirp/bootp.c index 30cb05e9569..8ae68af4661 100644 --- a/slirp/bootp.c +++ b/slirp/bootp.c @@ -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));