Loading src/common/address.c +30 −0 Changes for src/common/address.c: 30 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -43,6 +43,9 @@ #ifdef HAVE_SYS_PARAM_H #include <sys/param.h> /* FreeBSD needs this to know what version it is */ #endif #ifdef HAVE_SYS_UN_H #include <sys/un.h> #endif #include <stdarg.h> #include <stdio.h> #include <stdlib.h> Loading Loading @@ -120,6 +123,33 @@ tor_addr_from_sockaddr(tor_addr_t *a, const struct sockaddr *sa, return 0; } /** Return a newly allocated string holding the address described in * <b>sa</b>. AF_UNIX, AF_UNSPEC, AF_INET, and AF_INET6 are supported. */ char * tor_sockaddr_to_str(const struct sockaddr *sa) { char address[TOR_ADDR_BUF_LEN]; char *result; tor_addr_t addr; uint16_t port; #ifdef HAVE_SYS_UN_H if (sa->sa_family == AF_UNIX) { struct sockaddr_un *s_un = (struct sockaddr_un *)sa; tor_asprintf(&result, "unix:%s", s_un->sun_path); return result; } #endif if (sa->sa_family == AF_UNSPEC) return tor_strdup("unspec"); if (tor_addr_from_sockaddr(&addr, sa, &port) < 0) return NULL; if (! tor_addr_to_str(address, &addr, sizeof(address), 1)) return NULL; tor_asprintf(&result, "%s:%d", address, (int)port); return result; } /** Set address <b>a</b> to the unspecified address. This address belongs to * no family. */ void Loading src/common/address.h +1 −0 Changes for src/common/address.h: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ socklen_t tor_addr_to_sockaddr(const tor_addr_t *a, uint16_t port, int tor_addr_from_sockaddr(tor_addr_t *a, const struct sockaddr *sa, uint16_t *port_out); void tor_addr_make_unspec(tor_addr_t *a); char *tor_sockaddr_to_str(const struct sockaddr *sa); /** Return an in6_addr* equivalent to <b>a</b>, or NULL if <b>a</b> is not * an IPv6 address. */ Loading Loading
src/common/address.c +30 −0 Changes for src/common/address.c: 30 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -43,6 +43,9 @@ #ifdef HAVE_SYS_PARAM_H #include <sys/param.h> /* FreeBSD needs this to know what version it is */ #endif #ifdef HAVE_SYS_UN_H #include <sys/un.h> #endif #include <stdarg.h> #include <stdio.h> #include <stdlib.h> Loading Loading @@ -120,6 +123,33 @@ tor_addr_from_sockaddr(tor_addr_t *a, const struct sockaddr *sa, return 0; } /** Return a newly allocated string holding the address described in * <b>sa</b>. AF_UNIX, AF_UNSPEC, AF_INET, and AF_INET6 are supported. */ char * tor_sockaddr_to_str(const struct sockaddr *sa) { char address[TOR_ADDR_BUF_LEN]; char *result; tor_addr_t addr; uint16_t port; #ifdef HAVE_SYS_UN_H if (sa->sa_family == AF_UNIX) { struct sockaddr_un *s_un = (struct sockaddr_un *)sa; tor_asprintf(&result, "unix:%s", s_un->sun_path); return result; } #endif if (sa->sa_family == AF_UNSPEC) return tor_strdup("unspec"); if (tor_addr_from_sockaddr(&addr, sa, &port) < 0) return NULL; if (! tor_addr_to_str(address, &addr, sizeof(address), 1)) return NULL; tor_asprintf(&result, "%s:%d", address, (int)port); return result; } /** Set address <b>a</b> to the unspecified address. This address belongs to * no family. */ void Loading
src/common/address.h +1 −0 Changes for src/common/address.h: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ socklen_t tor_addr_to_sockaddr(const tor_addr_t *a, uint16_t port, int tor_addr_from_sockaddr(tor_addr_t *a, const struct sockaddr *sa, uint16_t *port_out); void tor_addr_make_unspec(tor_addr_t *a); char *tor_sockaddr_to_str(const struct sockaddr *sa); /** Return an in6_addr* equivalent to <b>a</b>, or NULL if <b>a</b> is not * an IPv6 address. */ Loading