+/** Create a new AvahiServiceTypeBrowser object. */
+AvahiServiceTypeBrowser *avahi_service_type_browser_new(
+ AvahiServer *server,
+ AvahiIfIndex interface,
+ AvahiProtocol protocol,
+ const gchar *domain,
+ AvahiServiceTypeBrowserCallback callback,
+ gpointer userdata);
+
+/** Free an AvahiServiceTypeBrowser object */
+void avahi_service_type_browser_free(AvahiServiceTypeBrowser *b);
+
+/** A DNS-SD service browser. Use this to enumerate available services of a certain kind on the local LAN. Use AvahiServiceResolver to get specific service data like address and port for a service. */
+typedef struct AvahiServiceBrowser AvahiServiceBrowser;
+
+/** Callback prototype for AvahiServiceBrowser events */
+typedef void (*AvahiServiceBrowserCallback)(
+ AvahiServiceBrowser *b,
+ AvahiIfIndex interface,
+ AvahiProtocol protocol,
+ AvahiBrowserEvent event,
+ const gchar *name /**< Service name, e.g. "Lennart's Files" */,
+ const gchar *type /**< DNS-SD type, e.g. "_http._tcp" */,
+ const gchar *domain /**< Domain of this service, e.g. "local" */,
+ gpointer userdata);
+
+/** Create a new AvahiServiceBrowser object. */
+AvahiServiceBrowser *avahi_service_browser_new(
+ AvahiServer *server,
+ AvahiIfIndex interface,
+ AvahiProtocol protocol,
+ const gchar *service_type /** DNS-SD service type, e.g. "_http._tcp" */,
+ const gchar *domain,
+ AvahiServiceBrowserCallback callback,
+ gpointer userdata);
+
+/** Free an AvahiServiceBrowser object */
+void avahi_service_browser_free(AvahiServiceBrowser *b);
+
+/** A DNS-SD service resolver. Use this to retrieve addres, port and TXT data for a DNS-SD service */
+typedef struct AvahiServiceResolver AvahiServiceResolver;
+
+/** Callback prototype for AvahiServiceResolver events */
+typedef void (*AvahiServiceResolverCallback)(
+ AvahiServiceResolver *r,
+ AvahiIfIndex interface,
+ AvahiProtocol protocol,
+ AvahiResolverEvent event,
+ const gchar *name, /**< Service name */
+ const gchar *type, /**< Service Type */
+ const gchar *domain,
+ const gchar *host_name, /**< Host name of the service */
+ const AvahiAddress *a, /**< The resolved host name */
+ guint16 port, /**< Service name */
+ AvahiStringList *txt, /**< TXT record data */
+ gpointer userdata);
+
+/** Create a new AvahiServiceResolver object */
+AvahiServiceResolver *avahi_service_resolver_new(
+ AvahiServer *server,
+ AvahiIfIndex interface,
+ AvahiProtocol protocol,
+ const gchar *name,
+ const gchar *type,
+ const gchar *domain,
+ AvahiProtocol aprotocol, /**< Address family of the desired service address. Use AVAHI_PROTO_UNSPEC if you don't care */
+ AvahiServiceResolverCallback calback,
+ gpointer userdata);
+
+/** Free an AvahiServiceResolver object */
+void avahi_service_resolver_free(AvahiServiceResolver *r);
+
+/** A domain service browser object. Use this to browse for
+ * conventional unicast DNS servers which may be used to resolve
+ * conventional domain names */
+typedef struct AvahiDNSServerBrowser AvahiDNSServerBrowser;
+
+/** Callback prototype for AvahiDNSServerBrowser events */
+typedef void (*AvahiDNSServerBrowserCallback)(
+ AvahiDNSServerBrowser *b,
+ AvahiIfIndex interface,
+ AvahiProtocol protocol,
+ AvahiBrowserEvent event,
+ const gchar *host_name, /**< Host name of the DNS server, probably useless */
+ const AvahiAddress *a, /**< Address of the DNS server */
+ guint16 port, /**< Port number of the DNS servers, probably 53 */
+ gpointer userdata);
+
+/** Create a new AvahiDNSServerBrowser object */
+AvahiDNSServerBrowser *avahi_dns_server_browser_new(
+ AvahiServer *server,
+ AvahiIfIndex interface,
+ AvahiProtocol protocol,
+ const gchar *domain,
+ AvahiDNSServerType type,
+ AvahiProtocol aprotocol, /**< Address protocol for the DNS server */
+ AvahiDNSServerBrowserCallback callback,
+ gpointer userdata);