]> git.meshlink.io Git - catta/blobdiff - avahi-autoipd/main.c
get rid of a lot of old svn cruft
[catta] / avahi-autoipd / main.c
index 01ccc79ef9dd6d3bb6b0d7496f4b740d9be66e8d..380ab942dfc20be7df8f4f73fec9e550b4bd2f92 100644 (file)
@@ -1,5 +1,3 @@
-/* $Id$ */
-
 /***
     This file is part of avahi.
 
@@ -1144,9 +1142,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)));
@@ -1277,7 +1279,7 @@ static int loop(int iface, uint32_t addr) {
                     DEBUG(daemon_log(LOG_DEBUG, "Ignoring irrelevant ARP packet."));
             }
 
-        } else if (event == EVENT_ROUTABLE_ADDR_CONFIGURED) {
+        } else if (event == EVENT_ROUTABLE_ADDR_CONFIGURED && !force_bind) {
 
             daemon_log(LOG_INFO, "A routable address has been configured.");
 
@@ -1302,7 +1304,7 @@ static int loop(int iface, uint32_t addr) {
             elapse_time(&next_wakeup, 0, PROBE_WAIT*1000);
             next_wakeup_valid = 1;
 
-        } else if (event == EVENT_REFRESH_REQUEST && state == STATE_RUNNING && !force_bind) {
+        } else if (event == EVENT_REFRESH_REQUEST && state == STATE_RUNNING) {
 
             /* The user requested a reannouncing of the address by a SIGHUP */
             daemon_log(LOG_INFO, "Reannouncing address.");