X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fsessiond-comm%2Fsessiond-comm.c;h=0067be1636ecca662e52e5eb569adfbd0cd5fa98;hp=336902a60f597d6c7820f34032f29d6a77b8396f;hb=2288467f63826a06d25ac361fa04ea92ec7ddfa3;hpb=79445cf0e236eb0f9c08ed535f719994b68632aa diff --git a/src/common/sessiond-comm/sessiond-comm.c b/src/common/sessiond-comm/sessiond-comm.c index 336902a60..0067be163 100644 --- a/src/common/sessiond-comm/sessiond-comm.c +++ b/src/common/sessiond-comm/sessiond-comm.c @@ -26,6 +26,7 @@ #include #include #include +#include #include @@ -413,6 +414,53 @@ int lttcomm_setsockopt_snd_timeout(int sock, unsigned int msec) return ret; } +LTTNG_HIDDEN +int lttcomm_sock_get_port(const struct lttcomm_sock *sock, uint16_t *port) +{ + assert(sock); + assert(port); + assert(sock->sockaddr.type == LTTCOMM_INET || + sock->sockaddr.type == LTTCOMM_INET6); + assert(sock->proto == LTTCOMM_SOCK_TCP || + sock->proto == LTTCOMM_SOCK_UDP); + + switch (sock->sockaddr.type) { + case LTTCOMM_INET: + *port = ntohs(sock->sockaddr.addr.sin.sin_port); + break; + case LTTCOMM_INET6: + *port = ntohs(sock->sockaddr.addr.sin6.sin6_port); + break; + default: + abort(); + } + + return 0; +} + +LTTNG_HIDDEN +int lttcomm_sock_set_port(struct lttcomm_sock *sock, uint16_t port) +{ + assert(sock); + assert(sock->sockaddr.type == LTTCOMM_INET || + sock->sockaddr.type == LTTCOMM_INET6); + assert(sock->proto == LTTCOMM_SOCK_TCP || + sock->proto == LTTCOMM_SOCK_UDP); + + switch (sock->sockaddr.type) { + case LTTCOMM_INET: + sock->sockaddr.addr.sin.sin_port = htons(port); + break; + case LTTCOMM_INET6: + sock->sockaddr.addr.sin6.sin6_port = htons(port); + break; + default: + abort(); + } + + return 0; +} + LTTNG_HIDDEN void lttcomm_init(void) {