ircd/dns: implement final version of authd-dns line protocol
This commit is contained in:
parent
fa43f55940
commit
1bf2919817
1 changed files with 12 additions and 10 deletions
22
ircd/dns.c
22
ircd/dns.c
|
@ -38,10 +38,12 @@
|
||||||
|
|
||||||
#define DNS_IDTABLE_SIZE 0x2000
|
#define DNS_IDTABLE_SIZE 0x2000
|
||||||
|
|
||||||
#define DNS_HOST ((char)'H')
|
#define DNS_HOST_IPV4 ((char)'4')
|
||||||
#define DNS_REVERSE ((char)'I')
|
#define DNS_HOST_IPV6 ((char)'6')
|
||||||
|
#define DNS_REVERSE_IPV4 ((char)'R')
|
||||||
|
#define DNS_REVERSE_IPV6 ((char)'S')
|
||||||
|
|
||||||
static void submit_dns(const char, uint16_t id, int aftype, const char *addr);
|
static void submit_dns(uint16_t id, char type, const char *addr);
|
||||||
|
|
||||||
struct dnsreq
|
struct dnsreq
|
||||||
{
|
{
|
||||||
|
@ -114,7 +116,7 @@ lookup_hostname(const char *hostname, int aftype, DNSCB callback, void *data)
|
||||||
#endif
|
#endif
|
||||||
aft = 4;
|
aft = 4;
|
||||||
|
|
||||||
submit_dns(DNS_HOST, nid, aft, hostname);
|
submit_dns(nid, aft == 4 ? DNS_HOST_IPV4 : DNS_HOST_IPV6, hostname);
|
||||||
return (nid);
|
return (nid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,12 +143,12 @@ lookup_ip(const char *addr, int aftype, DNSCB callback, void *data)
|
||||||
#endif
|
#endif
|
||||||
aft = 4;
|
aft = 4;
|
||||||
|
|
||||||
submit_dns(DNS_REVERSE, nid, aft, addr);
|
submit_dns(nid, aft == 4 ? DNS_REVERSE_IPV4 : DNS_REVERSE_IPV6, addr);
|
||||||
return (nid);
|
return (nid);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
dns_results_callback(const char *callid, const char *status, const char *aftype, const char *results)
|
dns_results_callback(const char *callid, const char *status, const char *type, const char *results)
|
||||||
{
|
{
|
||||||
struct dnsreq *req;
|
struct dnsreq *req;
|
||||||
uint16_t nid;
|
uint16_t nid;
|
||||||
|
@ -158,8 +160,8 @@ dns_results_callback(const char *callid, const char *status, const char *aftype,
|
||||||
return;
|
return;
|
||||||
nid = (uint16_t)lnid;
|
nid = (uint16_t)lnid;
|
||||||
req = &querytable[nid];
|
req = &querytable[nid];
|
||||||
st = atoi(status);
|
st = *status == 'O';
|
||||||
aft = atoi(aftype);
|
aft = *type == '6' || *type == 'S' ? 6 : 4;
|
||||||
if(req->callback == NULL)
|
if(req->callback == NULL)
|
||||||
{
|
{
|
||||||
/* got cancelled..oh well */
|
/* got cancelled..oh well */
|
||||||
|
@ -191,12 +193,12 @@ report_dns_servers(struct Client *source_p)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
submit_dns(char type, uint16_t nid, int aftype, const char *addr)
|
submit_dns(uint16_t nid, char type, const char *addr)
|
||||||
{
|
{
|
||||||
if(authd_helper == NULL)
|
if(authd_helper == NULL)
|
||||||
{
|
{
|
||||||
handle_dns_failure(nid);
|
handle_dns_failure(nid);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
rb_helper_write(authd_helper, "%c %x %d %s", type, nid, aftype, addr);
|
rb_helper_write(authd_helper, "D %x %c %s", nid, type, addr);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue