Jouni Malinen | cd4e3c3 | 2015-10-29 12:39:56 +0200 | [diff] [blame] | 1 | #!/usr/bin/python |
| 2 | # |
| 3 | # Sigma Control API DUT (sniffer_control_field_check) |
| 4 | # Copyright (c) 2014, Qualcomm Atheros, Inc. |
| 5 | # All Rights Reserved. |
| 6 | # Licensed under the Clear BSD license. See README for more details. |
| 7 | |
| 8 | import sys |
| 9 | import subprocess |
| 10 | import tshark |
| 11 | |
| 12 | framename = None |
| 13 | wsc_state = None |
| 14 | pvb_bit = None |
| 15 | moredata_bit = None |
| 16 | eosp_bit = None |
| 17 | |
| 18 | for arg in sys.argv: |
| 19 | if arg.startswith("FileName="): |
| 20 | infile = 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("WSC_State="): |
| 26 | wsc_state = arg.split("=", 1)[1] |
| 27 | elif arg.startswith("pvb_bit="): |
| 28 | pvb_bit = arg.split("=", 1)[1] |
| 29 | elif arg.startswith("MoreData_bit="): |
| 30 | moredata_bit = arg.split("=", 1)[1] |
| 31 | elif arg.startswith("EOSP_bit="): |
| 32 | eosp_bit = arg.split("=", 1)[1] |
| 33 | |
| 34 | filter = 'wlan.sa==' + srcmac |
| 35 | |
| 36 | if framename: |
| 37 | frame_filters = tshark.tshark_framenames() |
| 38 | if framename not in frame_filters: |
| 39 | print "errorCode,Unsupported FrameName" |
| 40 | sys.exit() |
| 41 | filter = filter + " and " + frame_filters[framename] |
| 42 | |
| 43 | if wsc_state: |
| 44 | filter = filter + " and wps.wifi_protected_setup_state == " + wsc_state |
| 45 | |
| 46 | if pvb_bit: |
| 47 | val = int(pvb_bit) |
| 48 | if val == 1: |
| 49 | filter = filter + " and wlan_mgt.tim.partial_virtual_bitmap != 0" |
| 50 | elif val == 0: |
| 51 | filter = filter + " and wlan_mgt.tim.partial_virtual_bitmap == 0" |
| 52 | else: |
| 53 | filter = filter + " and wlan_mgt.tim.partial_virtual_bitmap == " + pvb_bit |
| 54 | |
| 55 | if moredata_bit: |
| 56 | filter = filter + " and wlan.fc.moredata == " + moredata_bit |
| 57 | |
| 58 | if eosp_bit: |
| 59 | filter = filter + " and wlan.qos.eosp == " + eosp_bit |
| 60 | |
| 61 | cmd = ['tshark', '-r', infile, '-c', '1', '-R', filter, |
| 62 | '-Tfields', '-e', 'frame.number'] |
| 63 | tshark = subprocess.Popen(cmd, stdout=subprocess.PIPE) |
| 64 | data = tshark.stdout.read() |
| 65 | frames = data.splitlines() |
| 66 | if len(frames) == 0: |
| 67 | print "CheckResult,FAIL" |
| 68 | else: |
| 69 | print "CheckResult,SUCCESS" |