summaryrefslogtreecommitdiff
path: root/pjlib-util
diff options
context:
space:
mode:
authorRiza Sulistyo <riza@teluu.com>2016-06-21 06:55:10 +0000
committerRiza Sulistyo <riza@teluu.com>2016-06-21 06:55:10 +0000
commit2fb94652ccf7a0ea85e267cfe1d652db0a98893c (patch)
tree3b73db74746aa536da94e7439715626864b1492c /pjlib-util
parentb80242b94843137edd58e9075a892c7971b7bf55 (diff)
Re #1933: Update pjnath-test for IPv6 support.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5350 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjlib-util')
-rw-r--r--pjlib-util/include/pjlib-util/dns.h16
-rw-r--r--pjlib-util/src/pjlib-util/dns.c15
-rw-r--r--pjlib-util/src/pjlib-util/dns_server.c14
3 files changed, 45 insertions, 0 deletions
diff --git a/pjlib-util/include/pjlib-util/dns.h b/pjlib-util/include/pjlib-util/dns.h
index eb66a6c8..c3f3145a 100644
--- a/pjlib-util/include/pjlib-util/dns.h
+++ b/pjlib-util/include/pjlib-util/dns.h
@@ -427,6 +427,22 @@ PJ_DECL(void) pj_dns_init_a_rr(pj_dns_parsed_rr *rec,
const pj_in_addr *ip_addr);
/**
+ * Initialize DNS record as DNS AAAA record.
+ *
+ * @param rec The DNS resource record to be initialized as DNS
+ * AAAA record.
+ * @param res_name Resource name.
+ * @param dnsclass DNS class.
+ * @param ttl Resource TTL value.
+ * @param ip_addr Host address.
+ */
+PJ_DECL(void) pj_dns_init_aaaa_rr(pj_dns_parsed_rr *rec,
+ const pj_str_t *res_name,
+ unsigned dnsclass,
+ unsigned ttl,
+ const pj_in6_addr *ip_addr);
+
+/**
* Dump DNS packet to standard log.
*
* @param res The DNS packet.
diff --git a/pjlib-util/src/pjlib-util/dns.c b/pjlib-util/src/pjlib-util/dns.c
index dccb8f0c..df47c83b 100644
--- a/pjlib-util/src/pjlib-util/dns.c
+++ b/pjlib-util/src/pjlib-util/dns.c
@@ -749,3 +749,18 @@ PJ_DEF(void) pj_dns_init_a_rr( pj_dns_parsed_rr *rec,
rec->rdata.a.ip_addr = *ip_addr;
}
+
+PJ_DEF(void) pj_dns_init_aaaa_rr(pj_dns_parsed_rr *rec,
+ const pj_str_t *res_name,
+ unsigned dnsclass,
+ unsigned ttl,
+ const pj_in6_addr *ip_addr)
+{
+ pj_bzero(rec, sizeof(*rec));
+ rec->name = *res_name;
+ rec->type = PJ_DNS_TYPE_AAAA;
+ rec->dnsclass = (pj_uint16_t) dnsclass;
+ rec->ttl = ttl;
+ rec->rdata.aaaa.ip_addr = *ip_addr;
+}
+
diff --git a/pjlib-util/src/pjlib-util/dns_server.c b/pjlib-util/src/pjlib-util/dns_server.c
index d86ea5a5..5e80ceb4 100644
--- a/pjlib-util/src/pjlib-util/dns_server.c
+++ b/pjlib-util/src/pjlib-util/dns_server.c
@@ -311,6 +311,20 @@ static int print_rr(pj_uint8_t *pkt, int size, pj_uint8_t *pos,
p += 6;
size -= 6;
+ } else if (rr->type == PJ_DNS_TYPE_AAAA) {
+
+ if (size < 18)
+ return -1;
+
+ /* RDLEN is 16 */
+ write16(p, 16);
+
+ /* Address */
+ pj_memcpy(p+2, &rr->rdata.aaaa.ip_addr, 16);
+
+ p += 18;
+ size -= 18;
+
} else if (rr->type == PJ_DNS_TYPE_CNAME ||
rr->type == PJ_DNS_TYPE_NS ||
rr->type == PJ_DNS_TYPE_PTR) {