From bfd4cc544c4db3bfb256353e18f2797059c794cc Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Mon, 26 May 2014 17:39:41 +0100 Subject: [PATCH] swap addr2text and text2addr --- src/addrfam.c | 76 +++++++++++++++++++++++++++++------------------------------ 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/src/addrfam.c b/src/addrfam.c index b948f53..30ee96b 100644 --- a/src/addrfam.c +++ b/src/addrfam.c @@ -213,44 +213,6 @@ const void *adns__sockaddr_to_inaddr(const struct sockaddr *sa) # define af_debug(fmt,...) ((void)("" fmt "", __VA_ARGS__)) #endif -int adns_addr2text(const struct sockaddr *sa, - char *addr_buffer, int *addr_buflen, - int *port_r) { - const void *src; - int port; - - if (*addr_buflen < ADNS_ADDR2TEXT_BUFLEN) { - *addr_buflen = ADNS_ADDR2TEXT_BUFLEN; - return ENOSPC; - } - - switch (sa->sa_family) { - AF_CASES(af); - af_inet: src= &CSIN(sa)->sin_addr; port= CSIN(sa)->sin_port; break; - af_inet6: src= &CSIN6(sa)->sin6_addr; port= CSIN6(sa)->sin6_port; break; - default: return EAFNOSUPPORT; - } - - const char *ok= inet_ntop(sa->sa_family, src, addr_buffer, *addr_buflen); - assert(ok); - - if (sa->sa_family == AF_INET6) { - uint32_t scope = CSIN6(sa)->sin6_scope_id; - if (scope) { - scope = ntohl(scope); - int scopeoffset = strlen(addr_buffer); - int remain = *addr_buflen - scopeoffset; - int r = snprintf(addr_buffer + scopeoffset, remain, - "%%%"PRIu32"", scope); - assert(r < *addr_buflen - scopeoffset); - af_debug("printed scoped address `%s'", addr_buffer); - } - } - - if (port_r) *port_r= ntohs(port); - return 0; -} - int adns_text2addr(const char *addr, uint16_t port, struct sockaddr *sa, socklen_t *salen /* set if OK or ENOSPC */) { int af; @@ -376,6 +338,44 @@ int adns_text2addr(const char *addr, uint16_t port, struct sockaddr *sa, return 0; } +int adns_addr2text(const struct sockaddr *sa, + char *addr_buffer, int *addr_buflen, + int *port_r) { + const void *src; + int port; + + if (*addr_buflen < ADNS_ADDR2TEXT_BUFLEN) { + *addr_buflen = ADNS_ADDR2TEXT_BUFLEN; + return ENOSPC; + } + + switch (sa->sa_family) { + AF_CASES(af); + af_inet: src= &CSIN(sa)->sin_addr; port= CSIN(sa)->sin_port; break; + af_inet6: src= &CSIN6(sa)->sin6_addr; port= CSIN6(sa)->sin6_port; break; + default: return EAFNOSUPPORT; + } + + const char *ok= inet_ntop(sa->sa_family, src, addr_buffer, *addr_buflen); + assert(ok); + + if (sa->sa_family == AF_INET6) { + uint32_t scope = CSIN6(sa)->sin6_scope_id; + if (scope) { + scope = ntohl(scope); + int scopeoffset = strlen(addr_buffer); + int remain = *addr_buflen - scopeoffset; + int r = snprintf(addr_buffer + scopeoffset, remain, + "%%%"PRIu32"", scope); + assert(r < *addr_buflen - scopeoffset); + af_debug("printed scoped address `%s'", addr_buffer); + } + } + + if (port_r) *port_r= ntohs(port); + return 0; +} + /* * Reverse-domain parsing and construction. */ -- 2.11.0