X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=iface.h;h=cab4949f166e1d9de1b76961103549e25a5c6ae2;hb=7dce450bdc23ea306a61e00f914481e29ebcb176;hp=90bfc05857623adf02012ac5d54ad5de46786914;hpb=d6e2dbabccb08970da991e6d2b0fda7a56d83e6f;p=catta diff --git a/iface.h b/iface.h index 90bfc05..cab4949 100644 --- a/iface.h +++ b/iface.h @@ -3,60 +3,100 @@ #include -struct _flxInterfaceMonitor; -typedef struct _flxInterfaceMonitor flxInterfaceMonitor; - -struct _flxInterfaceAddress; -typedef struct _flxInterfaceAddress flxInterfaceAddress; - -struct _flxInterface; -typedef struct _flxInterface flxInterface; +typedef struct _AvahiInterfaceMonitor AvahiInterfaceMonitor; +typedef struct _AvahiInterfaceAddress AvahiInterfaceAddress; +typedef struct _AvahiInterface AvahiInterface; +typedef struct _AvahiHwInterface AvahiHwInterface; #include "address.h" #include "server.h" #include "netlink.h" +#include "cache.h" +#include "llist.h" +#include "psched.h" +#include "dns.h" +#include "announce.h" -struct _flxInterfaceMonitor { - flxServer *server; - flxNetlink *netlink; +struct _AvahiInterfaceMonitor { + AvahiServer *server; + AvahiNetlink *netlink; GHashTable *hash_table; - flxInterface *interfaces; + AVAHI_LLIST_HEAD(AvahiInterface, interfaces); + AVAHI_LLIST_HEAD(AvahiHwInterface, hw_interfaces); guint query_addr_seq, query_link_seq; - enum { LIST_IFACE, LIST_ADDR, LIST_DONE } list; + enum { + LIST_IFACE, + LIST_ADDR, + LIST_DONE + } list; }; -struct _flxInterface { +struct _AvahiHwInterface { + AVAHI_LLIST_FIELDS(AvahiHwInterface, hardware); + AvahiInterfaceMonitor *monitor; + gchar *name; gint index; guint flags; + guint mtu; + + AVAHI_LLIST_HEAD(AvahiInterface, interfaces); +}; - guint n_ipv6_addrs, n_ipv4_addrs; +struct _AvahiInterface { + AVAHI_LLIST_FIELDS(AvahiInterface, interface); + AVAHI_LLIST_FIELDS(AvahiInterface, by_hardware); + AvahiInterfaceMonitor *monitor; - flxInterfaceAddress *addresses; - flxInterface *next, *prev; + AvahiHwInterface *hardware; + guchar protocol; + gboolean announcing; + + AvahiCache *cache; + AvahiPacketScheduler *scheduler; + + AVAHI_LLIST_HEAD(AvahiInterfaceAddress, addresses); + AVAHI_LLIST_HEAD(AvahiAnnouncement, announcements); }; -struct _flxInterfaceAddress { +struct _AvahiInterfaceAddress { + AVAHI_LLIST_FIELDS(AvahiInterfaceAddress, address); + AvahiInterfaceMonitor *monitor; + guchar flags; guchar scope; - flxAddress address; + AvahiAddress address; - flxInterface *interface; - flxInterfaceAddress *next, *prev; - - gint rr_id; + AvahiEntryGroup *entry_group; + AvahiInterface *interface; }; -flxInterfaceMonitor *flx_interface_monitor_new(flxServer *server); -void flx_interface_monitor_free(flxInterfaceMonitor *m); +AvahiInterfaceMonitor *avahi_interface_monitor_new(AvahiServer *server); +void avahi_interface_monitor_free(AvahiInterfaceMonitor *m); + +void avahi_interface_monitor_sync(AvahiInterfaceMonitor *m); + +AvahiInterface* avahi_interface_monitor_get_interface(AvahiInterfaceMonitor *m, gint index, guchar protocol); +AvahiHwInterface* avahi_interface_monitor_get_hw_interface(AvahiInterfaceMonitor *m, gint index); + +void avahi_interface_send_packet(AvahiInterface *i, AvahiDnsPacket *p); -const flxInterface* flx_interface_monitor_get_interface(flxInterfaceMonitor *m, gint index); -const flxInterface* flx_interface_monitor_get_first(flxInterfaceMonitor *m); +void avahi_interface_post_query(AvahiInterface *i, AvahiKey *k, gboolean immediately); +void avahi_interface_post_probe(AvahiInterface *i, AvahiRecord *p, gboolean immediately); +void avahi_interface_post_response(AvahiInterface *i, const AvahiAddress *a, AvahiRecord *record, gboolean flush_cache, gboolean immediately); -int flx_interface_is_relevant(flxInterface *i); -int flx_address_is_relevant(flxInterfaceAddress *a); +void avahi_dump_caches(AvahiInterfaceMonitor *m, FILE *f); + +gboolean avahi_interface_relevant(AvahiInterface *i); +gboolean avahi_interface_address_relevant(AvahiInterfaceAddress *a); + +gboolean avahi_interface_match(AvahiInterface *i, gint index, guchar protocol); + +typedef void (*AvahiInterfaceMonitorWalkCallback)(AvahiInterfaceMonitor *m, AvahiInterface *i, gpointer userdata); +void avahi_interface_monitor_walk(AvahiInterfaceMonitor *m, gint index, guchar protocol, AvahiInterfaceMonitorWalkCallback callback, gpointer userdata); + #endif