#include <avahi-common/llist.h>
#include <avahi-common/address.h>
-#include "server.h"
+#include "internal.h"
#include "cache.h"
#include "response-sched.h"
#include "query-sched.h"
#include "announce.h"
#include "browse.h"
#include "querier.h"
+
+#ifdef HAVE_NETLINK
#include "iface-linux.h"
+#elif defined(HAVE_PF_ROUTE)
+#include "iface-pfroute.h"
+#else
+#error "No network configuration notification system available"
+#endif
-#define AVAHI_MAX_MAC_ADDRESS 32
+#define AVAHI_MAC_ADDRESS_MAX 32
struct AvahiInterfaceMonitor {
AvahiServer *server;
unsigned mtu;
- uint8_t mac_address[AVAHI_MAX_MAC_ADDRESS];
+ uint8_t mac_address[AVAHI_MAC_ADDRESS_MAX];
size_t mac_address_size;
AvahiSEntryGroup *entry_group;
AvahiProbeScheduler *probe_scheduler;
AVAHI_LLIST_HEAD(AvahiInterfaceAddress, addresses);
- AVAHI_LLIST_HEAD(AvahiAnnouncement, announcements);
+ AVAHI_LLIST_HEAD(AvahiAnnouncer, announcers);
AvahiHashmap *queriers_by_key;
AVAHI_LLIST_HEAD(AvahiQuerier, queriers);
int avahi_interface_monitor_init_osdep(AvahiInterfaceMonitor *m);
void avahi_interface_monitor_free_osdep(AvahiInterfaceMonitor *m);
-
void avahi_interface_monitor_sync(AvahiInterfaceMonitor *m);
+typedef void (*AvahiInterfaceMonitorWalkCallback)(AvahiInterfaceMonitor *m, AvahiInterface *i, void* userdata);
+void avahi_interface_monitor_walk(AvahiInterfaceMonitor *m, AvahiIfIndex idx, AvahiProtocol protocol, AvahiInterfaceMonitorWalkCallback callback, void* userdata);
+int avahi_dump_caches(AvahiInterfaceMonitor *m, AvahiDumpCallback callback, void* userdata);
+
+void avahi_interface_monitor_update_rrs(AvahiInterfaceMonitor *m, int remove_rrs);
+int avahi_address_is_local(AvahiInterfaceMonitor *m, const AvahiAddress *a);
+void avahi_interface_monitor_check_relevant(AvahiInterfaceMonitor *m);
+
+/* AvahiHwInterface */
+
+AvahiHwInterface *avahi_hw_interface_new(AvahiInterfaceMonitor *m, AvahiIfIndex idx);
+void avahi_hw_interface_free(AvahiHwInterface *hw, int send_goodbye);
+
+void avahi_hw_interface_update_rrs(AvahiHwInterface *hw, int remove_rrs);
+void avahi_hw_interface_check_relevant(AvahiHwInterface *hw);
+
+AvahiHwInterface* avahi_interface_monitor_get_hw_interface(AvahiInterfaceMonitor *m, int idx);
+
/* AvahiInterface */
AvahiInterface* avahi_interface_new(AvahiInterfaceMonitor *m, AvahiHwInterface *hw, AvahiProtocol protocol);
AvahiInterface* avahi_interface_monitor_get_interface(AvahiInterfaceMonitor *m, AvahiIfIndex idx, AvahiProtocol protocol);
-/* AvahiHwInterface */
-
-AvahiHwInterface *avahi_hw_interface_new(AvahiInterfaceMonitor *m, AvahiIfIndex idx);
-void avahi_hw_interface_free(AvahiHwInterface *hw, int send_goodbye);
-
-void avahi_hw_interface_update_rrs(AvahiHwInterface *hw, int remove_rrs);
-void avahi_hw_interface_check_relevant(AvahiHwInterface *hw);
-
- AvahiHwInterface* avahi_interface_monitor_get_hw_interface(AvahiInterfaceMonitor *m, int idx);
-
/* AvahiInterfaceAddress */
AvahiInterfaceAddress *avahi_interface_address_new(AvahiInterfaceMonitor *m, AvahiInterface *i, const AvahiAddress *addr, unsigned prefix_len);
-void avahi_interface_address_update_rrs(AvahiInterfaceAddress *a, int remove_rrs);
void avahi_interface_address_free(AvahiInterfaceAddress *a);
-int avahi_interface_address_is_relevant(AvahiInterfaceAddress *a);
-AvahiInterfaceAddress* avahi_interface_monitor_get_address(AvahiInterfaceMonitor *m, AvahiInterface *i, const AvahiAddress *raddr);
-
-
-
-
-int avahi_dump_caches(AvahiInterfaceMonitor *m, AvahiDumpCallback callback, void* userdata);
-typedef void (*AvahiInterfaceMonitorWalkCallback)(AvahiInterfaceMonitor *m, AvahiInterface *i, void* userdata);
-
-void avahi_interface_monitor_walk(AvahiInterfaceMonitor *m, AvahiIfIndex idx, AvahiProtocol protocol, AvahiInterfaceMonitorWalkCallback callback, void* userdata);
-
-void avahi_interface_monitor_update_rrs(AvahiInterfaceMonitor *m, int remove_rrs);
-
-int avahi_address_is_local(AvahiInterfaceMonitor *m, const AvahiAddress *a);
-
-void avahi_interface_monitor_check_relevant(AvahiInterfaceMonitor *m);
+void avahi_interface_address_update_rrs(AvahiInterfaceAddress *a, int remove_rrs);
+int avahi_interface_address_is_relevant(AvahiInterfaceAddress *a);
+AvahiInterfaceAddress* avahi_interface_monitor_get_address(AvahiInterfaceMonitor *m, AvahiInterface *i, const AvahiAddress *raddr);
#endif