module-raop-discover: Skip tunnel creation for link-local addresses

Some Apple devices will advertise their link-local address via mDNS.
Ignore these mDNS entries.
This commit is contained in:
Christian Glombek 2023-12-13 19:59:46 +01:00 committed by Wim Taymans
parent c0f018e0f4
commit c386c96ff0

View file

@ -363,7 +363,7 @@ static void resolver_cb(AvahiServiceResolver *r, AvahiIfIndex interface, AvahiPr
struct impl *impl = userdata;
struct tunnel_info tinfo;
struct tunnel *t;
const char *str;
const char *str, *link_local_range = "169.254.";
AvahiStringList *l;
struct pw_properties *props = NULL;
char at[AVAHI_ADDRESS_STR_MAX];
@ -374,6 +374,12 @@ static void resolver_cb(AvahiServiceResolver *r, AvahiIfIndex interface, AvahiPr
goto done;
}
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;
}
tinfo = TUNNEL_INFO(.name = name);
t = find_tunnel(impl, &tinfo);
@ -384,7 +390,7 @@ static void resolver_cb(AvahiServiceResolver *r, AvahiIfIndex interface, AvahiPr
goto done;
}
if (t->module != NULL) {
pw_log_info("found duplicate mdns entry - skipping tunnel creation");
pw_log_info("found duplicate mdns entry for %s on IP %s - skipping tunnel creation", name, at);
goto done;
}
@ -394,7 +400,6 @@ static void resolver_cb(AvahiServiceResolver *r, AvahiIfIndex interface, AvahiPr
goto done;
}
avahi_address_snprint(at, sizeof(at), a);
pw_properties_setf(props, "raop.ip", "%s", at);
pw_properties_setf(props, "raop.port", "%u", port);
pw_properties_setf(props, "raop.name", "%s", name);