summaryrefslogtreecommitdiff
path: root/pjlib/src/pj/sock_common.c
diff options
context:
space:
mode:
Diffstat (limited to 'pjlib/src/pj/sock_common.c')
-rw-r--r--pjlib/src/pj/sock_common.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/pjlib/src/pj/sock_common.c b/pjlib/src/pj/sock_common.c
index 06aa9411..1c108336 100644
--- a/pjlib/src/pj/sock_common.c
+++ b/pjlib/src/pj/sock_common.c
@@ -47,6 +47,18 @@ PJ_DEF(pj_in_addr) pj_inet_addr2(const char *cp)
}
/*
+ * Get text representation.
+ */
+PJ_DEF(char*) pj_inet_ntop2( int af, const void *src,
+ char *dst, int size)
+{
+ pj_status_t status;
+
+ status = pj_inet_ntop(af, src, dst, size);
+ return (status==PJ_SUCCESS)? dst : NULL;
+}
+
+/*
* Set the IP address of an IP socket address from string address,
* with resolving the host if necessary. The string address may be in a
* standard numbers and dots notation or may be a hostname. If hostname
@@ -253,6 +265,18 @@ PJ_DEF(unsigned) pj_sockaddr_get_addr_len(const pj_sockaddr_t *addr)
}
/*
+ * Get socket address length.
+ */
+PJ_DEF(unsigned) pj_sockaddr_get_len(const pj_sockaddr_t *addr)
+{
+ const pj_sockaddr *a = (const pj_sockaddr*) addr;
+ PJ_ASSERT_RETURN(a->addr.sa_family == PJ_AF_INET ||
+ a->addr.sa_family == PJ_AF_INET6, PJ_EAFNOTSUP);
+ return a->addr.sa_family == PJ_AF_INET6 ?
+ sizeof(pj_sockaddr_in6) : sizeof(pj_sockaddr_in);
+}
+
+/*
* Set port number of pj_sockaddr_in
*/
PJ_DEF(void) pj_sockaddr_in_set_port(pj_sockaddr_in *addr,
@@ -269,8 +293,7 @@ PJ_DEF(pj_status_t) pj_sockaddr_set_port(pj_sockaddr *addr,
{
int af = addr->addr.sa_family;
- PJ_ASSERT_ON_FAIL(af == PJ_AF_INET || af == PJ_AF_INET6,
- PJ_EINVAL);
+ PJ_ASSERT_RETURN(af==PJ_AF_INET || af==PJ_AF_INET6, PJ_EINVAL);
if (af == PJ_AF_INET6)
addr->ipv6.sin6_port = pj_htons(hostport);