1 #ifndef fooflxserverhfoo
2 #define fooflxserverhfoo
8 #include "timeeventq.h"
10 #include "subscribe.h"
23 FLX_LLIST_FIELDS(flxEntry, entries);
24 FLX_LLIST_FIELDS(flxEntry, by_key);
25 FLX_LLIST_FIELDS(flxEntry, by_group);
27 FLX_LLIST_HEAD(flxAnnouncement, announcements);
30 struct _flxEntryGroup {
34 flxEntryGroupStatus status;
36 flxEntryGroupCallback callback;
40 FLX_LLIST_FIELDS(flxEntryGroup, groups);
41 FLX_LLIST_HEAD(flxEntry, entries);
45 GMainContext *context;
46 flxInterfaceMonitor *monitor;
48 FLX_LLIST_HEAD(flxEntry, entries);
49 GHashTable *entries_by_key;
51 FLX_LLIST_HEAD(flxEntryGroup, groups);
53 FLX_LLIST_HEAD(flxSubscription, subscriptions);
54 GHashTable *subscription_hashtable;
56 gboolean need_entry_cleanup, need_group_cleanup;
58 flxTimeEventQueue *time_event_queue;
62 gint fd_ipv4, fd_ipv6;
64 GPollFD pollfd_ipv4, pollfd_ipv6;
67 gboolean ignore_bad_ttl;
70 gboolean flx_server_entry_match_interface(flxEntry *e, flxInterface *i);
72 void flx_server_post_query(flxServer *s, gint interface, guchar protocol, flxKey *key);
73 void flx_server_post_response(flxServer *s, gint interface, guchar protocol, flxRecord *record, gboolean flush_cache);
75 void flx_entry_group_run_callback(flxEntryGroup *g, flxEntryGroupStatus state);
77 gboolean flx_entry_commited(flxEntry *e);