From: Dmitry V. Levin Date: Sun, 2 Aug 2015 01:41:26 +0000 (+0000) Subject: socket: mark return code with RVAL_FD flag X-Git-Tag: v4.11~290 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3d463be47e84896366a86d156cbf1466f69a9811;p=strace socket: mark return code with RVAL_FD flag * net.c (sys_socket): Set RVAL_FD flag in the return code. * tests/net-yy-accept.awk: Update socket and bind regexps. * tests/unix-yy-accept.awk: Likewise. * tests/net-yy-connect.awk: Update socket and connect regexps. * tests/unix-yy-connect.awk: Likewise. --- diff --git a/net.c b/net.c index 3306cbbb..6b6f0424 100644 --- a/net.c +++ b/net.c @@ -662,7 +662,7 @@ SYS_FUNC(socket) break; } - return RVAL_DECODED; + return RVAL_DECODED | RVAL_FD; } SYS_FUNC(bind) diff --git a/tests/net-yy-accept.awk b/tests/net-yy-accept.awk index 35432772..1cf63b04 100644 --- a/tests/net-yy-accept.awk +++ b/tests/net-yy-accept.awk @@ -5,20 +5,21 @@ BEGIN { r_i = "[1-9][0-9]*" r_port = "[1-9][0-9][0-9][0-9]+" r_localhost = "127\\.0\\.0\\.1" - r_bind = "^bind\\(0, \\{sa_family=AF_INET, sin_port=htons\\(0\\), sin_addr=inet_addr\\(\"" r_localhost "\"\\)\\}, " r_i "\\) += 0$" + r_socket = "^socket\\(PF_INET, SOCK_STREAM, IPPROTO_IP\\) += 0$" r_getsockname = "^getsockname\\(0, \\{sa_family=AF_INET, sin_port=htons\\((" r_port ")\\), sin_addr=inet_addr\\(\"" r_localhost "\"\\)\\}, \\[" r_i "\\]\\) += 0$" } -NR == 1 && /^socket\(PF_INET, SOCK_STREAM, IPPROTO_IP\) += 0$/ {next} - -NR == 2 { - if (match($0, r_bind, a)) { +NR == 1 { + if (match($0, r_socket, a)) { inode = a[1] + r_bind = "^bind\\(0, \\{sa_family=AF_INET, sin_port=htons\\(0\\), sin_addr=inet_addr\\(\"" r_localhost "\"\\)\\}, " r_i "\\) += 0$" r_listen = "^listen\\(0, 5\\) += 0$" next } } +NR == 2 {if (r_bind != "" && match($0, r_bind)) next} + NR == 3 {if (r_listen != "" && match($0, r_listen)) next} NR == 4 { diff --git a/tests/net-yy-connect.awk b/tests/net-yy-connect.awk index 67613666..79e9ee08 100644 --- a/tests/net-yy-connect.awk +++ b/tests/net-yy-connect.awk @@ -5,13 +5,19 @@ BEGIN { r_i = "[1-9][0-9]*" r_port = "[1-9][0-9][0-9][0-9]+" r_localhost = "127\\.0\\.0\\.1" - r_connect = "^connect\\(0, \\{sa_family=AF_INET, sin_port=htons\\((" r_port ")\\), sin_addr=inet_addr\\(\"" r_localhost "\"\\)\\}, " r_i ") += 0$" + r_socket = "^socket\\(PF_INET, SOCK_STREAM, IPPROTO_IP\\) += 0$" } -NR == 1 && /^socket\(PF_INET, SOCK_STREAM, IPPROTO_IP\) += 0$/ {next} +NR == 1 { + if (match($0, r_socket, a)) { + inode = a[1] + r_connect = "^connect\\(0, \\{sa_family=AF_INET, sin_port=htons\\((" r_port ")\\), sin_addr=inet_addr\\(\"" r_localhost "\"\\)\\}, " r_i ") += 0$" + next + } +} NR == 2 { - if (match($0, r_connect, a)) { + if (r_connect != "" && match($0, r_connect, a)) { port_r = a[1] r_send = "^send\\(0" r_localhost ":" port_r "\\]>, \"data\", 4, MSG_DONTROUTE\\) += 4$" r_sendto = "^sendto\\(0" r_localhost ":" port_r "\\]>, \"data\", 4, MSG_DONTROUTE, NULL, 0\\) += 4$" diff --git a/tests/unix-yy-accept.awk b/tests/unix-yy-accept.awk index 304c0229..4f34f51a 100644 --- a/tests/unix-yy-accept.awk +++ b/tests/unix-yy-accept.awk @@ -4,14 +4,13 @@ BEGIN { addrlen = length(addr) + 3 r_i = "[1-9][0-9]*" - r_bind = "^bind\\(0, \\{sa_family=AF_(LOCAL|UNIX|FILE), sun_path=\"" addr "\"\\}, " addrlen "\\) += 0$" + r_socket = "^socket\\(PF_(LOCAL|UNIX|FILE), SOCK_STREAM, 0\\) += 0$" } -NR == 1 && /^socket\(PF_(LOCAL|UNIX|FILE), SOCK_STREAM, 0\) += 0$/ {next} - -NR == 2 { - if (match($0, r_bind, a)) { - inode_listen = a[1] +NR == 1 { + if (match($0, r_socket, a)) { + inode_listen = a[2] + r_bind = "^bind\\(0, \\{sa_family=AF_(LOCAL|UNIX|FILE), sun_path=\"" addr "\"\\}, " addrlen "\\) += 0$" r_listen = "^listen\\(0, 5\\) += 0$" r_getsockname = "^getsockname\\(0, \\{sa_family=AF_(LOCAL|UNIX|FILE), sun_path=\"" addr "\"\\}, \\[" addrlen "\\]\\) += 0$" r_accept = "^accept\\(0, \\{sa_family=AF_(LOCAL|UNIX|FILE), NULL\\}, \\[2\\]\\) += 1(" r_i "),\"" addr "\"\\]>" @@ -19,6 +18,8 @@ NR == 2 { } } +NR == 2 {if (r_bind != "" && match($0, r_bind)) next} + NR == 3 {if (r_listen != "" && match($0, r_listen)) next} NR == 4 {if (r_getsockname != "" && match($0, r_getsockname)) next} diff --git a/tests/unix-yy-connect.awk b/tests/unix-yy-connect.awk index 4641d783..b5bb901e 100644 --- a/tests/unix-yy-connect.awk +++ b/tests/unix-yy-connect.awk @@ -4,17 +4,22 @@ BEGIN { addrlen = length(addr) + 3 r_i = "[1-9][0-9]*" + r_socket = "^socket\\(PF_(LOCAL|UNIX|FILE), SOCK_STREAM, 0\\) += 1$" r_close_listen = "^close\\(0\\) += 0$" - r_connect = "^connect\\(1, \\{sa_family=AF_(LOCAL|UNIX|FILE), sun_path=\"" addr "\"\\}, " addrlen "\\) += 0$" } -NR == 1 && /^socket\(PF_(LOCAL|UNIX|FILE), SOCK_STREAM, 0\) += 1$/ {next} +NR == 1 { + if (match($0, r_socket, a)) { + inode = a[2] + r_connect = "^connect\\(1, \\{sa_family=AF_(LOCAL|UNIX|FILE), sun_path=\"" addr "\"\\}, " addrlen "\\) += 0$" + next + } +} NR == 2 {if (match($0, r_close_listen)) next} NR == 3 { - if (match($0, r_connect, a)) { - inode = a[1] + if (r_connect != "" && match($0, r_connect)) { r_close_connected = "^close\\(1" r_i "\\]>\\) += 0$" next }