/** \file core.h The Avahi Multicast DNS and DNS Service Discovery implmentation. */
-/** \example publish-service.c Example how to register a DNS-SD
+/** \example core-publish-service.c Example how to register a DNS-SD
* service using an embedded mDNS stack. It behaves like a network
* printer registering both an IPP and a BSD LPR service. */
-/** \example browse-services.c Example how to browse for DNS-SD
+/** \example core-browse-services.c Example how to browse for DNS-SD
* services using an embedded mDNS stack. */
#include <avahi-common/cdecl.h>
#include <avahi-core/rr.h>
#include <avahi-common/address.h>
-#include <avahi-common/alternative.h>
-#include <avahi-common/error.h>
#include <avahi-common/defs.h>
#include <avahi-common/watch.h>
int use_iff_running; /**< Require IFF_RUNNING on local network interfaces. This is the official way to check for link beat. Unfortunately this doesn't work with all drivers. So bettere leave this off. */
int enable_reflector; /**< Reflect incoming mDNS traffic to all local networks. This allows mDNS based network browsing beyond ethernet borders */
int reflect_ipv; /**< if enable_reflector is 1, enable/disable reflecting between IPv4 and IPv6 */
+ int add_service_cookie; /**< Add magic service cookie to all locally generated records implicitly */
} AvahiServerConfig;
/** Allocate a new mDNS responder object. */
AvahiEntryFlags flags,
uint32_t ttl, /**< DNS TTL for this record */
const char *name, /**< TXT record name */
- ... /**< Text record data, terminated by NULL */);
+ ... /**< Text record data, terminated by NULL */) AVAHI_GCC_SENTINEL;
/** Add a PTR RR to the server. Mostly identical to
* avahi_server_add_text but takes a va_list instead of a variable
const char *domain,
const char *host, /**< Host name where this servcie resides, or NULL if on the local host */
uint16_t port, /**< Port number of the service */
- ... /**< Text records, terminated by NULL */);
+ ... /**< Text records, terminated by NULL */) AVAHI_GCC_SENTINEL;
/** Mostly identical to avahi_server_add_service(), but takes an va_list for the TXT records. */
int avahi_server_add_service_va(
AvahiSServiceResolver *r,
AvahiIfIndex interface,
AvahiProtocol protocol,
- AvahiResolverEvent event,
+ AvahiResolverEvent event, /**< Is AVAHI_RESOLVER_FOUND when the service was resolved successfully, and everytime it changes. Is AVAHI_RESOLVER_TIMOUT when the service failed to resolve or disappeared. */
const char *name, /**< Service name */
const char *type, /**< Service Type */
const char *domain,
AvahiStringList *txt, /**< TXT record data */
void* userdata);
-/** Create a new AvahiSServiceResolver object */
+/** Create a new AvahiSServiceResolver object. The specified callback function will be called with the resolved service data. */
AvahiSServiceResolver *avahi_s_service_resolver_new(
AvahiServer *server,
AvahiIfIndex interface,
/** Return the last error code */
int avahi_server_errno(AvahiServer *s);
+/** Return the local service cookie */
+uint32_t avahi_server_get_local_service_cookie(AvahiServer *s);
+
+/** Return 1 if there is a local service with the specified credentials registeresd. Return 0 if not, negative on failure */
+int avahi_server_is_service_local(AvahiServer *s, AvahiIfIndex, AvahiProtocol protocol, const char *name, const char *type, const char*domain);
+
#ifndef DOXYGEN_SHOULD_SKIP_THIS
AVAHI_C_DECL_END
#endif