summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/echo_srv.c46
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;