#include <sys/socket.h>
#include <sys/un.h>
-#define SUN_PATH "local-stream"
-int main(void)
+int main(int ac, const char **av)
{
struct sockaddr_un addr = {
.sun_family = AF_UNIX,
- .sun_path = SUN_PATH
};
- socklen_t len = offsetof(struct sockaddr_un, sun_path) + sizeof SUN_PATH;
+ socklen_t len;
- unlink(SUN_PATH);
+ assert(ac == 2);
+ assert(strlen(av[1]) > 0);
+ assert(strlen(av[1]) < sizeof(addr.sun_path));
+
+ strcpy(addr.sun_path, av[1]);
+ len = offsetof(struct sockaddr_un, sun_path) + strlen(av[1]) + 1;
+
+ unlink(av[1]);
close(0);
close(1);
return 0;
}
- unlink(SUN_PATH);
+ unlink(av[1]);
return 0;
}
rm -f $LOG.*
-./net-accept-connect ||
+addr=net-fd-local-stream
+./net-accept-connect $addr ||
fail_ 'net-accept-connect failed'
# using -y to test socket descriptors 'paths' decoding
-args="-tt -ff -y -o $LOG -enetwork ./net-accept-connect"
-$STRACE $args ||
- fail_ "strace $args failed"
+args="-tt -ff -y -enetwork ./net-accept-connect $addr"
+$STRACE -o "$LOG" $args ||
+ fail_ "$STRACE $args failed"
"$srcdir"/../strace-log-merge $LOG > $LOG || {
cat $LOG
fail_ "strace -enetwork failed to trace \"$syscall\" properly"
}
}
-grep_log bind '\(0<socket:\[[0-9]+\]>, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="local-stream"\}, 15\) += 0'
+grep_log bind '\(0<socket:\[[0-9]+\]>, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="'$addr'"\}, 22\) += 0'
grep_log listen '\(0<socket:\[[0-9]+\]>, 5\) += 0'
-grep_log getsockname '\(0<socket:\[[0-9]+\]>, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="local-stream"\}, \[15\]\) += 0'
+grep_log getsockname '\(0<socket:\[[0-9]+\]>, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="'$addr'"\}, \[22\]\) += 0'
grep_log accept '\(0<socket:\[[0-9]+\]>, \{sa_family=AF_(LOCAL|UNIX|FILE), NULL\}, \[2\]\) += 1<socket:\[[0-9]+\]>'
-grep_log connect '\(1<socket:\[[0-9]+\]>, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="local-stream"\}, 15\) += 0'
+grep_log connect '\(1<socket:\[[0-9]+\]>, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="'$addr'"\}, 22\) += 0'
exit 0
rm -f $LOG.*
-./net-accept-connect ||
+addr=net-local-stream
+./net-accept-connect $addr ||
fail_ 'net-accept-connect failed'
-args="-tt -ff -o $LOG -enetwork ./net-accept-connect"
-$STRACE $args ||
- fail_ "strace $args failed"
+args="-tt -ff -enetwork ./net-accept-connect $addr"
+$STRACE -o "$LOG" $args ||
+ fail_ "$STRACE $args failed"
"$srcdir"/../strace-log-merge $LOG > $LOG || {
cat $LOG
grep_log socket '\(PF_(LOCAL|UNIX|FILE), SOCK_STREAM, 0\) += 0'
grep_log socket '\(PF_(LOCAL|UNIX|FILE), SOCK_STREAM, 0\) += 1'
-grep_log bind '\(0, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="local-stream"\}, 15\) += 0'
+grep_log bind '\(0, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="'$addr'"\}, 19\) += 0'
grep_log listen '\(0, 5\) += 0'
-grep_log getsockname '\(0, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="local-stream"\}, \[15\]\) += 0'
+grep_log getsockname '\(0, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="'$addr'"\}, \[19\]\) += 0'
grep_log accept '\(0, \{sa_family=AF_(LOCAL|UNIX|FILE), NULL\}, \[2\]\) += 1'
-grep_log connect '\(1, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="local-stream"\}, 15\) += 0'
+grep_log connect '\(1, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="'$addr'"\}, 19\) += 0'
exit 0
lines = 8
fail = 0
+ addrlen = length(addr) + 3
r_i = "[1-9][0-9]*"
- r_bind = "^bind\\(0<UNIX:\\[(" r_i ")\\]>, {sa_family=AF_(LOCAL|UNIX|FILE), sun_path=\"local-stream\"}, 15\\) += 0$"
+ r_bind = "^bind\\(0<UNIX:\\[(" r_i ")\\]>, {sa_family=AF_(LOCAL|UNIX|FILE), sun_path=\"" addr "\"}, " addrlen "\\) += 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]
- r_listen = "^listen\\(0<UNIX:\\[" inode_listen ",\"local-stream\"\\]>, 5\\) += 0$"
- r_getsockname = "^getsockname\\(0<UNIX:\\[" inode_listen ",\"local-stream\"\\]>, {sa_family=AF_(LOCAL|UNIX|FILE), sun_path=\"local-stream\"}, \\[15\\]\\) += 0$"
- r_accept = "^accept\\(0<UNIX:\\[" inode_listen ",\"local-stream\"\\]>, {sa_family=AF_(LOCAL|UNIX|FILE), NULL}, \\[2\\]\\) += 1<UNIX:\\[(" r_i ")->(" r_i "),\"local-stream\"\\]>"
+ r_listen = "^listen\\(0<UNIX:\\[" inode_listen ",\"" addr "\"\\]>, 5\\) += 0$"
+ r_getsockname = "^getsockname\\(0<UNIX:\\[" inode_listen ",\"" addr "\"\\]>, {sa_family=AF_(LOCAL|UNIX|FILE), sun_path=\"" addr "\"}, \\[" addrlen "\\]\\) += 0$"
+ r_accept = "^accept\\(0<UNIX:\\[" inode_listen ",\"" addr "\"\\]>, {sa_family=AF_(LOCAL|UNIX|FILE), NULL}, \\[2\\]\\) += 1<UNIX:\\[(" r_i ")->(" r_i "),\"" addr "\"\\]>"
next
}
}
if (r_accept != "" && match($0, r_accept, a)) {
inode_accepted = a[2]
inode_peer = a[3]
- r_close_listen = "^close\\(0<UNIX:\\[" inode_listen ",\"local-stream\"\\]>\\) += 0$"
- r_close_accepted = "^close\\(1<UNIX:\\[" inode_accepted ",\"local-stream\"\\]>\\) += 0$"
+ r_close_listen = "^close\\(0<UNIX:\\[" inode_listen ",\"" addr "\"\\]>\\) += 0$"
+ r_close_accepted = "^close\\(1<UNIX:\\[" inode_accepted ",\"" addr "\"\\]>\\) += 0$"
next
}
}
BEGIN {
lines = 5
fail = 0
+ addrlen = length(addr) + 3
r_i = "[1-9][0-9]*"
- r_close_listen = "^close\\(0<UNIX:[" r_i ",\"local-stream\"]>\\) += 0$"
- r_connect = "^connect\\(1<UNIX:\\[(" r_i ")\\]>, {sa_family=AF_(LOCAL|UNIX|FILE), sun_path=\"local-stream\"}, 15\\) += 0$"
+ r_close_listen = "^close\\(0<UNIX:[" r_i ",\"" addr "\"]>\\) += 0$"
+ r_connect = "^connect\\(1<UNIX:\\[(" r_i ")\\]>, {sa_family=AF_(LOCAL|UNIX|FILE), sun_path=\"" addr "\"}, " addrlen "\\) += 0$"
}
NR == 1 && /^socket\(PF_(LOCAL|UNIX|FILE), SOCK_STREAM, 0\) += 1$/ {next}
rm -f $LOG.* $LOG-*
-./net-accept-connect ||
+addr=unix-yy-local-stream
+./net-accept-connect $addr ||
fail_ 'net-accept-connect failed'
./netlink_unix_diag || {
fi
}
-args="-tt -ff -yy -o $LOG -eclose,network ./net-accept-connect"
-$STRACE $args ||
- fail_ "strace $args failed"
+args="-tt -ff -yy -eclose,network ./net-accept-connect $addr"
+$STRACE -o "$LOG" $args ||
+ fail_ "$STRACE $args failed"
"$srcdir"/../strace-log-merge $LOG > $LOG || {
cat $LOG
fail_ 'failed to separate logs'
}
-awk -f "$srcdir"/unix-yy-connect.awk $LOG-connect || {
+awk -f "$srcdir"/unix-yy-connect.awk -v addr=$addr $LOG-connect || {
cat $LOG-connect
fail_ "strace $args failed to decode socket descriptors properly"
}
-awk -f "$srcdir"/unix-yy-accept.awk $LOG-accept || {
+awk -f "$srcdir"/unix-yy-accept.awk -v addr=$addr $LOG-accept || {
cat $LOG-accept
fail_ "strace $args failed to decode socket descriptors properly"
}