10c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering#ifndef fooclientlookuphfoo
20c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering#define fooclientlookuphfoo
30c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
40c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering/***
50c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering  This file is part of avahi.
6722f8d557252486cebc9a4efdd523321f31a9378Lennart Poettering
70c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering  avahi is free software; you can redistribute it and/or modify it
80c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering  under the terms of the GNU Lesser General Public License as
90c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering  published by the Free Software Foundation; either version 2.1 of the
100c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering  License, or (at your option) any later version.
11722f8d557252486cebc9a4efdd523321f31a9378Lennart Poettering
120c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering  avahi is distributed in the hope that it will be useful, but WITHOUT
130c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
140c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering  or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
150c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering  Public License for more details.
16722f8d557252486cebc9a4efdd523321f31a9378Lennart Poettering
170c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering  You should have received a copy of the GNU Lesser General Public
180c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering  License along with avahi; if not, write to the Free Software
190c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
200c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering  USA.
210c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering***/
220c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
230c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering#include <inttypes.h>
240c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
250c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering#include <avahi-common/cdecl.h>
260c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering#include <avahi-common/address.h>
270c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering#include <avahi-common/strlst.h>
280c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering#include <avahi-common/defs.h>
290c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering#include <avahi-common/watch.h>
300c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering#include <avahi-common/gccmacro.h>
310c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
320c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering#include <avahi-client/client.h>
330c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
340c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering/** \file avahi-client/lookup.h Lookup Client API */
350c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
360c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering/** \example client-browse-services.c Example how to browse for DNS-SD
370c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering * services using the client interface to avahi-daemon. */
380c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
390c54764cf19428a0c52724a75ddf3368e3899209Lennart PoetteringAVAHI_C_DECL_BEGIN
400c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
418c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** @{ \name Domain Browser */
428c4483baa593205c3eaecebe0738d1455025777cLennart Poettering
437c171df2b2ae4d3f2cbab669d5b5b96562bdd9a8Lennart Poettering/** A domain browser object */
440c54764cf19428a0c52724a75ddf3368e3899209Lennart Poetteringtypedef struct AvahiDomainBrowser AvahiDomainBrowser;
450c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
460c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering/** The function prototype for the callback of an AvahiDomainBrowser */
479e4237ebed07d00bf1176178d1358b475d749b27Lennart Poetteringtypedef void (*AvahiDomainBrowserCallback) (
489e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    AvahiDomainBrowser *b,
499e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    AvahiIfIndex interface,
509e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    AvahiProtocol protocol,
519e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    AvahiBrowserEvent event,
529e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    const char *domain,
539e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    AvahiLookupResultFlags flags,
549e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    void *userdata);
550c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
568c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** Browse for domains on the local network */
578c4483baa593205c3eaecebe0738d1455025777cLennart PoetteringAvahiDomainBrowser* avahi_domain_browser_new (
588c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiClient *client,
599e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    AvahiIfIndex interface,
609e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    AvahiProtocol protocol,
619e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    const char *domain,
628c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiDomainBrowserType btype,
638c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiLookupFlags flags,
648c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiDomainBrowserCallback callback,
659e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    void *userdata);
660c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
678c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** Get the parent client of an AvahiDomainBrowser object */
688c4483baa593205c3eaecebe0738d1455025777cLennart PoetteringAvahiClient* avahi_domain_browser_get_client (AvahiDomainBrowser *);
698c4483baa593205c3eaecebe0738d1455025777cLennart Poettering
708c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** Cleans up and frees an AvahiDomainBrowser object */
718c4483baa593205c3eaecebe0738d1455025777cLennart Poetteringint avahi_domain_browser_free (AvahiDomainBrowser *);
728c4483baa593205c3eaecebe0738d1455025777cLennart Poettering
738c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** @} */
748c4483baa593205c3eaecebe0738d1455025777cLennart Poettering
758c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** @{ \name Service Browser */
768c4483baa593205c3eaecebe0738d1455025777cLennart Poettering
778c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** A service browser object */
788c4483baa593205c3eaecebe0738d1455025777cLennart Poetteringtypedef struct AvahiServiceBrowser AvahiServiceBrowser;
798c4483baa593205c3eaecebe0738d1455025777cLennart Poettering
808c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** The function prototype for the callback of an AvahiServiceBrowser */
818c4483baa593205c3eaecebe0738d1455025777cLennart Poetteringtypedef void (*AvahiServiceBrowserCallback) (
828c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiServiceBrowser *b,
839e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    AvahiIfIndex interface,
849e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    AvahiProtocol protocol,
859e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    AvahiBrowserEvent event,
868c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    const char *name,
879e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    const char *type,
889e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    const char *domain,
899e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    AvahiLookupResultFlags flags,
909e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    void *userdata);
910c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
9206f0555280d50458f231fbb066d85a6d8985b4f7Lennart Poettering/** Browse for services of a type on the network. In most cases you
9306f0555280d50458f231fbb066d85a6d8985b4f7Lennart Poettering * probably want to pass AVAHI_IF_UNSPEC and AVAHI_PROTO_UNSPED in
9406f0555280d50458f231fbb066d85a6d8985b4f7Lennart Poettering * interface, resp. protocol to browse on all local networks. The
9506f0555280d50458f231fbb066d85a6d8985b4f7Lennart Poettering * specified callback will be called whenever a new service appears
9606f0555280d50458f231fbb066d85a6d8985b4f7Lennart Poettering * or is removed from the network. Please note that events may be
9706f0555280d50458f231fbb066d85a6d8985b4f7Lennart Poettering * collapsed to minimize traffic (i.e. a REMOVED followed by a NEW for
9806f0555280d50458f231fbb066d85a6d8985b4f7Lennart Poettering * the same service data is dropped because redundant). If you want to
9906f0555280d50458f231fbb066d85a6d8985b4f7Lennart Poettering * subscribe to service data changes, you should use
10006f0555280d50458f231fbb066d85a6d8985b4f7Lennart Poettering * avahi_service_resolver_new() and keep it open, in which case you
10106f0555280d50458f231fbb066d85a6d8985b4f7Lennart Poettering * will be notified via AVAHI_RESOLVE_FOUND everytime the service data
10206f0555280d50458f231fbb066d85a6d8985b4f7Lennart Poettering * changes. */
1038c4483baa593205c3eaecebe0738d1455025777cLennart PoetteringAvahiServiceBrowser* avahi_service_browser_new (
1048c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiClient *client,
10506f0555280d50458f231fbb066d85a6d8985b4f7Lennart Poettering    AvahiIfIndex interface,     /**< In most cases pass AVAHI_IF_UNSPEC here */
10606f0555280d50458f231fbb066d85a6d8985b4f7Lennart Poettering    AvahiProtocol protocol,     /**< In most cases pass AVAHI_PROTO_UNSPEC here */
10706f0555280d50458f231fbb066d85a6d8985b4f7Lennart Poettering    const char *type,           /**< A service type such as "_http._tcp" */
10806f0555280d50458f231fbb066d85a6d8985b4f7Lennart Poettering    const char *domain,         /**< A domain to browse in. In most cases you want to pass NULL here for the default domain (usually ".local") */
1098c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiLookupFlags flags,
1108c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiServiceBrowserCallback callback,
1110c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    void *userdata);
1120c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
1138c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** Get the parent client of an AvahiServiceBrowser object */
1148c4483baa593205c3eaecebe0738d1455025777cLennart PoetteringAvahiClient* avahi_service_browser_get_client (AvahiServiceBrowser *);
1150c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
1168c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** Cleans up and frees an AvahiServiceBrowser object */
1178c4483baa593205c3eaecebe0738d1455025777cLennart Poetteringint avahi_service_browser_free (AvahiServiceBrowser *);
1180c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
1198c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** @} */
1209e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering
1218c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** \cond fulldocs */
1228c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** A service type browser object */
1238c4483baa593205c3eaecebe0738d1455025777cLennart Poetteringtypedef struct AvahiServiceTypeBrowser AvahiServiceTypeBrowser;
1248c4483baa593205c3eaecebe0738d1455025777cLennart Poettering
1258c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** The function prototype for the callback of an AvahiServiceTypeBrowser */
1268c4483baa593205c3eaecebe0738d1455025777cLennart Poetteringtypedef void (*AvahiServiceTypeBrowserCallback) (
1278c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiServiceTypeBrowser *b,
1280c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    AvahiIfIndex interface,
1290c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    AvahiProtocol protocol,
1308c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiBrowserEvent event,
1318c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    const char *type,
1320c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    const char *domain,
1338c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiLookupResultFlags flags,
1340c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    void *userdata);
1350c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
1360c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering/** Browse for service types on the local network */
1370c54764cf19428a0c52724a75ddf3368e3899209Lennart PoetteringAvahiServiceTypeBrowser* avahi_service_type_browser_new (
1380c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    AvahiClient *client,
1390c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    AvahiIfIndex interface,
1400c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    AvahiProtocol protocol,
1410c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    const char *domain,
1420c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    AvahiLookupFlags flags,
1430c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    AvahiServiceTypeBrowserCallback callback,
1440c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    void *userdata);
1450c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
1460c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering/** Get the parent client of an AvahiServiceTypeBrowser object */
1470c54764cf19428a0c52724a75ddf3368e3899209Lennart PoetteringAvahiClient* avahi_service_type_browser_get_client (AvahiServiceTypeBrowser *);
1480c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
1490c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering/** Cleans up and frees an AvahiServiceTypeBrowser object */
1500c54764cf19428a0c52724a75ddf3368e3899209Lennart Poetteringint avahi_service_type_browser_free (AvahiServiceTypeBrowser *);
1510c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
1528c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** \endcond */
1538c4483baa593205c3eaecebe0738d1455025777cLennart Poettering
1548c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** @{ \name Service Resolver */
1558c4483baa593205c3eaecebe0738d1455025777cLennart Poettering
1568c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** A service resolver object */
1578c4483baa593205c3eaecebe0738d1455025777cLennart Poetteringtypedef struct AvahiServiceResolver AvahiServiceResolver;
1588c4483baa593205c3eaecebe0738d1455025777cLennart Poettering
1598c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** The function prototype for the callback of an AvahiServiceResolver */
1608c4483baa593205c3eaecebe0738d1455025777cLennart Poetteringtypedef void (*AvahiServiceResolverCallback) (
1618c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiServiceResolver *r,
1620c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    AvahiIfIndex interface,
1630c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    AvahiProtocol protocol,
1648c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiResolverEvent event,
1658c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    const char *name,
1660c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    const char *type,
1670c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    const char *domain,
1688c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    const char *host_name,
1698c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    const AvahiAddress *a,
1708c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    uint16_t port,
1718c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiStringList *txt,
172722f8d557252486cebc9a4efdd523321f31a9378Lennart Poettering    AvahiLookupResultFlags flags,
1730c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    void *userdata);
1740c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
175bce1b94c3aec782393b3f3ffbd2e54eed8a660b0Lennart Poettering/** Create a new service resolver object. Please make sure to pass all
176bce1b94c3aec782393b3f3ffbd2e54eed8a660b0Lennart Poettering * the service data you received via avahi_service_browser_new()'s
177722f8d557252486cebc9a4efdd523321f31a9378Lennart Poettering * callback function, especially interface and protocol. The protocol
178722f8d557252486cebc9a4efdd523321f31a9378Lennart Poettering * argument specifies the protocol (IPv4 or IPv6) to use as transport
179722f8d557252486cebc9a4efdd523321f31a9378Lennart Poettering * for the queries which are sent out by this resolver. The
180722f8d557252486cebc9a4efdd523321f31a9378Lennart Poettering * aprotocol argument specifies the adress family (IPv4 or IPv6) of
181722f8d557252486cebc9a4efdd523321f31a9378Lennart Poettering * the address of the service we are looking for. Generally, on
182722f8d557252486cebc9a4efdd523321f31a9378Lennart Poettering * "protocol" you should only pass what was supplied to you as
183722f8d557252486cebc9a4efdd523321f31a9378Lennart Poettering * parameter to your AvahiServiceBrowserCallback. In "aprotocol" you
184722f8d557252486cebc9a4efdd523321f31a9378Lennart Poettering * should pass what your application code can deal with when
185722f8d557252486cebc9a4efdd523321f31a9378Lennart Poettering * connecting to the service. Or, more technically speaking: protocol
186722f8d557252486cebc9a4efdd523321f31a9378Lennart Poettering * specifies if the mDNS queries should be sent as UDP/IPv4
187722f8d557252486cebc9a4efdd523321f31a9378Lennart Poettering * resp. UDP/IPv6 packets. aprotocol specifies whether the query is for a A
188722f8d557252486cebc9a4efdd523321f31a9378Lennart Poettering * resp. AAAA resource record. */
1890c54764cf19428a0c52724a75ddf3368e3899209Lennart PoetteringAvahiServiceResolver * avahi_service_resolver_new(
1900c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    AvahiClient *client,
19182ac8d90d5c7e811b1b66bc2c42dd409f875f15eLennart Poettering    AvahiIfIndex interface,   /**< Pass the interface argument you received in AvahiServiceBrowserCallback here. */
19282ac8d90d5c7e811b1b66bc2c42dd409f875f15eLennart Poettering    AvahiProtocol protocol,   /**< Pass the protocol argument you received in AvahiServiceBrowserCallback here. */
19382ac8d90d5c7e811b1b66bc2c42dd409f875f15eLennart Poettering    const char *name,         /**< Pass the name argument you received in AvahiServiceBrowserCallback here. */
19482ac8d90d5c7e811b1b66bc2c42dd409f875f15eLennart Poettering    const char *type,         /**< Pass the type argument you received in AvahiServiceBrowserCallback here. */
19582ac8d90d5c7e811b1b66bc2c42dd409f875f15eLennart Poettering    const char *domain,       /**< Pass the domain argument you received in AvahiServiceBrowserCallback here. */
19606f0555280d50458f231fbb066d85a6d8985b4f7Lennart Poettering    AvahiProtocol aprotocol,  /**< The desired address family of the service address to resolve. AVAHI_PROTO_UNSPEC if your application can deal with both IPv4 and IPv6 */
1970c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    AvahiLookupFlags flags,
1980c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    AvahiServiceResolverCallback callback,
1990c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    void *userdata);
2000c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
2010c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering/** Get the parent client of an AvahiServiceResolver object */
2020c54764cf19428a0c52724a75ddf3368e3899209Lennart PoetteringAvahiClient* avahi_service_resolver_get_client (AvahiServiceResolver *);
2030c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
2040c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering/** Free a service resolver object */
2050c54764cf19428a0c52724a75ddf3368e3899209Lennart Poetteringint avahi_service_resolver_free(AvahiServiceResolver *r);
2060c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
2078c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** @} */
2088c4483baa593205c3eaecebe0738d1455025777cLennart Poettering
2098c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** \cond fulldocs */
2108c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** A service resolver object */
2118c4483baa593205c3eaecebe0738d1455025777cLennart Poetteringtypedef struct AvahiHostNameResolver AvahiHostNameResolver;
2128c4483baa593205c3eaecebe0738d1455025777cLennart Poettering
2138c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** The function prototype for the callback of an AvahiHostNameResolver */
2148c4483baa593205c3eaecebe0738d1455025777cLennart Poetteringtypedef void (*AvahiHostNameResolverCallback) (
2158c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiHostNameResolver *r,
2168c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiIfIndex interface,
2178c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiProtocol protocol,
2188c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiResolverEvent event,
2198c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    const char *name,
2208c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    const AvahiAddress *a,
221722f8d557252486cebc9a4efdd523321f31a9378Lennart Poettering    AvahiLookupResultFlags flags,
2228c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    void *userdata);
2238c4483baa593205c3eaecebe0738d1455025777cLennart Poettering
2240c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering/** Create a new hostname resolver object */
2250c54764cf19428a0c52724a75ddf3368e3899209Lennart PoetteringAvahiHostNameResolver * avahi_host_name_resolver_new(
2260c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    AvahiClient *client,
2270c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    AvahiIfIndex interface,
2280c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    AvahiProtocol protocol,
2290c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    const char *name,
2300c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    AvahiProtocol aprotocol,
2310c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    AvahiLookupFlags flags,
2320c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    AvahiHostNameResolverCallback callback,
2330c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    void *userdata);
2340c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
2350c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering/** Get the parent client of an AvahiHostNameResolver object */
2360c54764cf19428a0c52724a75ddf3368e3899209Lennart PoetteringAvahiClient* avahi_host_name_resolver_get_client (AvahiHostNameResolver *);
2370c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
2380c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering/** Free a hostname resolver object */
2390c54764cf19428a0c52724a75ddf3368e3899209Lennart Poetteringint avahi_host_name_resolver_free(AvahiHostNameResolver *r);
2400c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
2418c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** An address resolver object */
2428c4483baa593205c3eaecebe0738d1455025777cLennart Poetteringtypedef struct AvahiAddressResolver AvahiAddressResolver;
2438c4483baa593205c3eaecebe0738d1455025777cLennart Poettering
2448c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** The function prototype for the callback of an AvahiAddressResolver */
2458c4483baa593205c3eaecebe0738d1455025777cLennart Poetteringtypedef void (*AvahiAddressResolverCallback) (
2468c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiAddressResolver *r,
2478c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiIfIndex interface,
2488c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiProtocol protocol,
2498c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiResolverEvent event,
2508c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    const AvahiAddress *a,
2518c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    const char *name,
252722f8d557252486cebc9a4efdd523321f31a9378Lennart Poettering    AvahiLookupResultFlags flags,
2538c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    void *userdata);
2548c4483baa593205c3eaecebe0738d1455025777cLennart Poettering
2550c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering/** Create a new address resolver object from an AvahiAddress object */
2566b391bb81f0dce0193a722254016b26c12a17643Lennart PoetteringAvahiAddressResolver* avahi_address_resolver_new(
2570c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    AvahiClient *client,
2580c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    AvahiIfIndex interface,
2590c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    AvahiProtocol protocol,
2600c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    const AvahiAddress *a,
2610c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    AvahiLookupFlags flags,
2620c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    AvahiAddressResolverCallback callback,
2630c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering    void *userdata);
2640c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
2650c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering/** Get the parent client of an AvahiAddressResolver object */
2660c54764cf19428a0c52724a75ddf3368e3899209Lennart PoetteringAvahiClient* avahi_address_resolver_get_client (AvahiAddressResolver *);
2670c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
2680c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering/** Free a AvahiAddressResolver resolver object */
2690c54764cf19428a0c52724a75ddf3368e3899209Lennart Poetteringint avahi_address_resolver_free(AvahiAddressResolver *r);
2700c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
2718c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** \endcond */
2728c4483baa593205c3eaecebe0738d1455025777cLennart Poettering
2738c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** @{ \name Record Browser */
2748c4483baa593205c3eaecebe0738d1455025777cLennart Poettering
2758c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** A record browser object */
2768c4483baa593205c3eaecebe0738d1455025777cLennart Poetteringtypedef struct AvahiRecordBrowser AvahiRecordBrowser;
2778c4483baa593205c3eaecebe0738d1455025777cLennart Poettering
2788c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** The function prototype for the callback of an AvahiRecordBrowser */
2798c4483baa593205c3eaecebe0738d1455025777cLennart Poetteringtypedef void (*AvahiRecordBrowserCallback) (
2808c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiRecordBrowser *b,
2818c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiIfIndex interface,
2828c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiProtocol protocol,
2838c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiBrowserEvent event,
2848c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    const char *name,
2858c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    uint16_t clazz,
2868c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    uint16_t type,
2878c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    const void *rdata,
2888c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    size_t size,
2898c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    AvahiLookupResultFlags flags,
2908c4483baa593205c3eaecebe0738d1455025777cLennart Poettering    void *userdata);
2918c4483baa593205c3eaecebe0738d1455025777cLennart Poettering
2929e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering/** Browse for records of a type on the local network */
2939e4237ebed07d00bf1176178d1358b475d749b27Lennart PoetteringAvahiRecordBrowser* avahi_record_browser_new(
2949e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    AvahiClient *client,
2959e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    AvahiIfIndex interface,
2969e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    AvahiProtocol protocol,
2979e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    const char *name,
2989e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    uint16_t clazz,
2999e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    uint16_t type,
3009e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    AvahiLookupFlags flags,
3019e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    AvahiRecordBrowserCallback callback,
3029e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering    void *userdata);
3039e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering
3049e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering/** Get the parent client of an AvahiRecordBrowser object */
3059e4237ebed07d00bf1176178d1358b475d749b27Lennart PoetteringAvahiClient* avahi_record_browser_get_client(AvahiRecordBrowser *);
3069e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering
30702bc7853df97f3a3fc3664f03763666a4227cd4eLennart Poettering/** Cleans up and frees an AvahiRecordBrowser object */
3089e4237ebed07d00bf1176178d1358b475d749b27Lennart Poetteringint avahi_record_browser_free(AvahiRecordBrowser *);
3099e4237ebed07d00bf1176178d1358b475d749b27Lennart Poettering
3108c4483baa593205c3eaecebe0738d1455025777cLennart Poettering/** @} */
3118c4483baa593205c3eaecebe0738d1455025777cLennart Poettering
3120c54764cf19428a0c52724a75ddf3368e3899209Lennart PoetteringAVAHI_C_DECL_END
3130c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering
3140c54764cf19428a0c52724a75ddf3368e3899209Lennart Poettering#endif
315