]> git.meshlink.io Git - catta/blobdiff - avahi-common/defs.h
* format unknown DNS records according to RFC3597
[catta] / avahi-common / defs.h
index b973b0cbf12a63e7293deca85895b9d9e24c9c35..4393e98ef17f1d24606b2d446d5dfcd15fcbabb4 100644 (file)
  * 
  * All three APIs are very similar, however avahi-core is the most powerful.
  *
+ * In addition to the three APIs described above Avahi supports two
+ * compatibility libraries:
+ *
+ * \li avahi-compat-libdns_sd: the original Bonjour API as documented
+ * in the header file "dns_sd.h" by Apple Computer, Inc.
+ *
+ * \li avahi-compat-howl: the HOWL API as released with HOWL 0.9.8 by
+ * Porchdog Software.
+ *
+ * Please note that these compatibility layers are incomplete and
+ * generally a waste of resources. We strongly encourage everyone to
+ * use our native APIs for newly written programs and to port older
+ * programs to one of them!
+ * 
  * \section error_reporting Error Reporting
  *
  * Some notes on the Avahi error handling:
  * avahi_alternative_service_name()) and commit again. Please do not
  * free the entry group and create a new one. This would inhibit some
  * traffic limiting algorithms in mDNS.
- * - When you need to modify your services, reset the entry group
- * (i.e. avahi_entry_group_reset()) and add them back. Please do not
+ * - When you need to modify your services, use the AVAHI_PUBLISH_UPDATE flag. Please do not
  * free the entry group and create a new one. This would inhibit some
  * traffic limiting algorithms in mDNS.
  *
  * for the service type you want to browse for. Use
  * avahi_client_resolve_service() to acquire service data for a a service
  * name.
- * - You can use avahi_domain_browser() to get a list of announced
+ * - You can use avahi_domain_browser_new() to get a list of announced
  * browsing domains. Please note that not all domains whith services
  * on the LAN are mandatorily announced.
  * - Network monitor software may use avahi_service_type_browser_new()
  *  
  */
 
-#ifndef DOXYGEN_SHOULD_SKIP_THIS
 AVAHI_C_DECL_BEGIN
-#endif
 
 /** States of an entry group object */
 typedef enum {
     AVAHI_ENTRY_GROUP_UNCOMMITED,    /**< The group has not yet been commited, the user must still call avahi_entry_group_commit() */
     AVAHI_ENTRY_GROUP_REGISTERING,   /**< The entries of the group are currently being registered */
     AVAHI_ENTRY_GROUP_ESTABLISHED,   /**< The entries have successfully been established */
-    AVAHI_ENTRY_GROUP_COLLISION      /**< A name collision for one of the entries in the group has been detected, the entries have been withdrawn */ 
+    AVAHI_ENTRY_GROUP_COLLISION,     /**< A name collision for one of the entries in the group has been detected, the entries have been withdrawn */
+    AVAHI_ENTRY_GROUP_FAILURE        /**< Some kind of failure happened, the entries have been withdrawn */
 } AvahiEntryGroupState;
 
 /** The type of domain to browse for */
@@ -152,16 +164,47 @@ typedef enum {
     AVAHI_DOMAIN_BROWSER_MAX
 } AvahiDomainBrowserType;
 
