Hi,

we noticed that avahi-autoipd selects a new IP when it receives an ARP
request during the probe phase.

According to RFC3927, Section 2.2.1. Probe details:
> An ARP Request constructed this way with an all-zero 'sender IP 
> address' is referred to as an "ARP Probe".

and

> In addition, if during this period [checking if an address is already 
> in use] the host receives any ARP Probe where the packet's 'target IP
> address' is the address being probed for, and the packet's 'sender
> hardware address' is not the hardware address of the interface the
> host is attempting to configure, then the host MUST similarly treat
> this as an address conflict and select a new address as above.

When receiving an ARP packet during probe avahi-autoipd does not check
if the 'sender IP address' is all-zero and therefore if the packet is an
ARP Probe.

The attached patch adds this check.

Regards,
Christian

-- 
Christian Hitz                   digitalSTROM ag, Schlieren, Switzerland
Software Development                         http://www.digitalstrom.com
diff -Naur avahi-0.6.31-prog/avahi-autoipd/main.c avahi-0.6.31/avahi-autoipd/main.c
--- avahi-0.6.31-prog/avahi-autoipd/main.c	2010-08-26 02:51:38.961153000 +0200
+++ avahi-0.6.31/avahi-autoipd/main.c	2014-03-12 11:27:00.551821502 +0100
@@ -1230,7 +1230,7 @@
 
                 } else if (state == STATE_WAITING_PROBE || state == STATE_PROBING || state == STATE_WAITING_ANNOUNCE) {
                     /* Probe conflict */
-                    conflict = info.target_ip_address == addr && memcmp(hw_address, info.sender_hw_address, ETHER_ADDRLEN);
+                    conflict = info.target_ip_address == addr && memcmp(hw_address, info.sender_hw_address, ETHER_ADDRLEN) && info.sender_ip_address == 0;
 
                     if (conflict)
                         daemon_log(LOG_INFO, "Received conflicting probe ARP packet.");
_______________________________________________
avahi mailing list
avahi@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/avahi

Reply via email to