1fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. LevinBEGIN { 2fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin lines = 5 3fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin fail = 0 4fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin 5fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin r_i = "[1-9][0-9]*" 6fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin r_port = "[1-9][0-9][0-9][0-9]+" 7fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin r_localhost = "127\\.0\\.0\\.1" 8ed7ada24ac4647e56ce1bf3befbaec29a250cd38Dmitry V. Levin r_connect = "^connect\\(0<TCP:\\[" r_i "\\]>, \\{sa_family=AF_INET, sin_port=htons\\((" r_port ")\\), sin_addr=inet_addr\\(\"" r_localhost "\"\\)\\}, " r_i ") += 0$" 9fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin} 10fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin 11fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. LevinNR == 1 && /^socket\(PF_INET, SOCK_STREAM, IPPROTO_IP\) += 0$/ {next} 12fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin 13fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. LevinNR == 2 { 14fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin if (match($0, r_connect, a)) { 15959205c2a8a7c559b40204a1d33336d6800d1f1eDmitry V. Levin port_r = a[1] 16959205c2a8a7c559b40204a1d33336d6800d1f1eDmitry V. Levin r_send = "^send\\(0<TCP:\\[" r_localhost ":(" r_port ")->" r_localhost ":" port_r "\\]>, \"data\", 4, MSG_DONTROUTE\\) += 4$" 17959205c2a8a7c559b40204a1d33336d6800d1f1eDmitry V. Levin r_sendto = "^sendto\\(0<TCP:\\[" r_localhost ":(" r_port ")->" r_localhost ":" port_r "\\]>, \"data\", 4, MSG_DONTROUTE, NULL, 0\\) += 4$" 18fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin next 19fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin } 20fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin} 21fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin 22fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. LevinNR == 3 { 23959205c2a8a7c559b40204a1d33336d6800d1f1eDmitry V. Levin if (r_send != "" && (match($0, r_send, a) || match($0, r_sendto, a))) { 24fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin port_l = a[1] 25959205c2a8a7c559b40204a1d33336d6800d1f1eDmitry V. Levin r_close = "^close\\(0<TCP:\\[" r_localhost ":" port_l "->" r_localhost ":" port_r "\\]>\\) += 0$" 26fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin next 27fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin } 28fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin} 29fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin 30959205c2a8a7c559b40204a1d33336d6800d1f1eDmitry V. LevinNR == 4 {if (r_close != "" && match($0, r_close)) next} 31fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin 32959205c2a8a7c559b40204a1d33336d6800d1f1eDmitry V. LevinNR == lines && $0 == "+++ exited with 0 +++" {next} 33fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin 34fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin{ 35fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin print "Line " NR " does not match: " $0 36fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin fail=1 37fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin} 38fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin 39fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. LevinEND { 40fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin if (NR != lines) { 41fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin print "Expected " lines " lines, found " NR " line(s)." 42fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin print "" 43fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin exit 1 44fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin } 45fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin if (fail) { 46fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin print "" 47fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin exit 1 48fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin } 49fdfa72276a16d0bd42b795aef3ac6c8969210469Dmitry V. Levin} 50