]> git.meshlink.io Git - catta/blobdiff - avahi-core/server.h
* update todo list
[catta] / avahi-core / server.h
index fb137b03770c6f50c4a3fbd6966daf7b6c1a7f5a..ad8576df264f6364133595d26a8602ed01505074 100644 (file)
 #include "dns.h"
 #include "rrlist.h"
 
+#define AVAHI_MAX_LEGACY_UNICAST_REFLECT_SLOTS 100
+
+typedef struct AvahiLegacyUnicastReflectSlot AvahiLegacyUnicastReflectSlot;
+
+struct AvahiLegacyUnicastReflectSlot {
+    AvahiServer *server;
+    
+    guint16 id, original_id;
+    AvahiAddress address;
+    guint16 port;
+    gint interface;
+    GTimeVal elapse_time;
+    AvahiTimeEvent *time_event;
+};
+
 struct AvahiEntry {
     AvahiServer *server;
     AvahiEntryGroup *group;
@@ -83,6 +98,7 @@ struct AvahiServer {
     AVAHI_LLIST_HEAD(AvahiServiceTypeBrowser, service_type_browsers);
     AVAHI_LLIST_HEAD(AvahiServiceBrowser, service_browsers);
     AVAHI_LLIST_HEAD(AvahiServiceResolver, service_resolvers);
+    AVAHI_LLIST_HEAD(AvahiDNSServerBrowser, dns_server_browsers);
 
     gboolean need_entry_cleanup, need_group_cleanup, need_browser_cleanup;
     
@@ -90,9 +106,11 @@ struct AvahiServer {
     
     gchar *host_name, *host_name_fqdn, *domain_name;
 
-    gint fd_ipv4, fd_ipv6;
+    gint fd_ipv4, fd_ipv6,
+        /* The following two sockets two are used for reflection only */
+        fd_legacy_unicast_ipv4, fd_legacy_unicast_ipv6;
 
-    GPollFD pollfd_ipv4, pollfd_ipv6;
+    GPollFD pollfd_ipv4, pollfd_ipv6, pollfd_legacy_unicast_ipv4, pollfd_legacy_unicast_ipv6;
     GSource *source;
 
     AvahiServerState state;
@@ -107,6 +125,10 @@ struct AvahiServer {
     
     /* Used for assembling responses */
     AvahiRecordList *record_list;
+
+    /* Used for reflection of legacy unicast packets */
+    AvahiLegacyUnicastReflectSlot **legacy_unicast_reflect_slots;
+    guint16 legacy_unicast_reflect_id;
 };
 
 gboolean avahi_server_entry_match_interface(AvahiEntry *e, AvahiInterface *i);