Simplify UDP vs. TCP handling in service_announce_services
[project/mdnsd.git] / interface.h
index 5250e96..50d7071 100644 (file)
@@ -18,6 +18,8 @@
 #include <sys/types.h>
 #include <sys/uio.h>
 
+#include <arpa/inet.h>
+
 #include <libubox/uloop.h>
 #include <libubox/vlist.h>
 
@@ -25,19 +27,33 @@ extern struct vlist_tree interfaces;
 
 struct interface {
        struct vlist_node node;
+       struct interface *peer;
 
        const char *name;
+       char *id;
        struct uloop_fd fd;
        struct uloop_timeout reconnect;
 
+       int v6;
+       int multicast;
        int ifindex;
-       const char *ip;
+
+       struct in_addr v4_addr;
+       struct in_addr v4_netmask;
+       struct in6_addr v6_addr;
+       struct in6_addr v6_netmask;
+       char v4_addrs[16];
+       char v6_addrs[64];
 
        struct uloop_timeout announce_timer;
        int announce_state;
+
+       char *mcast_addr;
 };
 
 int interface_add(const char *name);
+void interface_shutdown(void);
 int interface_send_packet(struct interface *iface, struct iovec *iov, int iov_len);
+struct interface* interface_get(const char *name, int v6, int multicast);
 
 #endif