diff options
author | Benny Prijono <bennylp@teluu.com> | 2007-11-20 09:47:32 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2007-11-20 09:47:32 +0000 |
commit | b7375dded805157bed596529dd1a0015a9ceb5b3 (patch) | |
tree | 88b814eea49988b8208160a9ed13941a54a56f0e /pjlib-util/src/pjlib-util/dns.c | |
parent | 07ff91da6934c2afecec7061a7ffa6a9cf55c19b (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.c | 8 |
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) { |