diff options
author | Anoop C S <anoopcs@redhat.com> | 2018-08-30 04:48:30 +0530 |
---|---|---|
committer | Andreas Schneider <asn@samba.org> | 2018-10-23 15:39:04 +0200 |
commit | 0983cd2fd88cf580f60fe0cf6b0ddcdfcd18d249 (patch) | |
tree | 0a089c9815d2dfc152924c4303b97b9c5c63407e | |
parent | 3d340c30517b90853318fe60ec239bf2bf789931 (diff) | |
download | socket_wrapper-0983cd2fd88cf580f60fe0cf6b0ddcdfcd18d249.tar.gz socket_wrapper-0983cd2fd88cf580f60fe0cf6b0ddcdfcd18d249.tar.xz socket_wrapper-0983cd2fd88cf580f60fe0cf6b0ddcdfcd18d249.zip |
tests: Avoid -Wcast-align warning
warning: cast from 'struct sockaddr *' to 'struct sockaddr_in *'
increases required alignment from 2 to 4 [-Wcast-align]
struct sockaddr_in *sinp = (struct sockaddr_in *)to; ^~~~~~~~~~~~~~~~~~~~~~~~
Above warning can be avoided by making use of sockaddr_in available
within torture_address from the caller of echo_udp_recv_from_to().
Following that sa_socklen from torture_address can be used instead of
passing sa_socklen explicitly to echo_udp_recv_from_to().
Signed-off-by: Anoop C S <anoopcs@redhat.com>
Reviewed-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
-rw-r--r-- | tests/echo_srv.c | 46 |
1 files changed, 18 insertions, 28 deletions
diff --git a/tests/echo_srv.c b/tests/echo_srv.c index 3f8b2a9..b97c375 100644 --- a/tests/echo_srv.c +++ b/tests/echo_srv.c @@ -548,8 +548,8 @@ done: static ssize_t echo_udp_recv_from_to(int sock, void *buf, size_t buflen, int flags, - struct sockaddr *from, socklen_t *fromlen, - struct sockaddr *to, socklen_t *tolen) + struct torture_address *from, + struct torture_address *to) { struct msghdr rmsg; struct iovec riov; @@ -558,9 +558,6 @@ static ssize_t echo_udp_recv_from_to(int sock, #if defined(HAVE_STRUCT_MSGHDR_MSG_CONTROL) && defined(HAVE_UNION_PKTINFO) size_t cmlen = CMSG_LEN(sizeof(union pktinfo)); char cmsg[cmlen]; -#else - (void)to; /* unused */ - (void)tolen; /* unused */ #endif /* HAVE_STRUCT_MSGHDR_MSG_CONTROL */ riov.iov_base = buf; @@ -568,8 +565,8 @@ static ssize_t echo_udp_recv_from_to(int sock, ZERO_STRUCT(rmsg); - rmsg.msg_name = from; - rmsg.msg_namelen = *fromlen; + rmsg.msg_name = &from->sa.s; + rmsg.msg_namelen = from->sa_socklen; rmsg.msg_iov = &riov; rmsg.msg_iovlen = 1; @@ -585,7 +582,7 @@ static ssize_t echo_udp_recv_from_to(int sock, if (ret < 0) { return ret; } - *fromlen = rmsg.msg_namelen; + from->sa_socklen = rmsg.msg_namelen; #if defined(HAVE_STRUCT_MSGHDR_MSG_CONTROL) && defined(HAVE_UNION_PKTINFO) if (rmsg.msg_controllen > 0) { @@ -599,17 +596,16 @@ static ssize_t echo_udp_recv_from_to(int sock, if (cmsgptr->cmsg_level == IPPROTO_IP && cmsgptr->cmsg_type == IP_PKTINFO) { char ip[INET_ADDRSTRLEN] = { 0 }; - struct sockaddr_in *sinp = (struct sockaddr_in *)to; struct in_pktinfo *pkt; void *cmsg_cast_ptr = CMSG_DATA(cmsgptr); pkt = (struct in_pktinfo *)cmsg_cast_ptr; - sinp->sin_family = AF_INET; - sinp->sin_addr = pkt->ipi_addr; - *tolen = sizeof(struct sockaddr_in); + to->sa.in.sin_family = AF_INET; + to->sa.in.sin_addr = pkt->ipi_addr; + to->sa_socklen = sizeof(struct sockaddr_in); - p = inet_ntop(AF_INET, &sinp->sin_addr, ip, sizeof(ip)); + p = inet_ntop(AF_INET, &to->sa.in.sin_addr, ip, sizeof(ip)); if (p == 0) { fprintf(stderr, "Failed to convert IP address"); abort(); @@ -625,18 +621,16 @@ static ssize_t echo_udp_recv_from_to(int sock, if (cmsgptr->cmsg_level == IPPROTO_IP && cmsgptr->cmsg_type == IP_RECVDSTADDR) { char ip[INET_ADDRSTRLEN] = { 0 }; - struct sockaddr_in *sinp = - (struct sockaddr_in *)(void *)to; struct in_addr *addr; void *cmsg_cast_ptr = CMSG_DATA(cmsgptr); addr = (struct in_addr *)cmsg_cast_ptr; - sinp->sin_family = AF_INET; - sinp->sin_addr = *addr; - *tolen = sizeof(struct sockaddr_in); + to->sa.in.sin_family = AF_INET; + to->sa.in.sin_addr = *addr; + to->sa_socklen = sizeof(struct sockaddr_in); - p = inet_ntop(AF_INET, &sinp->sin_addr, ip, sizeof(ip)); + p = inet_ntop(AF_INET, &to->sa.in.sin_addr, ip, sizeof(ip)); if (p == 0) { fprintf(stderr, "Failed to convert IP address"); abort(); @@ -653,16 +647,14 @@ static ssize_t echo_udp_recv_from_to(int sock, cmsgptr->cmsg_type == IPV6_PKTINFO) { char ip[INET6_ADDRSTRLEN] = { 0 }; struct in6_pktinfo *pkt6; - struct sockaddr_in6 *sin6p = - (struct sockaddr_in6 *)(void *)to; void *cmsg_cast_ptr = CMSG_DATA(cmsgptr); pkt6 = (struct in6_pktinfo *)cmsg_cast_ptr; - sin6p->sin6_family = AF_INET6; - sin6p->sin6_addr = pkt6->ipi6_addr; + to->sa.in6.sin6_family = AF_INET6; + to->sa.in6.sin6_addr = pkt6->ipi6_addr; - p = inet_ntop(AF_INET6, &sin6p->sin6_addr, ip, sizeof(ip)); + p = inet_ntop(AF_INET6, &to->sa.in6.sin6_addr, ip, sizeof(ip)); if (p == 0) { fprintf(stderr, "Failed to convert IP address"); abort(); @@ -802,10 +794,8 @@ static void echo_udp(int sock) buf, BUFSIZE, 0, - &saddr.sa.s, - &saddr.sa_socklen, - &daddr.sa.s, - &daddr.sa_socklen); + &saddr, + &daddr); if (bret == -1) { perror("recvfrom"); continue; |