chiark / gitweb /
swap addr2text and text2addr
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 26 May 2014 16:39:41 +0000 (17:39 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 26 May 2014 16:39:41 +0000 (17:39 +0100)
src/addrfam.c

index b948f5374c42766973064799efcab3021375e345..30ee96bab56c33c340d0645145db5cf9ff48be4d 100644 (file)
@@ -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.
  */