]> jfr.im git - solanum.git/blobdiff - authd/dns.h
authd: don't exit() on OPM duplicate scanner errors, just ignore it
[solanum.git] / authd / dns.h
index 66497a697432925cbeac29de5f8783302bde6acd..7383ab692eb014bab14bff2327e8f33e34daab84 100644 (file)
 
 #define DNS_REQ_IDLEN 10
 
+#include "stdinc.h"
 #include "res.h"
 #include "reslib.h"
 
-struct dns_request
+typedef enum
+{
+       QUERY_INVALID = 0,
+       QUERY_A = '4',
+       QUERY_AAAA = '6',
+       QUERY_PTR_A = 'R',
+       QUERY_PTR_AAAA = 'S',
+} query_type;
+
+/* Similar to that in ircd */
+typedef void (*DNSCB)(const char *res, bool status, query_type type, void *data);
+
+struct dns_query
 {
        struct DNSQuery query;
-       char reqid[DNS_REQ_IDLEN];
+       query_type type;
        struct rb_sockaddr_storage addr;
-       char type;
+       uint64_t id;
+
+       DNSCB callback;
+       void *data;
 };
 
-extern void format_address(struct rb_sockaddr_storage *addr, char *buffer, size_t length);
-extern void resolve_dns(int parc, char *parv[]);
-extern void enumerate_nameservers(const char *rid, const char letter);
+extern struct dns_query *lookup_hostname(const char *ip, DNSCB callback, void *data);
+extern struct dns_query *lookup_ip(const char *host, int aftype, DNSCB callback, void *data);
+extern void cancel_query(struct dns_query *query);
+
+extern void handle_resolve_dns(int parc, char *parv[]);
+extern void enumerate_nameservers(uint32_t rid, const char letter);
 extern void reload_nameservers(const char letter);
 
 #endif