X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;ds=sidebyside;f=avahi-core%2Fserver.h;h=10218368044a1d151e8e02486769ca7e4e046155;hb=a6442df016687a958b0871c5dc1dccedafafd6b4;hp=600e4422972ab0c03ed3b85e4f0b81809bf9a51e;hpb=1ffedb586bd2fb6daa3970304fac7c5b415cd38f;p=catta diff --git a/avahi-core/server.h b/avahi-core/server.h index 600e442..1021836 100644 --- a/avahi-core/server.h +++ b/avahi-core/server.h @@ -42,6 +42,12 @@ typedef struct AvahiEntry AvahiEntry; #define AVAHI_MAX_LEGACY_UNICAST_REFLECT_SLOTS 100 +#define AVAHI_FLAGS_VALID(flags, max) (!((flags) & ~(max))) + +#define AVAHI_RR_HOLDOFF_MSEC 1000 +#define AVAHI_RR_HOLDOFF_MSEC_RATE_LIMIT 60000 +#define AVAHI_RR_RATE_LIMIT_COUNT 15 + typedef struct AvahiLegacyUnicastReflectSlot AvahiLegacyUnicastReflectSlot; struct AvahiLegacyUnicastReflectSlot { @@ -61,7 +67,7 @@ struct AvahiEntry { int dead; - AvahiEntryFlags flags; + AvahiPublishFlags flags; AvahiRecord *record; AvahiIfIndex interface; AvahiProtocol protocol; @@ -70,7 +76,7 @@ struct AvahiEntry { AVAHI_LLIST_FIELDS(AvahiEntry, by_key); AVAHI_LLIST_FIELDS(AvahiEntry, by_group); - AVAHI_LLIST_HEAD(AvahiAnnouncement, announcements); + AVAHI_LLIST_HEAD(AvahiAnnouncer, announcers); }; struct AvahiSEntryGroup { @@ -86,6 +92,8 @@ struct AvahiSEntryGroup { unsigned n_register_try; struct timeval register_time; AvahiTimeEvent *register_time_event; + + struct timeval established_at; AVAHI_LLIST_FIELDS(AvahiSEntryGroup, groups); AVAHI_LLIST_HEAD(AvahiEntry, entries); @@ -150,9 +158,10 @@ struct AvahiServer { AvahiWideAreaLookupEngine *wide_area_lookup_engine; }; -int avahi_server_entry_match_interface(AvahiEntry *e, AvahiInterface *i); +void avahi_entry_free(AvahiServer*s, AvahiEntry *e); +void avahi_entry_group_free(AvahiServer *s, AvahiSEntryGroup *g); -void avahi_server_post_query(AvahiServer *s, AvahiIfIndex interface, AvahiProtocol protocol, AvahiKey *key); +void avahi_cleanup_dead_entries(AvahiServer *s); void avahi_server_prepare_response(AvahiServer *s, AvahiInterface *i, AvahiEntry *e, int unicast_response, int auxiliary); void avahi_server_prepare_matching_responses(AvahiServer *s, AvahiInterface *i, AvahiKey *k, int unicast_response); @@ -171,4 +180,18 @@ void avahi_server_increase_host_rr_pending(AvahiServer *s); int avahi_server_set_errno(AvahiServer *s, int error); +#define AVAHI_CHECK_VALIDITY_RETURN_NULL(server, expression, error) { \ + if (!(expression)) { \ + avahi_server_set_errno((server), (error)); \ + return NULL; \ + } \ +} + +#define AVAHI_CHECK_VALIDITY_SET_RET_GOTO_FAIL(server, expression, error) {\ + if (!(expression)) { \ + ret = avahi_server_set_errno((server), (error)); \ + goto fail; \ + } \ +} + #endif