-
Notifications
You must be signed in to change notification settings - Fork 15
Description
Current Behavior
When multiple Infix devices are present on the same LAN, ixll scan (and other mDNS resolvers) show incorrect addresses. All devices publishing the infix.local CNAME end up resolving to the same IP address -- typically whichever device responded last. The local Avahi resolver cache gets confused by the conflicting CNAME answers.
This happens because mdns-alias publishes CNAME records with AVAHI_PUBLISH_ALLOW_MULTIPLE (in mdns-alias.c:47), which explicitly bypasses the mDNS probing and conflict resolution mechanism defined in RFC 6762 Section 8. Every device on the LAN simultaneously claims to be infix.local and network.local, resulting in multiple conflicting CNAME answers for the same name.
$ ixll scan
HOSTNAME ADDRESS PRODUCT
infix.local 192.168.1.10 Infix ...
infix.local 192.168.1.10 Infix ...
infix.local 192.168.1.10 Infix ...
All three devices resolve to the same address because the last CNAME response for infix.local overwrites the others in the resolver cache.
Expected Behavior
Each device should resolve to its own unique IP address. The shared aliases (infix.local, network.local) should either be claimed by exactly one device via proper mDNS conflict resolution, or not be used as shared CNAMEs at all.
$ ixll scan
HOSTNAME ADDRESS PRODUCT
infix-aa-bb-cc.local 192.168.1.10 Infix ...
infix-dd-ee-ff.local 192.168.1.20 Infix ...
infix-11-22-33.local 192.168.1.30 Infix ...
Steps To Reproduce
- Connect two or more Infix devices to the same LAN
- From a Linux host on the same LAN, run
ixll scan - Observe that multiple devices show the same IP address
Additional Information
Root cause in mdns-alias.c:
AvahiPublishFlags flags = (AVAHI_PUBLISH_USE_MULTICAST | AVAHI_PUBLISH_ALLOW_MULTIPLE);AVAHI_PUBLISH_ALLOW_MULTIPLE tells Avahi to skip conflict detection, so all devices publish the same CNAME without any of them backing off.
The collision handling at lines 119-122 only handles Avahi server-level state changes (daemon re-registering), not actual mDNS name conflicts from other devices.
Possible solutions:
-
Drop
AVAHI_PUBLISH_ALLOW_MULTIPLEand handleAVAHI_ENTRY_GROUP_COLLISIONproperly. This lets the standard mDNS tie-breaking work: one device wins and claims the alias, the others give up. If the winning device goes away, another can reclaim it. -
Remove the shared
infix.localalias entirely. Each device already has a unique hostname (infix-c0-ff-ee.local). The shared alias is only useful in single-device scenarios. -
Replace mdns-alias and netbrowse with a single service that handles both the
network.localportal and device discovery properly, using mDNS service browsing (which already works correctly with multiple devices) rather than shared CNAMEs.
Note: ixll scan itself is not broken -- it discovers devices via mDNS service browsing (avahi-browse), which works fine. The problem is that the CNAME pollution from mdns-alias confuses the resolver when it tries to map hostnames to addresses.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status