summaryrefslogtreecommitdiff
path: root/pjlib-util/src/pjlib-util/dns.c
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-11-20 09:47:32 +0000
committerBenny Prijono <bennylp@teluu.com>2007-11-20 09:47:32 +0000
commitb7375dded805157bed596529dd1a0015a9ceb5b3 (patch)
tree88b814eea49988b8208160a9ed13941a54a56f0e /pjlib-util/src/pjlib-util/dns.c
parent07ff91da6934c2afecec7061a7ffa6a9cf55c19b (diff)
Ticket #419: initial support for DNS AAAA resolution
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1587 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjlib-util/src/pjlib-util/dns.c')
-rw-r--r--pjlib-util/src/pjlib-util/dns.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/pjlib-util/src/pjlib-util/dns.c b/pjlib-util/src/pjlib-util/dns.c
index f8bc9008..53066add 100644
--- a/pjlib-util/src/pjlib-util/dns.c
+++ b/pjlib-util/src/pjlib-util/dns.c
@@ -29,6 +29,7 @@ PJ_DEF(const char *) pj_dns_get_type_name(int type)
{
switch (type) {
case PJ_DNS_TYPE_A: return "A";
+ case PJ_DNS_TYPE_AAAA: return "AAAA";
case PJ_DNS_TYPE_SRV: return "SRV";
case PJ_DNS_TYPE_NS: return "NS";
case PJ_DNS_TYPE_CNAME: return "CNAME";
@@ -346,6 +347,10 @@ static pj_status_t parse_rr(pj_dns_parsed_rr *rr, pj_pool_t *pool,
pj_memcpy(&rr->rdata.a.ip_addr, p, 4);
p += 4;
+ } else if (rr->type == PJ_DNS_TYPE_AAAA) {
+ pj_memcpy(&rr->rdata.aaaa.ip_addr, p, 16);
+ p += 16;
+
} else if (rr->type == PJ_DNS_TYPE_CNAME ||
rr->type == PJ_DNS_TYPE_NS ||
rr->type == PJ_DNS_TYPE_PTR)
@@ -591,6 +596,9 @@ static void copy_rr(pj_pool_t *pool, pj_dns_parsed_rr *dst,
pool, &dst->rdata.srv.target);
} else if (src->type == PJ_DNS_TYPE_A) {
dst->rdata.a.ip_addr.s_addr = src->rdata.a.ip_addr.s_addr;
+ } else if (src->type == PJ_DNS_TYPE_AAAA) {
+ pj_memcpy(&dst->rdata.aaaa.ip_addr, &src->rdata.aaaa.ip_addr,
+ sizeof(pj_in6_addr));
} else if (src->type == PJ_DNS_TYPE_CNAME) {
pj_strdup(pool, &dst->rdata.cname.name, &src->rdata.cname.name);
} else if (src->type == PJ_DNS_TYPE_NS) {