#ifndef fooflxserverhfoo
#define fooflxserverhfoo
-typedef struct _flxEntry flxEntry;
-typedef struct _flxResponseJob flxResponseJob;
+typedef struct _flxServerEntry flxServerEntry;
#include "flx.h"
#include "iface.h"
#include "prioq.h"
#include "llist.h"
#include "timeeventq.h"
+#include "announce.h"
+#include "subscribe.h"
-struct _flxEntry {
+struct _flxServerEntry {
flxRecord *record;
gint id;
gint interface;
guchar protocol;
- gboolean unique;
+ flxServerEntryFlags flags;
- FLX_LLIST_FIELDS(flxEntry, entry);
- FLX_LLIST_FIELDS(flxEntry, by_name);
- FLX_LLIST_FIELDS(flxEntry, by_id);
-};
-
-struct _flxResponseJob {
- flxTimeEvent *time_event;
- flxRecord *record;
- FLX_LLIST_FIELDS(flxResponseJob, response);
+ FLX_LLIST_FIELDS(flxServerEntry, entry);
+ FLX_LLIST_FIELDS(flxServerEntry, by_key);
+ FLX_LLIST_FIELDS(flxServerEntry, by_id);
+
+ FLX_LLIST_HEAD(flxAnnouncement, announcements);
};
struct _flxServer {
gint current_id;
+ FLX_LLIST_HEAD(flxServerEntry, entries);
GHashTable *rrset_by_id;
- GHashTable *rrset_by_name;
+ GHashTable *rrset_by_key;
- FLX_LLIST_HEAD(flxEntry, entries);
+ FLX_LLIST_HEAD(flxSubscription, subscriptions);
+ GHashTable *subscription_hashtable;
flxTimeEventQueue *time_event_queue;
GPollFD pollfd_ipv4, pollfd_ipv6;
GSource *source;
+
};
+gboolean flx_server_entry_match_interface(flxServerEntry *e, flxInterface *i);
#endif