diff --git a/src/modules/module-raop-discover.c b/src/modules/module-raop-discover.c index 53032d0be..436972ac0 100644 --- a/src/modules/module-raop-discover.c +++ b/src/modules/module-raop-discover.c @@ -384,10 +384,8 @@ static void resolver_cb(AvahiServiceResolver *r, AvahiIfIndex interface, AvahiPr } avahi_address_snprint(at, sizeof(at), a); - if (spa_strstartswith(at, link_local_range)) { - pw_log_info("found link-local ip address %s - skipping tunnel creation", at); - goto done; - } + if (spa_strstartswith(at, link_local_range)) + pw_log_info("found link-local ip address %s for '%s'", at, name); tinfo = TUNNEL_INFO(.name = name); @@ -414,6 +412,11 @@ static void resolver_cb(AvahiServiceResolver *r, AvahiIfIndex interface, AvahiPr (a->data.ipv6.address[1] & 0xc0) == 0x80) snprintf(if_suffix, sizeof(if_suffix), "%%%d", interface); + /* For IPv4 link-local, bind to the discovery interface */ + if (a->proto == AVAHI_PROTO_INET && + spa_strstartswith(at, link_local_range)) + snprintf(if_suffix, sizeof(if_suffix), "%%%d", interface); + pw_properties_setf(props, "raop.ip", "%s%s", at, if_suffix); pw_properties_setf(props, "raop.ifindex", "%d", interface); pw_properties_setf(props, "raop.port", "%u", port);