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
This commit is contained in:
		
							parent
							
								
									4a4883b84d
								
							
						
					
					
						commit
						d981b88344
					
				| 
						 | 
				
			
			@ -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));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue