aboutsummaryrefslogtreecommitdiff
path: root/src/common/address.h
diff options
context:
space:
mode:
authorteor (Tim Wilson-Brown) <teor2345@gmail.com>2016-01-29 07:37:06 +1100
committerteor (Tim Wilson-Brown) <teor2345@gmail.com>2016-01-29 07:37:06 +1100
commitc4cb4706c9bb1087584c9813b0ca97c261e6fd77 (patch)
treea49ffc5b86a9412f2992c5966c550e5bedfc60f6 /src/common/address.h
parent42dea56363c24960e85344749644f6502f625463 (diff)
parent73fc67bc8906819a42ed44abe33179512f90a883 (diff)
downloadtor-c4cb4706c9bb1087584c9813b0ca97c261e6fd77.tar.gz
tor-c4cb4706c9bb1087584c9813b0ca97c261e6fd77.zip
Merge branch 'feature17840-v11-squashed' into feature17840-v11-merged
Conflicts: src/or/directory.c src/test/test_routerlist.c Fix minor conflicts.
Diffstat (limited to 'src/common/address.h')
-rw-r--r--src/common/address.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/common/address.h b/src/common/address.h
index 76090136d8..558eb52b35 100644
--- a/src/common/address.h
+++ b/src/common/address.h
@@ -267,6 +267,27 @@ 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);
+int tor_addr_is_valid(const tor_addr_t *addr, int for_listening);
+int tor_addr_is_valid_ipv4n(uint32_t v4n_addr, int for_listening);
+#define tor_addr_is_valid_ipv4h(v4h_addr, for_listening) \
+ tor_addr_is_valid_ipv4n(htonl(v4h_addr), (for_listening))
+int tor_port_is_valid(uint16_t port, int for_listening);
+/* Are addr and port both valid? */
+#define tor_addr_port_is_valid(addr, port, for_listening) \
+ (tor_addr_is_valid((addr), (for_listening)) && \
+ tor_port_is_valid((port), (for_listening)))
+/* Are ap->addr and ap->port both valid? */
+#define tor_addr_port_is_valid_ap(ap, for_listening) \
+ tor_addr_port_is_valid(&(ap)->addr, (ap)->port, (for_listening))
+/* Are the network-order v4addr and port both valid? */
+#define tor_addr_port_is_valid_ipv4n(v4n_addr, port, for_listening) \
+ (tor_addr_is_valid_ipv4n((v4n_addr), (for_listening)) && \
+ tor_port_is_valid((port), (for_listening)))
+/* Are the host-order v4addr and port both valid? */
+#define tor_addr_port_is_valid_ipv4h(v4h_addr, port, for_listening) \
+ (tor_addr_is_valid_ipv4h((v4h_addr), (for_listening)) && \
+ tor_port_is_valid((port), (for_listening)))
+
int tor_addr_port_split(int severity, const char *addrport,
char **address_out, uint16_t *port_out);