1#!/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) 78