From 58d6c60c881d265cee8c5ca5dbaad545ff44e995 Mon Sep 17 00:00:00 2001 From: Liong Sauw Ming Date: Fri, 20 May 2016 04:17:00 +0000 Subject: Re #1922: Replace IPv4 specific APIs as per Apple's recommendations https://developer.apple.com/library/ios/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html#//apple_ref/doc/uid/TP40010220-CH213-SW27 git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5311 74dad513-b988-da41-8d7b-12977e46ad98 --- pjlib-util/src/pjlib-util/cli_telnet.c | 3 ++- pjlib-util/src/pjlib-util/dns_dump.c | 5 +++-- pjlib-util/src/pjlib-util/pcap.c | 8 ++++++-- pjlib-util/src/pjlib-util/resolver.c | 25 ++++++++++++++++++------- pjlib-util/src/pjlib-util/srv_resolver.c | 22 ++++++++++++++-------- pjlib-util/src/pjlib-util/stun_simple_client.c | 1 - 6 files changed, 43 insertions(+), 21 deletions(-) (limited to 'pjlib-util/src/pjlib-util') diff --git a/pjlib-util/src/pjlib-util/cli_telnet.c b/pjlib-util/src/pjlib-util/cli_telnet.c index 16baa7de..c6ce6eff 100644 --- a/pjlib-util/src/pjlib-util/cli_telnet.c +++ b/pjlib-util/src/pjlib-util/cli_telnet.c @@ -1928,7 +1928,8 @@ PJ_DEF(pj_status_t) pj_cli_telnet_get_info(pj_cli_front_end *fe, if (status != PJ_SUCCESS) return status; - pj_strcpy2(&info->ip_address, pj_inet_ntoa(hostip.ipv4.sin_addr)); + pj_sockaddr_print(&hostip, info->buf_, sizeof(info->buf_), 0); + pj_strset2(&info->ip_address, info->buf_); info->port = tfe->cfg.port; diff --git a/pjlib-util/src/pjlib-util/dns_dump.c b/pjlib-util/src/pjlib-util/dns_dump.c index fdf29318..ab9ca684 100644 --- a/pjlib-util/src/pjlib-util/dns_dump.c +++ b/pjlib-util/src/pjlib-util/dns_dump.c @@ -90,6 +90,7 @@ static void dump_answer(unsigned index, const pj_dns_parsed_rr *rr) const pj_str_t root_name = { "", 6 }; const pj_str_t *name = &rr->name; char ttl_words[32]; + char addr[PJ_INET6_ADDRSTRLEN]; if (name->slen == 0) name = &root_name; @@ -117,9 +118,9 @@ static void dump_answer(unsigned index, const pj_dns_parsed_rr *rr) rr->rdata.cname.name.ptr)); } else if (rr->type == PJ_DNS_TYPE_A) { PJ_LOG(3,(THIS_FILE, " IP address: %s", - pj_inet_ntoa(rr->rdata.a.ip_addr))); + pj_inet_ntop2(pj_AF_INET(), &rr->rdata.a.ip_addr, + addr, sizeof(addr)))); } else if (rr->type == PJ_DNS_TYPE_AAAA) { - char addr[PJ_INET6_ADDRSTRLEN]; PJ_LOG(3,(THIS_FILE, " IPv6 address: %s", pj_inet_ntop2(pj_AF_INET6(), &rr->rdata.aaaa.ip_addr, addr, sizeof(addr)))); diff --git a/pjlib-util/src/pjlib-util/pcap.c b/pjlib-util/src/pjlib-util/pcap.c index 2ddcc59b..dd961b7a 100644 --- a/pjlib-util/src/pjlib-util/pcap.c +++ b/pjlib-util/src/pjlib-util/pcap.c @@ -229,9 +229,11 @@ PJ_DEF(pj_status_t) pj_pcap_read_udp(pj_pcap_file *file, unsigned rec_incl; pj_ssize_t sz; pj_size_t sz_read = 0; + char addr[PJ_INET_ADDRSTRLEN]; pj_status_t status; TRACE_((file->obj_name, "Reading packet..")); + pj_bzero(&addr, sizeof(addr)); /* Read PCAP packet header */ sz = sizeof(tmp.rec); @@ -282,7 +284,8 @@ PJ_DEF(pj_status_t) pj_pcap_read_udp(pj_pcap_file *file, /* Skip if IP source mismatch */ if (file->filter.ip_src && tmp.ip.ip_src != file->filter.ip_src) { TRACE_((file->obj_name, "IP source %s mismatch, skipping", - pj_inet_ntoa(*(pj_in_addr*)&tmp.ip.ip_src))); + pj_inet_ntop2(pj_AF_INET(), (pj_in_addr*)&tmp.ip.ip_src, + addr, sizeof(addr)))); SKIP_PKT(); continue; } @@ -290,7 +293,8 @@ PJ_DEF(pj_status_t) pj_pcap_read_udp(pj_pcap_file *file, /* Skip if IP destination mismatch */ if (file->filter.ip_dst && tmp.ip.ip_dst != file->filter.ip_dst) { TRACE_((file->obj_name, "IP detination %s mismatch, skipping", - pj_inet_ntoa(*(pj_in_addr*)&tmp.ip.ip_dst))); + pj_inet_ntop2(pj_AF_INET(), (pj_in_addr*)&tmp.ip.ip_dst, + addr, sizeof(addr)))); SKIP_PKT(); continue; } diff --git a/pjlib-util/src/pjlib-util/resolver.c b/pjlib-util/src/pjlib-util/resolver.c index c7cd79da..6d7a5903 100644 --- a/pjlib-util/src/pjlib-util/resolver.c +++ b/pjlib-util/src/pjlib-util/resolver.c @@ -638,6 +638,7 @@ static pj_status_t transmit_query(pj_dns_resolver *resolver, /* Send the packet to name servers */ for (i=0; ins[servers[i]]; @@ -651,7 +652,8 @@ static pj_status_t transmit_query(pj_dns_resolver *resolver, "%s %d bytes to NS %d (%s:%d): DNS %s query for %s", (q->transmit_cnt==0? "Transmitting":"Re-transmitting"), (int)pkt_size, servers[i], - pj_inet_ntoa(ns->addr.sin_addr), + pj_inet_ntop2(pj_AF_INET(), &ns->addr.sin_addr, addr, + sizeof(addr)), (int)pj_ntohs(ns->addr.sin_port), pj_dns_get_type_name(q->key.qtype), q->key.name)); @@ -1034,6 +1036,7 @@ static void set_nameserver_state(pj_dns_resolver *resolver, { struct nameserver *ns = &resolver->ns[index]; enum ns_state old_state = ns->state; + char addr[PJ_INET_ADDRSTRLEN]; ns->state = state; ns->state_expiry = *now; @@ -1047,7 +1050,8 @@ static void set_nameserver_state(pj_dns_resolver *resolver, ns->state_expiry.sec += resolver->settings.bad_ns_ttl; PJ_LOG(5, (resolver->name.ptr, "Nameserver %s:%d state changed %s --> %s", - pj_inet_ntoa(ns->addr.sin_addr), + pj_inet_ntop2(pj_AF_INET(), &ns->addr.sin_addr, addr, + sizeof(addr)), (int)pj_ntohs(ns->addr.sin_port), state_names[old_state], state_names[state])); } @@ -1390,6 +1394,7 @@ static void on_read_complete(pj_ioqueue_key_t *key, pj_pool_t *pool = NULL; pj_dns_parsed_packet *dns_pkt; pj_dns_async_query *q; + char addr[PJ_INET_ADDRSTRLEN]; pj_status_t status; PJ_USE_EXCEPTION; @@ -1406,7 +1411,8 @@ static void on_read_complete(pj_ioqueue_key_t *key, pj_strerror(status, errmsg, sizeof(errmsg)); PJ_LOG(4,(resolver->name.ptr, "DNS resolver read error from %s:%d: %s", - pj_inet_ntoa(resolver->udp_src_addr.sin_addr), + pj_inet_ntop2(pj_AF_INET(), &resolver->udp_src_addr.sin_addr, + addr, sizeof(addr)), pj_ntohs(resolver->udp_src_addr.sin_port), errmsg)); @@ -1416,7 +1422,8 @@ static void on_read_complete(pj_ioqueue_key_t *key, PJ_LOG(5,(resolver->name.ptr, "Received %d bytes DNS response from %s:%d", (int)bytes_read, - pj_inet_ntoa(resolver->udp_src_addr.sin_addr), + pj_inet_ntop2(pj_AF_INET(), &resolver->udp_src_addr.sin_addr, + addr, sizeof(addr)), pj_ntohs(resolver->udp_src_addr.sin_port))); @@ -1450,7 +1457,8 @@ static void on_read_complete(pj_ioqueue_key_t *key, pj_strerror(status, errmsg, sizeof(errmsg)); PJ_LOG(3,(resolver->name.ptr, "Error parsing DNS response from %s:%d: %s", - pj_inet_ntoa(resolver->udp_src_addr.sin_addr), + pj_inet_ntop2(pj_AF_INET(), &resolver->udp_src_addr.sin_addr, + addr, sizeof(addr)), pj_ntohs(resolver->udp_src_addr.sin_port), errmsg)); goto read_next_packet; @@ -1463,7 +1471,8 @@ static void on_read_complete(pj_ioqueue_key_t *key, if (!q) { PJ_LOG(5,(resolver->name.ptr, "DNS response from %s:%d id=%d discarded", - pj_inet_ntoa(resolver->udp_src_addr.sin_addr), + pj_inet_ntop2(pj_AF_INET(), &resolver->udp_src_addr.sin_addr, + addr, sizeof(addr)), pj_ntohs(resolver->udp_src_addr.sin_port), (unsigned)dns_pkt->hdr.id)); goto read_next_packet; @@ -1633,11 +1642,13 @@ PJ_DEF(void) pj_dns_resolver_dump(pj_dns_resolver *resolver, PJ_LOG(3,(resolver->name.ptr, " Name servers:")); for (i=0; ins_count; ++i) { + char addr[PJ_INET_ADDRSTRLEN]; struct nameserver *ns = &resolver->ns[i]; PJ_LOG(3,(resolver->name.ptr, " NS %d: %s:%d (state=%s until %ds, rtt=%d ms)", - i, pj_inet_ntoa(ns->addr.sin_addr), + i, pj_inet_ntop2(pj_AF_INET(), &ns->addr.sin_addr, addr, + sizeof(addr)), pj_ntohs(ns->addr.sin_port), state_names[ns->state], ns->state_expiry.sec - now.sec, diff --git a/pjlib-util/src/pjlib-util/srv_resolver.c b/pjlib-util/src/pjlib-util/srv_resolver.c index 5eed2ac7..6e325b43 100644 --- a/pjlib-util/src/pjlib-util/srv_resolver.c +++ b/pjlib-util/src/pjlib-util/srv_resolver.c @@ -368,7 +368,9 @@ static void build_server_entries(pj_dns_srv_async_query *query_job, continue; } - if (pj_inet_aton(&query_job->srv[i].target_name, &addr) != 0) { + if (pj_inet_pton(pj_AF_INET(), &query_job->srv[i].target_name, + &addr) == PJ_SUCCESS) + { query_job->srv[i].addr[query_job->srv[i].addr_cnt++] = addr; ++query_job->host_resolved; } @@ -385,12 +387,13 @@ static void build_server_entries(pj_dns_srv_async_query *query_job, (query_job->srv_cnt ? ':' : ' '))); for (i=0; isrv_cnt; ++i) { - const char *addr; + char addr[PJ_INET_ADDRSTRLEN]; - if (query_job->srv[i].addr_cnt != 0) - addr = pj_inet_ntoa(query_job->srv[i].addr[0]); - else - addr = "-"; + if (query_job->srv[i].addr_cnt != 0) { + pj_inet_ntop(pj_AF_INET(), &query_job->srv[i].addr[0], + addr, sizeof(addr)); + } else + pj_ansi_strcpy(addr, "-"); PJ_LOG(5,(query_job->objname, " %d: SRV %d %d %d %.*s (%s)", @@ -547,6 +550,7 @@ static void dns_callback(void *user_data, /* Check that we really have answer */ if (status==PJ_SUCCESS && pkt->hdr.anscount != 0) { + char addr[PJ_INET_ADDRSTRLEN]; pj_dns_a_record rec; /* Parse response */ @@ -573,7 +577,8 @@ static void dns_callback(void *user_data, "DNS A for %.*s: %s", (int)srv->target_name.slen, srv->target_name.ptr, - pj_inet_ntoa(rec.addr[0]))); + pj_inet_ntop2(pj_AF_INET(), &rec.addr[0], + addr, sizeof(addr)))); } /* Check for multiple IP addresses */ @@ -585,7 +590,8 @@ static void dns_callback(void *user_data, "Additional DNS A for %.*s: %s", (int)srv->target_name.slen, srv->target_name.ptr, - pj_inet_ntoa(rec.addr[i]))); + pj_inet_ntop2(pj_AF_INET(), &rec.addr[i], + addr, sizeof(addr)))); } } else if (status != PJ_SUCCESS) { diff --git a/pjlib-util/src/pjlib-util/stun_simple_client.c b/pjlib-util/src/pjlib-util/stun_simple_client.c index 9ba18dfd..7c247da7 100644 --- a/pjlib-util/src/pjlib-util/stun_simple_client.c +++ b/pjlib-util/src/pjlib-util/stun_simple_client.c @@ -33,7 +33,6 @@ static int stun_timer[] = {500, 500, 500, 500 }; #define STUN_MAGIC 0x2112A442 #define THIS_FILE "stun_client.c" -#define LOG_ADDR(addr) pj_inet_ntoa(addr.sin_addr), pj_ntohs(addr.sin_port) #define TRACE_(x) PJ_LOG(6,x) -- cgit v1.2.3