summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Fifield <david@bamsoftware.com>2012-10-04 19:43:44 -0700
committerNick Mathewson <nickm@torproject.org>2012-10-10 22:25:30 -0400
commit78e2d8c7a85c8ec2defe5d1873ae19ba9b82b14c (patch)
tree49f1497429a9a4658ce537e7f8ecc85c5023d0f3
parent4b0a039cb83f1780a8532a46b2529ff0a580c902 (diff)
downloadtor-78e2d8c7a85c8ec2defe5d1873ae19ba9b82b14c.tar.gz
tor-78e2d8c7a85c8ec2defe5d1873ae19ba9b82b14c.zip
Add fmt_addrport.
This function formats an addr:port pair, and always decorates IPv6 addresses.
-rw-r--r--src/common/address.c13
-rw-r--r--src/common/address.h1
2 files changed, 14 insertions, 0 deletions
diff --git a/src/common/address.c b/src/common/address.c
index dffbcaff44..9a61872af3 100644
--- a/src/common/address.c
+++ b/src/common/address.c
@@ -1006,6 +1006,19 @@ fmt_addr_impl(const tor_addr_t *addr, int decorate)
return "???";
}
+/** Return a string representing the pair <b>addr</b> and <b>port</b>.
+ * This calls fmt_and_decorate_addr internally, so IPv6 addresses will
+ * have brackets, and the caveats of fmt_addr_impl apply.
+ */
+const char *
+fmt_addrport(const tor_addr_t *addr, uint16_t port)
+{
+ /* Add space for a colon and up to 5 digits. */
+ static char buf[TOR_ADDR_BUF_LEN + 6];
+ tor_snprintf(buf, sizeof(buf), "%s:%u", fmt_and_decorate_addr(addr), port);
+ return buf;
+}
+
/** Like fmt_addr(), but takes <b>addr</b> as a host-order IPv4
* addresses. Also not thread-safe, also clobbers its return buffer on
* repeated calls. */
diff --git a/src/common/address.h b/src/common/address.h
index 7a779d8880..68775fb291 100644
--- a/src/common/address.h
+++ b/src/common/address.h
@@ -145,6 +145,7 @@ char *tor_dup_addr(const tor_addr_t *addr) ATTR_MALLOC;
* addresses. */
#define fmt_and_decorate_addr(a) fmt_addr_impl((a), 1)
const char *fmt_addr_impl(const tor_addr_t *addr, int decorate);
+const char *fmt_addrport(const tor_addr_t *addr, uint16_t port);
const char * fmt_addr32(uint32_t addr);
int get_interface_address6(int severity, sa_family_t family, tor_addr_t *addr);