2 * include/ircd_res.h for referencing functions in ircd/ircd_res.c
11 #include "ircd_addrinfo.h"
14 #define INADDR_NONE ((uint32_t)-1)
19 /* Here we define some values lifted from nameser.h */
20 #define NS_NOTIFY_OP 4
22 #define NS_IN6ADDRSZ 16
25 #define NS_CMPRSFLGS 0xc0
26 #define NS_MAXCDNAME 255
43 struct sockaddr_storage ss;
51 struct irc_ssaddr addr;
56 void *vptr; /* pointer used by callback to identify request */
57 void (*callback)(void* vptr, struct DNSReply *reply); /* callback to call */
62 unsigned id :16; /* query identification number */
63 #ifdef WORDS_BIGENDIAN
64 /* fields in third byte */
65 unsigned qr: 1; /* response flag */
66 unsigned opcode: 4; /* purpose of message */
67 unsigned aa: 1; /* authoritive answer */
68 unsigned tc: 1; /* truncated message */
69 unsigned rd: 1; /* recursion desired */
70 /* fields in fourth byte */
71 unsigned ra: 1; /* recursion available */
72 unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */
73 unsigned ad: 1; /* authentic data from named */
74 unsigned cd: 1; /* checking disabled by resolver */
75 unsigned rcode :4; /* response code */
77 /* fields in third byte */
78 unsigned rd :1; /* recursion desired */
79 unsigned tc :1; /* truncated message */
80 unsigned aa :1; /* authoritive answer */
81 unsigned opcode :4; /* purpose of message */
82 unsigned qr :1; /* response flag */
83 /* fields in fourth byte */
84 unsigned rcode :4; /* response code */
85 unsigned cd: 1; /* checking disabled by resolver */
86 unsigned ad: 1; /* authentic data from named */
87 unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */
88 unsigned ra :1; /* recursion available */
91 unsigned qdcount :16; /* number of question entries */
92 unsigned ancount :16; /* number of answer entries */
93 unsigned nscount :16; /* number of authority entries */
94 unsigned arcount :16; /* number of resource entries */
97 extern int init_resolver(void);
98 extern void restart_resolver(void);
99 extern void add_local_domain(char *hname, size_t size);
100 extern size_t cres_mem(struct Client* cptr);
101 extern void delete_resolver_queries(const void *vptr);
102 extern void report_dns_servers(struct Client *source_p, struct StatDesc *sd, int stat, char *param);
103 extern void gethost_byname_type(const char *name, const struct DNSQuery *query, int type);
104 extern void gethost_byname(const char *name, const struct DNSQuery *query);
105 extern void gethost_byaddr(const struct irc_ssaddr *addr, const struct DNSQuery *query);
106 extern void gethost_byinaddr(const struct in_addr *addr, const struct DNSQuery *query);