blob: 5ac16365f4ce2e73546f375d02d218275abed96f [file] [log] [blame]
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001#!/usr/bin/python
2#
3# Sigma Control API DUT (sniffer_control_filter_capture)
4# Copyright (c) 2014, Qualcomm Atheros, Inc.
5# All Rights Reserved.
6# Licensed under the Clear BSD license. See README for more details.
7
8import sys
9import subprocess
10import tshark
11
12framename = None
13hasfield = None
14datalen = None
15
16for arg in sys.argv:
17 if arg.startswith("InFile="):
18 infile = arg.split("=", 1)[1]
19 elif arg.startswith("OutFile="):
20 outfile = arg.split("=", 1)[1]
21 elif arg.startswith("SrcMac="):
22 srcmac = arg.split("=", 1)[1]
23 elif arg.startswith("FrameName="):
24 framename = arg.split("=", 1)[1].lower()
25 elif arg.startswith("HasField="):
26 hasfield = arg.split("=", 1)[1].lower()
27 elif arg.startswith("Nframes="):
28 nframes = arg.split("=", 1)[1]
29 elif arg.startswith("Datalen="):
30 datalen = arg.split("=", 1)[1]
31
32filter = 'wlan.sa==' + srcmac
33
34if framename:
35 frame_filters = tshark.tshark_framenames()
36 if framename not in frame_filters:
37 print "errorCode,Unsupported FrameName"
38 sys.exit()
39
40 filter = filter + " and " + frame_filters[framename]
41
42if hasfield:
43 fields = tshark.tshark_hasfields()
44 if hasfield not in fields:
45 print "errorCode,Unsupported HasField"
46 sys.exit()
47 filter = filter + " and " + fields[hasfield]
48
49if datalen:
50 filter = filter + " and wlan.fc.type == 2 and data.len == " + datalen
51
52if nframes == "last":
53 cmd = ['tshark', '-r', infile, '-R', filter,
54 '-Tfields', '-e', 'frame.number']
55 tshark = subprocess.Popen(cmd, stdout=subprocess.PIPE)
56 data = tshark.stdout.read()
57 frames = data.splitlines()
58 if len(frames) == 0:
59 print "CheckResult,NoPacketsFound"
60 sys.exit()
61 filter = "frame.number == " + frames[-1]
62 nframes = "1"
63elif nframes == "all":
64 nframes = "9999999"
65
66cmd = ['tshark', '-r', infile, '-w', outfile,
67 '-c', nframes,
68 '-R', filter]
69tshark = subprocess.Popen(cmd, stdout=subprocess.PIPE)
70data = tshark.stdout.read()
71
72cmd = ['tshark', '-r', outfile, '-c', '1', '-Tfields', '-e', 'frame.number']
73tshark = subprocess.Popen(cmd, stdout=subprocess.PIPE)
74data = tshark.stdout.read().rstrip()
75
76result = "SUCCESS" if len(data) > 0 else "NoPacketsFound"
77print "CheckResult,%s" % (result)