Fix IPv6 read
[project/mdnsd.git] / dns.h
diff --git a/dns.h b/dns.h
index b39608e..791159f 100644 (file)
--- a/dns.h
+++ b/dns.h
@@ -14,6 +14,9 @@
 #ifndef _DNS_H__
 #define _DNS_H__
 
+#include <stdint.h>
+#include <arpa/inet.h>
+
 #define FLAG_RESPONSE          0x8000
 #define FLAG_AUTHORATIVE       0x0400
 
 #define IS_COMPRESSED(x)       ((x & 0xc0) == 0xc0)
 
 #define MCAST_ADDR             "224.0.0.251"
+#define MCAST_ADDR6            "ff02::fb"
 #define MCAST_PORT             5353
 
 #define CLASS_FLUSH            0x8000
+#define CLASS_UNICAST          0x8000
 #define CLASS_IN               0x0001
 
 #define MAX_NAME_LEN           8096
@@ -65,17 +70,14 @@ struct dns_question {
 } __attribute__((packed, aligned(2)));
 
 struct interface;
-
-extern char rdata_buffer[MAX_DATA_LEN + 1];
-
-extern void dns_send_question(struct interface *iface, const char *question, int type);
-extern void dns_init_answer(void);
-extern void dns_add_answer(int type, const uint8_t *rdata, uint16_t rdlength);
-extern void dns_send_answer(struct uloop_fd *u, const char *answer);
-extern char* dns_consume_name(const uint8_t *base, int blen, uint8_t **data, int *len);
-extern struct dns_answer* dns_consume_answer(uint8_t **data, int *len);
-extern struct dns_question* dns_consume_question(uint8_t **data, int *len);
-extern struct dns_header* dns_consume_header(uint8_t **data, int *len);
-extern const char* dns_type_string(uint16_t type);
+extern int cfg_proto;
+extern int cfg_no_subnet;
+
+void dns_send_question(struct interface *iface, const char *question, int type, int unicast);
+void dns_init_answer(void);
+void dns_add_answer(int type, const uint8_t *rdata, uint16_t rdlength, int ttl);
+void dns_send_answer(struct interface *iface, const char *answer);
+const char* dns_type_string(uint16_t type);
+void dns_handle_packet(struct interface *iface, struct sockaddr *s, uint16_t port, uint8_t *buf, int len);
 
 #endif