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