+/** Some flags for publishing functions */
+typedef enum {
+    AVAHI_PUBLISH_UNIQUE = 1,           /**< For raw records: The RRset is intended to be unique */
+    AVAHI_PUBLISH_NO_PROBE = 2,         /**< For raw records: Though the RRset is intended to be unique no probes shall be sent */
+    AVAHI_PUBLISH_NO_ANNOUNCE = 4,      /**< For raw records: Do not announce this RR to other hosts */
+    AVAHI_PUBLISH_ALLOW_MULTIPLE = 8,   /**< For raw records: Allow multiple local records of this type, even if they are intended to be unique */
+    AVAHI_PUBLISH_NO_REVERSE = 16,      /**< For address records: don't create a reverse (PTR) entry */
+    AVAHI_PUBLISH_NO_COOKIE = 32,       /**< For service records: do not implicitly add the local service cookie to TXT data */
+    AVAHI_PUBLISH_UPDATE = 64           /**< Update existing records instead of adding new ones */
+} AvahiPublishFlags;
+
+/** Some flags for lookup functions */
+typedef enum {
+    AVAHI_LOOKUP_USE_WIDE_AREA = 1,    /**< Force lookup via wide area DNS */
+    AVAHI_LOOKUP_USE_MULTICAST = 2,    /**< Force lookup via multicast DNS */
+    AVAHI_LOOKUP_NO_TXT = 4,           /**< When doing service resolving, don't lookup TXT record */
+    AVAHI_LOOKUP_NO_ADDRESS = 8        /**< When doing service resolving, don't lookup A/AAAA record */
+} AvahiLookupFlags;
+
+/** Some flags for lookup callback functions */
+typedef enum {
+    AVAHI_LOOKUP_RESULT_CACHED = 1,         /**< This response originates from the cache */
+    AVAHI_LOOKUP_RESULT_WIDE_AREA = 2,      /**< This response originates from wide area DNS */
+    AVAHI_LOOKUP_RESULT_MULTICAST = 4,      /**< This response originates from multicast DNS */
+    AVAHI_LOOKUP_RESULT_LOCAL = 8,          /**< This record/service resides on and was announced by the local host. Only available in service and record browsers and only on AVAHI_BROWSER_NEW. */
+    AVAHI_LOOKUP_RESULT_OUR_OWN = 16        /**< This service belongs to the same local client as the browser object. Only available in avahi-client, and only for service browsers and only on AVAHI_BROWSER_NEW. */
+} AvahiLookupResultFlags;
+
 /** Type of callback event when browsing */
 typedef enum {
-    AVAHI_BROWSER_NEW,            /**< The object is new on the network */
-    AVAHI_BROWSER_REMOVE          /**< The object has been removed from the network */
+    AVAHI_BROWSER_NEW,               /**< The object is new on the network */
+    AVAHI_BROWSER_REMOVE,            /**< The object has been removed from the network */
+    AVAHI_BROWSER_CACHE_EXHAUSTED,   /**< One-time event, to notify the user that all entries from the caches have been send */
+    AVAHI_BROWSER_ALL_FOR_NOW,       /**< One-time event, to notify the user that more records will probably not show up in the near future, i.e. all cache entries have been read and all static servers been queried */
+    AVAHI_BROWSER_FAILURE            /**< Browsing failed due to some reason which can be retrieved using avahi_server_errno()/avahi_client_errno() */
 } AvahiBrowserEvent;
 
 /** Type of callback event when resolving */
 typedef enum {
-    AVAHI_RESOLVER_FOUND,         /**< RR found, resolving successful */
-    AVAHI_RESOLVER_TIMEOUT        /**< Noone responded within the timeout, resolving failed */
+    AVAHI_RESOLVER_FOUND,          /**< RR found, resolving successful */
+    AVAHI_RESOLVER_FAILURE         /**< Resolving failed due to some reason which can be retrieved using avahi_server_errno()/avahi_client_errno() */
 } AvahiResolverEvent;
 
 /** States of a server object */
@@ -169,7 +212,8 @@ typedef enum {
     AVAHI_SERVER_INVALID,          /**< Invalid state (initial) */ 
     AVAHI_SERVER_REGISTERING,      /**< Host RRs are being registered */
     AVAHI_SERVER_RUNNING,          /**< All host RRs have been established */
-    AVAHI_SERVER_COLLISION         /**< There is a collision with a host RR. All host RRs have been withdrawn, the user should set a new host name via avahi_server_set_host_name() */
+    AVAHI_SERVER_COLLISION,        /**< There is a collision with a host RR. All host RRs have been withdrawn, the user should set a new host name via avahi_server_set_host_name() */
+    AVAHI_SERVER_FAILURE           /**< Some fatal failure happened, the server is unable to proceed */
 } AvahiServerState;
 
 /** For every service a special TXT item is implicitly added, which
@@ -181,8 +225,31 @@ typedef enum {
 /** In invalid cookie as special value */
 #define AVAHI_SERVICE_COOKIE_INVALID (0)
 
-#ifndef DOXYGEN_SHOULD_SKIP_THIS
+/** DNS record types, see RFC 1035 */
+enum {
+    AVAHI_DNS_TYPE_A = 0x01,
+    AVAHI_DNS_TYPE_NS = 0x02,
+    AVAHI_DNS_TYPE_CNAME = 0x05,
+    AVAHI_DNS_TYPE_SOA = 0x06,
+    AVAHI_DNS_TYPE_PTR = 0x0C,
+    AVAHI_DNS_TYPE_HINFO = 0x0D,
+    AVAHI_DNS_TYPE_MX = 0x0F,
+    AVAHI_DNS_TYPE_TXT = 0x10,
+    AVAHI_DNS_TYPE_AAAA = 0x1C,
+    AVAHI_DNS_TYPE_SRV = 0x21,
+};
+
+/** DNS record classes, see RFC 1035 */
+enum {
+    AVAHI_DNS_CLASS_IN = 0x01,          /**< Probably the only class we will ever use */
+};
+
+/** The default TTL for RRs which contain a host name of some kind. */
+#define AVAHI_DEFAULT_TTL_HOST_NAME (120)
+
+/** The default TTL for all other records. */
+#define AVAHI_DEFAULT_TTL (75*60)
+
 AVAHI_C_DECL_END
-#endif
 
 #endif