From: Dmitry V. Levin Date: Sun, 26 Jun 2016 23:57:39 +0000 (+0000) Subject: net.c: print struct msghdr as a regular structure X-Git-Tag: v4.13~91 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=26f90afc686afcf01807e75515541085081f670b;p=strace net.c: print struct msghdr as a regular structure * net.c (print_msghdr): Print msg_name, msg_namelen, msg_iov, and msg_iovlen fields like other regular fields. * tests/inet-cmsg.c (main): Update expected output. * tests/mmsg.c (main): Likewise. * tests/recvmsg.c (main): Likewise. * tests/scm_rights-fd.test: Likewise. --- diff --git a/net.c b/net.c index 5c0d8219..c5ecf123 100644 --- a/net.c +++ b/net.c @@ -408,13 +408,14 @@ decode_msg_control(struct tcb *tcp, unsigned long addr, size_t len) static void print_msghdr(struct tcb *tcp, struct msghdr *msg, unsigned long data_size) { - tprintf("{msg_name(%d)=", msg->msg_namelen); + tprints("{msg_name="); decode_sockaddr(tcp, (long)msg->msg_name, msg->msg_namelen); + tprintf(", msg_namelen=%d", msg->msg_namelen); - tprintf(", msg_iov(%lu)=", (unsigned long)msg->msg_iovlen); - - tprint_iov_upto(tcp, (unsigned long)msg->msg_iovlen, - (unsigned long)msg->msg_iov, IOV_DECODE_STR, data_size); + tprints(", msg_iov="); + tprint_iov_upto(tcp, (unsigned long) msg->msg_iovlen, + (unsigned long) msg->msg_iov, IOV_DECODE_STR, data_size); + tprintf(", msg_iovlen=%lu", (unsigned long) msg->msg_iovlen); decode_msg_control(tcp, (unsigned long) msg->msg_control, msg->msg_controllen); diff --git a/tests/inet-cmsg.c b/tests/inet-cmsg.c index d15eb64d..b7207a3d 100644 --- a/tests/inet-cmsg.c +++ b/tests/inet-cmsg.c @@ -145,10 +145,10 @@ main(void) assert(recvmsg(0, &mh, 0) == (int) size); assert(!close(0)); - printf("recvmsg(0, {msg_name(%u)={sa_family=AF_INET, sin_port=htons(%u)" - ", sin_addr=inet_addr(\"127.0.0.1\")}, msg_iov(1)=[{\"%s\", %u}]" - ", msg_control=[", - (unsigned) mh.msg_namelen, ntohs(addr.sin_port), + printf("recvmsg(0, {msg_name={sa_family=AF_INET, sin_port=htons(%u)" + ", sin_addr=inet_addr(\"127.0.0.1\")}, msg_namelen=%u" + ", msg_iov=[{\"%s\", %u}], msg_iovlen=1, msg_control=[", + ntohs(addr.sin_port), (unsigned) mh.msg_namelen, data, (unsigned) size); struct cmsghdr *c; diff --git a/tests/mmsg.c b/tests/mmsg.c index 1e0d37d7..85e61d5c 100644 --- a/tests/mmsg.c +++ b/tests/mmsg.c @@ -145,9 +145,11 @@ main(void) perror_msg_and_skip("sendmmsg"); assert(r == (int) n_w_mmh); assert(close(1) == 0); - tprintf("sendmmsg(1, {{{msg_name(0)=NULL, msg_iov(%u)=[{\"%s\", %u}" - ", {\"%s\", %u}], msg_controllen=0, msg_flags=0}, %u}" - ", {{msg_name(0)=NULL, msg_iov(%u)=[{\"%s\", %u}]" + tprintf("sendmmsg(1, {{{msg_name=NULL, msg_namelen=0" + ", msg_iov=[{\"%s\", %u}, {\"%s\", %u}], msg_iovlen=%u" + ", msg_controllen=0, msg_flags=0}, %u}" + ", {{msg_name=NULL, msg_namelen=0" + ", msg_iov=[{\"%s\", %u}], msg_iovlen=%u" ", msg_controllen=0, msg_flags=0}, %u}}, %u" ", MSG_DONTROUTE|MSG_NOSIGNAL) = %d\n" " = %u buffers in vector 0\n" @@ -158,10 +160,12 @@ main(void) " = %u buffers in vector 1\n" " * %u bytes in buffer 0\n" " | 00000 %-49s %-16s |\n", - ARRAY_SIZE(w0_iov_), w0_c, LENGTH_OF(w0_c), + w0_c, LENGTH_OF(w0_c), w1_c, LENGTH_OF(w1_c), + ARRAY_SIZE(w0_iov_), LENGTH_OF(w0_c) + LENGTH_OF(w1_c), - ARRAY_SIZE(w1_iov_), w2_c, LENGTH_OF(w2_c), LENGTH_OF(w2_c), + w2_c, LENGTH_OF(w2_c), ARRAY_SIZE(w1_iov_), + LENGTH_OF(w2_c), n_w_mmh, r, ARRAY_SIZE(w0_iov_), LENGTH_OF(w0_c), w0_d, w0_c, LENGTH_OF(w1_c), w1_d, w1_c, @@ -215,9 +219,11 @@ main(void) assert(recv_mmsg(0, r_mmh, n_r_mmh, MSG_DONTWAIT, NULL) == (int) n_r_mmh); assert(close(0) == 0); - tprintf("recvmmsg(0, {{{msg_name(0)=NULL, msg_iov(%u)=[{\"%s\", %u}]" + tprintf("recvmmsg(0, {{{msg_name=NULL, msg_namelen=0" + ", msg_iov=[{\"%s\", %u}], msg_iovlen=%u" ", msg_controllen=0, msg_flags=0}, %u}" - ", {{msg_name(0)=NULL, msg_iov(%u)=[{\"%s\", %u}, {\"\", %u}]" + ", {{msg_name=NULL, msg_namelen=0" + ", msg_iov=[{\"%s\", %u}, {\"\", %u}], msg_iovlen=%u" ", msg_controllen=0, msg_flags=0}, %u}}, %u" ", MSG_DONTWAIT, NULL) = %d (left NULL)\n" " = %u buffers in vector 0\n" @@ -226,8 +232,8 @@ main(void) " = %u buffers in vector 1\n" " * %u bytes in buffer 0\n" " | 00000 %-49s %-16s |\n", - ARRAY_SIZE(r0_iov_), r0_c, r_len, LENGTH_OF(r0_c), - ARRAY_SIZE(r1_iov_), r1_c, r_len, r_len, LENGTH_OF(r1_c), + r0_c, r_len, ARRAY_SIZE(r0_iov_), LENGTH_OF(r0_c), + r1_c, r_len, r_len, ARRAY_SIZE(r1_iov_), LENGTH_OF(r1_c), n_r_mmh, r, ARRAY_SIZE(r0_iov_), LENGTH_OF(r0_c), r0_d, r0_c, ARRAY_SIZE(r1_iov_), LENGTH_OF(r1_c), r1_d, r1_c); diff --git a/tests/recvmsg.c b/tests/recvmsg.c index f0f8fa33..d34614ee 100644 --- a/tests/recvmsg.c +++ b/tests/recvmsg.c @@ -87,8 +87,8 @@ main(void) assert(sendmsg(1, w_mh, 0) == (int) w_len); close(1); - tprintf("sendmsg(1, {msg_name(0)=NULL, msg_iov(%u)=" - "[{\"%s\", %u}, {\"%s\", %u}, {\"%s\", %u}]" + tprintf("sendmsg(1, {msg_name=NULL, msg_namelen=0, msg_iov=" + "[{\"%s\", %u}, {\"%s\", %u}, {\"%s\", %u}], msg_iovlen=%u" ", msg_controllen=0, msg_flags=0}, 0) = %u\n" " * %u bytes in buffer 0\n" " | 00000 %-49s %-16s |\n" @@ -96,9 +96,12 @@ main(void) " | 00000 %-49s %-16s |\n" " * %u bytes in buffer 2\n" " | 00000 %-49s %-16s |\n", - ARRAY_SIZE(w_iov_), w0_c, LENGTH_OF(w0_c), - w1_c, LENGTH_OF(w1_c), w2_c, LENGTH_OF(w2_c), w_len, - LENGTH_OF(w0_c), w0_d, w0_c, LENGTH_OF(w1_c), w1_d, w1_c, + w0_c, LENGTH_OF(w0_c), + w1_c, LENGTH_OF(w1_c), + w2_c, LENGTH_OF(w2_c), + ARRAY_SIZE(w_iov_), w_len, + LENGTH_OF(w0_c), w0_d, w0_c, + LENGTH_OF(w1_c), w1_d, w1_c, LENGTH_OF(w2_c), w2_d, w2_c); const unsigned int r_len = (w_len + 1) / 2; @@ -118,11 +121,12 @@ main(void) struct msghdr *r_mh = tail_memdup(&r_mh_, sizeof(r_mh_)); assert(recvmsg(0, r_mh, 0) == (int) r_len); - tprintf("recvmsg(0, {msg_name(0)=NULL, msg_iov(%u)=" - "[{\"%s\", %u}], msg_controllen=0, msg_flags=0}, 0) = %u\n" + tprintf("recvmsg(0, {msg_name=NULL, msg_namelen=0, msg_iov=" + "[{\"%s\", %u}], msg_iovlen=%u, msg_controllen=0" + ", msg_flags=0}, 0) = %u\n" " * %u bytes in buffer 0\n" " | 00000 %-49s %-16s |\n", - ARRAY_SIZE(r0_iov_), r0_c, r_len, r_len, r_len, r0_d, r0_c); + r0_c, r_len, ARRAY_SIZE(r0_iov_), r_len, r_len, r0_d, r0_c); void *r1 = tail_alloc(r_len); void *r2 = tail_alloc(w_len); @@ -141,12 +145,12 @@ main(void) r_mh->msg_iovlen = ARRAY_SIZE(r1_iov_); assert(recvmsg(0, r_mh, 0) == (int) w_len - r_len); - tprintf("recvmsg(0, {msg_name(0)=NULL, msg_iov(%u)=" - "[{\"%s\", %u}, {\"\", %u}], msg_controllen=0" + tprintf("recvmsg(0, {msg_name=NULL, msg_namelen=0, msg_iov=" + "[{\"%s\", %u}, {\"\", %u}], msg_iovlen=%u, msg_controllen=0" ", msg_flags=0}, 0) = %u\n" " * %u bytes in buffer 0\n" " | 00000 %-49s %-16s |\n", - ARRAY_SIZE(r1_iov_), r1_c, r_len, w_len, w_len - r_len, + r1_c, r_len, w_len, ARRAY_SIZE(r1_iov_), w_len - r_len, w_len - r_len, r1_d, r1_c); close(0); diff --git a/tests/scm_rights-fd.test b/tests/scm_rights-fd.test index 1277d1d2..2d92cb86 100755 --- a/tests/scm_rights-fd.test +++ b/tests/scm_rights-fd.test @@ -61,7 +61,7 @@ rights_data='\[4, 5, 6<'"$path6"'>\]' iov='\[\{"'"$sample"'", 15\}\]' ids='\{pid='"$n"', uid=[0-9]+, gid=[0-9]+\}' -msg_head='\{msg_name\(0\)=NULL, msg_iov\(1\)='"$iov"', msg_control=' +msg_head='\{msg_name=NULL, msg_namelen=0, msg_iov='"$iov"', msg_iovlen=1, msg_control=' msg_tail=', msg_controllen='"$n"', msg_flags=0' rights='\{cmsg_len='"$n"', cmsg_level=SOL_SOCKET, cmsg_type=SCM_RIGHTS, '"$rights_data"'\}' creds='\{cmsg_len='"$n"', cmsg_level=SOL_SOCKET, cmsg_type=SCM_CREDENTIALS, '"$ids"'\}'