Home | History | Annotate | Download | only in tests
      1 #!/bin/sh
      2 
      3 # Check how network syscalls are traced when decoding socket descriptors
      4 
      5 . "${srcdir=.}/init.sh"
      6 
      7 # strace -y is implemented using /proc/self/fd
      8 [ -d /proc/self/fd/ ] ||
      9 	framework_skip_ '/proc/self/fd/ is not available'
     10 
     11 check_prog grep
     12 check_prog rm
     13 
     14 rm -f $LOG.*
     15 
     16 ./net-accept-connect ||
     17 	fail_ 'net-accept-connect failed'
     18 
     19 # using -y to test socket descriptors 'paths' decoding
     20 args="-tt -ff -y -o $LOG -enetwork ./net-accept-connect"
     21 $STRACE $args ||
     22 	fail_ "strace $args failed"
     23 
     24 "$srcdir"/../strace-log-merge $LOG > $LOG || {
     25 	cat $LOG
     26 	fail_ 'strace-log-merge failed'
     27 }
     28 
     29 rm -f $LOG.*
     30 
     31 grep_log()
     32 {
     33 	local syscall="$1"; shift
     34 	local prefix='[1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +'
     35 
     36 	LC_ALL=C grep -E -x "$prefix$syscall$@" $LOG > /dev/null || {
     37 		cat $LOG
     38 		fail_ "strace -enetwork failed to trace \"$syscall\" properly"
     39 	}
     40 }
     41 grep_log bind '\(0<socket:\[[0-9]+\]>, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="local-stream"\}, 15\) += 0'
     42 grep_log listen '\(0<socket:\[[0-9]+\]>, 5\) += 0'
     43 grep_log getsockname '\(0<socket:\[[0-9]+\]>, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="local-stream"\}, \[15\]\) += 0'
     44 grep_log accept '\(0<socket:\[[0-9]+\]>, \{sa_family=AF_(LOCAL|UNIX|FILE), NULL\}, \[2\]\) += 1'
     45 grep_log connect '\(1<socket:\[[0-9]+\]>, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="local-stream"\}, 15\) += 0'
     46 
     47 exit 0
     48