guarantee that we never calculate an invalid ip address from the mac address
authorLennart Poettering <lennart@poettering.net>
Tue, 5 Aug 2008 13:53:23 +0000 (15:53 +0200)
committerLennart Poettering <lennart@poettering.net>
Tue, 5 Aug 2008 13:53:23 +0000 (15:53 +0200)
avahi-autoipd/main.c

index 01ccc79..ef529b9 100644 (file)
@@ -1144,9 +1144,13 @@ static int loop(int iface, uint32_t addr) {
         for (i = 0; i < ETHER_ADDRLEN; i++)
             a += hw_address[i]*i;
 
+        a = (a % 0xFE00) + 0x0100;
+
         addr = htonl(IPV4LL_NETWORK | (uint32_t) a);
     }
 
+    assert(is_ll_address(addr));
+
     set_state(st, 1, addr);
 
     daemon_log(LOG_INFO, "Starting with address %s", inet_ntop(AF_INET, &addr, buf, sizeof(buf)));