From f7296885ea86be9557608e8397983b06da1d7db0 Mon Sep 17 00:00:00 2001 From: Georg Hopp Date: Sat, 2 Aug 2014 00:59:38 +0100 Subject: [PATCH] fix makros for access to addrinfo structure. --- include/tr/socket.h | 44 +++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/include/tr/socket.h b/include/tr/socket.h index 65c0d79..de69b7d 100644 --- a/include/tr/socket.h +++ b/include/tr/socket.h @@ -74,10 +74,7 @@ TR_INSTANCE_INIT(TR_Socket); #define TR_socketPort(socket) (((TR_Socket)(socket))->port) #define TR_socketCname(socket) (((TR_Socket)(socket))->cname) #define TR_socketTtl(socket) (((TR_Socket)(socket))->ttl) - -#define TR_socketAddr(socket) \ - ((unsigned char *)&((TR_Socket)(socket))->addr) - +#define TR_socketAddr(socket) ((void *)&((TR_Socket)(socket))->addr) #define TR_socketAddrlen(socket) (((TR_Socket)(socket))->addrlen) #define TR_socketHandle(socket) (((TR_Socket)(socket))->handle) #define TR_socketFinState(socket) (((TR_Socket)(socket))->fin_state) @@ -86,31 +83,32 @@ TR_INSTANCE_INIT(TR_Socket); #define TR_socketFinRdWr(socket) ((TR_socketFinState((socket)) & 3) == 3) #define TR_socketAddrPort(socket) \ - (((TR_Socket)(socket))->addr.info.sa_family == AF_INET \ + (((TR_Socket)(socket))->addr.info.sa_family == AF_INET \ ? ((TR_Socket)(socket))->addr.in.sin_port \ : ((TR_Socket)(socket))->addr.info.sa_family == AF_INET6 \ ? ((TR_Socket)(socket))->addr.in6.sin6_port \ - : -1) + : 0) -#define TR_socketAddrIp(socket) \ - (((TR_Socket)(socket))->addr.info.sa_family == AF_INET \ - ? ((TR_Socket)(socket))->addr.in.sin_addr.s_addr \ - : ((TR_Socket)(socket))->addr.info.sa_family == AF_INET6 \ - ? ((TR_Socket)(socket))->addr.in6.sin6_addr.s6_addr \ +#define TR_socketAddrIp(socket) \ + (((TR_Socket)(socket))->addr.info.sa_family == AF_INET \ + ? (void *)&((TR_Socket)(socket))->addr.in.sin_addr.s_addr \ + : ((TR_Socket)(socket))->addr.info.sa_family == AF_INET6 \ + ? (void *)&((TR_Socket)(socket))->addr.in6.sin6_addr.s6_addr \ : NULL) -#define TR_socketAddrIpStr(socket, buffer, nbuffer) \ - (((TR_Socket)(socket))->addr.info.sa_family == AF_INET \ - ? inet_ntop( \ - ((TR_Socket)(socket))->addr.info.sa_family, \ - &((TR_Socket)(socket))->addr.in.sin_addr.s_addr, \ - buffer, nbuffer) \ - : ((TR_Socket)(socket))->addr.info.sa_family == AF_INET6 \ - ? inet_ntop( \ - ((TR_Socket)(socket))->addr.info.sa_family, \ - ((TR_Socket)(socket))->addr.in6.sin6_addr.s6_addr, \ - buffer, nbuffer) \ - : NULL) +#define TR_socketAddrIplen(socket) \ + (((TR_Socket)(socket))->addr.info.sa_family == AF_INET \ + ? sizeof(((TR_Socket)(socket))->addr.in.sin_addr) \ + : ((TR_Socket)(socket))->addr.info.sa_family == AF_INET6 \ + ? sizeof(((TR_Socket)(socket))->addr.in6.sin6_addr) \ + : 0) + +#define TR_socketAddrIpStr(socket, buffer, nbuffer) \ + if (TR_socketAddrIp((socket))) \ + inet_ntop( \ + ((TR_Socket)(socket))->addr.info.sa_family, \ + TR_socketAddrIp((socket)), \ + buffer, nbuffer) TR_CLASS(TR_TcpSocket) { TR_EXTENDS(TR_Socket);