summaryrefslogtreecommitdiff
path: root/ucspi-tcp-0.88/dns_name.c
diff options
context:
space:
mode:
authorJohn Denker <jsd@av8n.com>2012-07-29 15:45:38 -0700
committerJohn Denker <jsd@av8n.com>2012-07-29 15:45:38 -0700
commit0d2205555e68f414eec0afa8a6531626f77c4a57 (patch)
treef0e7d3e161f82180e834a6368d41b79272ab013a /ucspi-tcp-0.88/dns_name.c
parent0c7195dea3482bd4c9ac9fbff318c24c502574c6 (diff)
parent01ef1d365e5776b130e8b65772a80b6adcb0ed46 (diff)
Merge branch 'master' of ephedra:usr/src/qmail into e_master
Diffstat (limited to 'ucspi-tcp-0.88/dns_name.c')
-rw-r--r--ucspi-tcp-0.88/dns_name.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/ucspi-tcp-0.88/dns_name.c b/ucspi-tcp-0.88/dns_name.c
index dcb10c7..1f03186 100644
--- a/ucspi-tcp-0.88/dns_name.c
+++ b/ucspi-tcp-0.88/dns_name.c
@@ -2,10 +2,11 @@
#include "uint16.h"
#include "byte.h"
#include "dns.h"
+#include "ip6.h"
static char *q = 0;
-int dns_name_packet(stralloc *out,char *buf,unsigned int len)
+int dns_name_packet(stralloc *out,const char *buf,unsigned int len)
{
unsigned int pos;
char header[12];
@@ -35,7 +36,7 @@ int dns_name_packet(stralloc *out,char *buf,unsigned int len)
return 0;
}
-int dns_name4(stralloc *out,char ip[4])
+int dns_name4(stralloc *out,const char ip[4])
{
char name[DNS_NAME4_DOMAIN];
@@ -46,3 +47,17 @@ int dns_name4(stralloc *out,char ip[4])
dns_domain_free(&q);
return 0;
}
+
+int dns_name6(stralloc *out,char ip[16])
+{
+ char name[DNS_NAME6_DOMAIN];
+
+ if (ip6_isv4mapped(ip))
+ return dns_name4(out,ip+12);
+ dns_name6_domain(name,ip);
+ if (dns_resolve(name,DNS_T_PTR) == -1) return -1;
+ if (dns_name_packet(out,dns_resolve_tx.packet,dns_resolve_tx.packetlen) == -1) return -1;
+ dns_transmit_free(&dns_resolve_tx);
+ dns_domain_free(&q);
+ return 0;
+}