diff options
-rw-r--r-- | src/common/address.c | 7 | ||||
-rw-r--r-- | src/common/address.h | 3 | ||||
-rw-r--r-- | src/or/connection_edge.c | 4 |
3 files changed, 11 insertions, 3 deletions
diff --git a/src/common/address.c b/src/common/address.c index ac4ae041d8..978d11e914 100644 --- a/src/common/address.c +++ b/src/common/address.c @@ -635,6 +635,13 @@ tor_addr_from_ipv6_bytes(tor_addr_t *dest, const char *ipv6_bytes) memcpy(dest->addr.in6_addr.s6_addr, ipv6_bytes, 16); } +/** DOCDOC */ +void +tor_addr_from_in6(tor_addr_t *dest, const struct in6_addr *in6) +{ + tor_addr_from_ipv6_bytes(dest, (const char*)in6->s6_addr); +} + /** Copy a tor_addr_t from <b>src</b> to <b>dest</b>. */ void diff --git a/src/common/address.h b/src/common/address.h index c206bf1445..5f9e01910a 100644 --- a/src/common/address.h +++ b/src/common/address.h @@ -127,7 +127,8 @@ void tor_addr_from_ipv4n(tor_addr_t *dest, uint32_t v4addr); * order. */ #define tor_addr_from_ipv4h(dest, v4addr) \ tor_addr_from_ipv4n((dest), htonl(v4addr)) -void tor_addr_from_ipv6_bytes(tor_addr_t *dest, const char *byets); +void tor_addr_from_ipv6_bytes(tor_addr_t *dest, const char *bytes); +void tor_addr_from_in6(tor_addr_t *dest, const struct in6_addr *in6); int tor_addr_is_null(const tor_addr_t *addr); int tor_addr_is_loopback(const tor_addr_t *addr); diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 9449e2116b..197fccc2ba 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -1762,13 +1762,13 @@ connection_ap_get_original_destination(edge_connection_t *conn, if (pnl.af == AF_INET) { tor_addr_from_ipv4n(&addr, pnl.rdaddr.v4.s_addr); } else if (pnl.af == AF_INET6) { - tor_addr_from_ipv6_bytes(&addr, pnl.rdaddr.v6.s6_addr); + tor_addr_from_in6(&addr, &pnl.rdaddr.v6); } else { tor_fragile_assert(); return -1; } - tor_addr_to_string(req->address, &addr, sizeof(req->address), 0); + tor_addr_to_str(req->address, &addr, sizeof(req->address), 0); req->port = ntohs(pnl.rdport); return 0; |