\return the ip adress string
*/
SWITCH_DECLARE(char *) get_addr(char *buf, switch_size_t len, struct sockaddr *sa, socklen_t salen);
+SWITCH_DECLARE(char *) get_addr6(char *buf, switch_size_t len, struct sockaddr_in6 *sa, socklen_t salen);
SWITCH_DECLARE(int) get_addr_int(switch_sockaddr_t *sa);
SWITCH_DECLARE(int) switch_cmp_addr(switch_sockaddr_t *sa1, switch_sockaddr_t *sa2);
SWITCH_DECLARE(const char *) switch_get_addr(char *buf, switch_size_t len, switch_sockaddr_t *in)
{
if (!in) {
- return "";
+ return SWITCH_BLANK_STRING;
}
- return get_addr(buf, len, (struct sockaddr *) &in->sa, in->salen);
+
+ if (in->family == AF_INET) {
+ return get_addr(buf, len, (struct sockaddr *) &in->sa, in->salen);
+ }
+
+ return get_addr6(buf, len, (struct sockaddr_in6 *) &in->sa, in->salen);
}
SWITCH_DECLARE(uint16_t) switch_sockaddr_get_port(switch_sockaddr_t *sa)
return 0;
}
+SWITCH_DECLARE(char *) get_addr6(char *buf, switch_size_t len, struct sockaddr_in6 *sa, socklen_t salen)
+{
+ switch_assert(buf);
+ *buf = '\0';
+
+ if (sa) {
+ inet_ntop(AF_INET6, sa, buf, len);
+ }
+
+ return buf;
+}
SWITCH_DECLARE(char *) get_addr(char *buf, switch_size_t len, struct sockaddr *sa, socklen_t salen)
{