static int lookup_start(AvahiSRBLookup *l) { assert(l); assert((!(l->flags & AVAHI_LOOKUP_USE_WIDE_AREA) && !(l->flags & AVAHI_LOOKUP_USE_LLMNR)) || (!(l->flags & AVAHI_LOOKUP_USE_LLMNR) && !(l->flags & AVAHI_LOOKUP_USE_MULTICAST)) || (!(l->flags & AVAHI_LOOKUP_USE_MULTICAST) && !(l->flags & AVAHI_LOOKUP_USE_WIDE_AREA))); assert(!l->wide_area && !l->multicast && !l->llmnr); if (l->flags & AVAHI_LOOKUP_USE_WIDE_AREA) { /* Wide Area */ if (!(l->wide_area = avahi_wide_area_lookup_new(l->record_browser->server->wide_area.wide_area_lookup_engine, l->key, lookup_wide_area_callback, l))) return -1; } else if (l->flags & AVAHI_LOOKUP_USE_MULTICAST) { /* Multicast */ if (!(l->multicast = avahi_multicast_lookup_new(l->record_browser->server->mdns.multicast_lookup_engine, l->interface, l->protocol, l->key, lookup_multicast_callback, l))) return -1; } else { /* LLMNR */ assert(l->flags & AVAHI_LOOKUP_USE_LLMNR); if (!(l->llmnr = avahi_llmnr_lookup_new(l->record_browser->server->llmnr.llmnr_lookup_engine, l->interface, l->protocol, l->key, lookup_llmnr_callback, l))) return -1; } return 0; }
static int lookup_start(AvahiSRBLookup *l) { assert(l); assert(!(l->flags & AVAHI_LOOKUP_USE_WIDE_AREA) != !(l->flags & AVAHI_LOOKUP_USE_MULTICAST)); assert(!l->wide_area && !l->multicast); if (l->flags & AVAHI_LOOKUP_USE_WIDE_AREA) { if (!(l->wide_area = avahi_wide_area_lookup_new(l->record_browser->server->wide_area_lookup_engine, l->key, lookup_wide_area_callback, l))) return -1; } else { assert(l->flags & AVAHI_LOOKUP_USE_MULTICAST); if (!(l->multicast = avahi_multicast_lookup_new(l->record_browser->server->multicast_lookup_engine, l->interface, l->protocol, l->key, lookup_multicast_callback, l))) return -1; } return 0; }