]> git.meshlink.io Git - catta/blobdiff - avahi-core/cache.h
fix MacOS X init script path, closes #177 -- not tested, assuming the bug report...
[catta] / avahi-core / cache.h
index fa723e9d68125c1d165c0a978bac03fce91a75a8..edf9fa530be40d5c5708c620eb8cb5c5aeaed2da 100644 (file)
@@ -26,7 +26,7 @@ typedef struct AvahiCache AvahiCache;
 
 #include <avahi-common/llist.h>
 #include "prioq.h"
-#include "server.h"
+#include "internal.h"
 #include "timeeventq.h"
 #include "hashmap.h"
 
@@ -35,7 +35,11 @@ typedef enum {
     AVAHI_CACHE_EXPIRY1,
     AVAHI_CACHE_EXPIRY2,
     AVAHI_CACHE_EXPIRY3,
-    AVAHI_CACHE_FINAL
+    AVAHI_CACHE_EXPIRY_FINAL,
+    AVAHI_CACHE_POOF,       /* Passive observation of failure */
+    AVAHI_CACHE_POOF_FINAL,
+    AVAHI_CACHE_GOODBYE_FINAL,
+    AVAHI_CACHE_REPLACE_FINAL
 } AvahiCacheEntryState;
 
 typedef struct AvahiCacheEntry AvahiCacheEntry;
@@ -52,6 +56,8 @@ struct AvahiCacheEntry {
     AvahiCacheEntryState state;
     AvahiTimeEvent *time_event;
 
+    AvahiAddress poof_address;
+
     AVAHI_LLIST_FIELDS(AvahiCacheEntry, by_key);
     AVAHI_LLIST_FIELDS(AvahiCacheEntry, entry);
 };
@@ -66,14 +72,14 @@ struct AvahiCache {
     AVAHI_LLIST_HEAD(AvahiCacheEntry, entries);
 
     unsigned n_entries;
+
+    int last_rand;
+    time_t last_rand_timestamp;
 };
 
 AvahiCache *avahi_cache_new(AvahiServer *server, AvahiInterface *interface);
 void avahi_cache_free(AvahiCache *c);
 
-AvahiCacheEntry *avahi_cache_lookup_key(AvahiCache *c, AvahiKey *k);
-AvahiCacheEntry *avahi_cache_lookup_record(AvahiCache *c, AvahiRecord *r);
-
 void avahi_cache_update(AvahiCache *c, AvahiRecord *r, int cache_flush, const AvahiAddress *a);
 
 int avahi_cache_dump(AvahiCache *c, AvahiDumpCallback callback, void* userdata);
@@ -83,6 +89,13 @@ void* avahi_cache_walk(AvahiCache *c, AvahiKey *pattern, AvahiCacheWalkCallback
 
 int avahi_cache_entry_half_ttl(AvahiCache *c, AvahiCacheEntry *e);
 
+/** Start the "Passive observation of Failure" algorithm for all
+ * records of the specified key. The specified address is  */
+void avahi_cache_start_poof(AvahiCache *c, AvahiKey *key, const AvahiAddress *a);
+
+/* Stop a previously started POOF algorithm for a record. (Used for response suppresions records */    
+void avahi_cache_stop_poof(AvahiCache *c, AvahiRecord *record, const AvahiAddress *a);
+
 void avahi_cache_flush(AvahiCache *c);
 
 #endif