[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [torsocks/master] utils: Add useful function for later use
commit 98e84212f96bcda222e61dd8ad7bce98f08717c1
Author: David Goulet <dgoulet@xxxxxxxxx>
Date: Fri Feb 24 12:33:32 2017 -0500
utils: Add useful function for later use
Signed-off-by: David Goulet <dgoulet@xxxxxxxxx>
---
src/common/utils.c | 28 ++++++++++++++++++++++++++++
src/common/utils.h | 7 ++++---
2 files changed, 32 insertions(+), 3 deletions(-)
diff --git a/src/common/utils.c b/src/common/utils.c
index 8fe9c6e..f02b1b4 100644
--- a/src/common/utils.c
+++ b/src/common/utils.c
@@ -366,3 +366,31 @@ int utils_get_port_from_addr(const struct sockaddr *sa)
return port;
}
+
+/*
+ * For a given sockaddr, return a const pointer to the address data structure.
+ * Return NULL if family is not IPv4 or IPv6.
+ */
+ATTR_HIDDEN
+const char *utils_get_addr_from_sockaddr(const struct sockaddr *sa)
+{
+ static char buf[256];
+ const void *addrp;
+
+ assert(sa);
+
+ memset(buf, 0, sizeof(buf));
+
+ if (sa->sa_family == AF_INET) {
+ addrp = &((const struct sockaddr_in *) sa)->sin_addr;
+ } else if (sa->sa_family == AF_INET6) {
+ addrp = &((const struct sockaddr_in6 *) sa)->sin6_addr;
+ } else {
+ goto end;
+ }
+
+ inet_ntop(sa->sa_family, addrp, buf, sizeof(buf));
+
+end:
+ return buf;
+}
diff --git a/src/common/utils.h b/src/common/utils.h
index 83ea825..74f4f5e 100644
--- a/src/common/utils.h
+++ b/src/common/utils.h
@@ -1,7 +1,7 @@
/*
- * Copyright (C) 2000-2008 - Shaun Clowes <delius@xxxxxxxxxxx>
- * 2008-2011 - Robert Hogan <robert@xxxxxxxxxxxxxxx>
- * 2013 - David Goulet <dgoulet@xxxxxxxxx>
+ * Copyright (C) 2000-2008 - Shaun Clowes <delius@xxxxxxxxxxx>
+ * 2008-2011 - Robert Hogan <robert@xxxxxxxxxxxxxxx>
+ * 2013 - David Goulet <dgoulet@xxxxxxxxx>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License, version 2 only, as
@@ -34,5 +34,6 @@ int utils_sockaddr_is_localhost(const struct sockaddr *sa);
int utils_localhost_resolve(const char *name, int af, void *buf, size_t len);
int utils_is_addr_any(const struct sockaddr *sa);
int utils_get_port_from_addr(const struct sockaddr *sa);
+const char *utils_get_addr_from_sockaddr(const struct sockaddr *sa);
#endif /* TORSOCKS_UTILS_H */
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits