summaryrefslogtreecommitdiff
path: root/include/irc_res.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/irc_res.h')
-rw-r--r--include/irc_res.h85
1 files changed, 85 insertions, 0 deletions
diff --git a/include/irc_res.h b/include/irc_res.h
new file mode 100644
index 0000000..cddd955
--- /dev/null
+++ b/include/irc_res.h
@@ -0,0 +1,85 @@
+/*
+ * include/irc_res.h for referencing functions in src/irc_res.c
+ *
+ * $Id$
+ */
+
+#ifndef INCLUDED_irc_res_h
+#define INCLUDED_irc_res_h
+
+#include "config.h"
+
+struct Client; /* XXX */
+
+/* Here we define some values lifted from nameser.h */
+#define NS_NOTIFY_OP 4
+#define NS_INT16SZ 2
+#define NS_IN6ADDRSZ 16
+#define NS_INADDRSZ 4
+#define NS_INT32SZ 4
+#define NS_CMPRSFLGS 0xc0
+#define NS_MAXCDNAME 255
+#define QUERY 0
+#define IQUERY 1
+#define NO_ERRORS 0
+#define SERVFAIL 2
+#define NXDOMAIN 3
+#define T_A 1
+#define T_AAAA 28
+#define T_PTR 12
+#define T_CNAME 5
+#define T_NULL 10
+#define C_IN 1
+#define QFIXEDSZ 4
+#define RRFIXEDSZ 10
+#define HFIXEDSZ 12
+
+
+
+typedef struct
+{
+ unsigned id :16; /* query identification number */
+#ifdef WORDS_BIGENDIAN
+ /* fields in third byte */
+ unsigned qr: 1; /* response flag */
+ unsigned opcode: 4; /* purpose of message */
+ unsigned aa: 1; /* authoritive answer */
+ unsigned tc: 1; /* truncated message */
+ unsigned rd: 1; /* recursion desired */
+ /* fields in fourth byte */
+ unsigned ra: 1; /* recursion available */
+ unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */
+ unsigned ad: 1; /* authentic data from named */
+ unsigned cd: 1; /* checking disabled by resolver */
+ unsigned rcode :4; /* response code */
+#else
+ /* fields in third byte */
+ unsigned rd :1; /* recursion desired */
+ unsigned tc :1; /* truncated message */
+ unsigned aa :1; /* authoritive answer */
+ unsigned opcode :4; /* purpose of message */
+ unsigned qr :1; /* response flag */
+ /* fields in fourth byte */
+ unsigned rcode :4; /* response code */
+ unsigned cd: 1; /* checking disabled by resolver */
+ unsigned ad: 1; /* authentic data from named */
+ unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */
+ unsigned ra :1; /* recursion available */
+#endif
+ /* remaining bytes */
+ unsigned qdcount :16; /* number of question entries */
+ unsigned ancount :16; /* number of answer entries */
+ unsigned nscount :16; /* number of authority entries */
+ unsigned arcount :16; /* number of resource entries */
+} HEADER;
+
+typedef void (*dns_callback_fnc)(void *, const struct irc_ssaddr *, const char *);
+
+extern void init_resolver(void);
+extern void restart_resolver(void);
+extern void delete_resolver_queries(const void *);
+extern void report_dns_servers(struct Client *);
+extern void gethost_byname_type(dns_callback_fnc , void *, const char *, int);
+extern void gethost_byname(dns_callback_fnc, void *, const char *);
+extern void gethost_byaddr(dns_callback_fnc, void *, const struct irc_ssaddr *);
+#endif