Quoting Cocagne:
"line 1280 of autoipd's main.c: "else if (event ==
EVENT_ROUTABLE_ADDR_CONFIGURED)" is missing '&& !force_bind' in
the conditional. The lack of this condition causes the local
link IP to be released even if the --force-bind arugment is
passed.
The problem was noticed when attempting to use avahi-autoipd
acquire a link-local address during the early-userspace in a
Linux initramfs. Immediately after the call-out script assinged
the ll-address to the device, the daemon released the address
via this conditional. It's suspicious that the daemon would
consider this address "routable" but, even if it were,
--force-bind should prevent the address from being released.
After adding the && !force_bind to the conditional the daemon
appeard to behave as expected."
Closes #209.
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.");
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.");