15dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes#!/bin/sh
25dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes
35dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes# Check how network syscalls are traced.
45dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes
55dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes. "${srcdir=.}/init.sh"
65dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes
75dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughescheck_prog grep
85dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughescheck_prog rm
95dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes
105dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughesrm -f $LOG.*
115dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes
125dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes./net-accept-connect ||
135dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	fail_ 'net-accept-connect failed'
145dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes
155dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughesargs="-tt -ff -o $LOG -enetwork ./net-accept-connect"
165dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes$STRACE $args ||
175dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	fail_ "strace $args failed"
185dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes
195dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes"$srcdir"/../strace-log-merge $LOG > $LOG || {
205dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	cat $LOG
215dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	fail_ 'strace-log-merge failed'
225dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes}
235dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes
245dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughesrm -f $LOG.*
255dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes
265dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughesgrep_log()
275dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes{
285dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	local syscall="$1"; shift
295dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	local prefix='[1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +'
305dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes
315dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	LC_ALL=C grep -E -x "$prefix$syscall$@" $LOG > /dev/null || {
325dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes		cat $LOG
335dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes		fail_ "strace -enetwork failed to trace \"$syscall\" properly"
345dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	}
355dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes}
365dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes
375dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughesgrep_log socket '\(PF_(LOCAL|UNIX|FILE), SOCK_STREAM, 0\) += 0'
385dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughesgrep_log socket '\(PF_(LOCAL|UNIX|FILE), SOCK_STREAM, 0\) += 1'
395dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughesgrep_log bind '\(0, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="local-stream"\}, 15\) += 0'
405dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughesgrep_log listen '\(0, 5\) += 0'
415dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughesgrep_log getsockname '\(0, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="local-stream"\}, \[15\]\) += 0'
425dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughesgrep_log accept '\(0, \{sa_family=AF_(LOCAL|UNIX|FILE), NULL\}, \[2\]\) += 1'
435dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughesgrep_log connect '\(1, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="local-stream"\}, 15\) += 0'
445dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes
455dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughesexit 0
46