mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-10-31 10:48:02 +00:00 
			
		
		
		
	tos-plus: Support non-wifi station test as well.
This commit is contained in:
		| @@ -35,6 +35,9 @@ are very likely more than the PDU count) | ||||
|   --cx "1.wiphy0 1.sta0 anAC 1.eth1 tcp 1472 56000 2000000 BK" \ | ||||
|   --sniffer_radios "1.wiphy2" | ||||
|  | ||||
| # You can also create connections between non-station endpoints. | ||||
| ./lf_tos_plus_test.py --dur 1 --lfmgr 192.168.100.156 --txpkts 99 \ | ||||
|  --cx "NA 1.rddVR0 NA 1.rddVR1 tcp MTU 1000000 2000000 0"  --wait_sniffer 1 | ||||
|  | ||||
| make sure pexpect, pandas is installed: | ||||
| $ sudo yum install python3-pandas | ||||
| @@ -115,6 +118,8 @@ def main(): | ||||
|    global sniffer_radios | ||||
|    global wait_sniffer | ||||
|  | ||||
|    do_sniff = False | ||||
|  | ||||
|    parser = argparse.ArgumentParser(description="ToS++ report Script") | ||||
|    parser.add_argument("--cx",  type=str, action='append', help="Connection tuple: station-radio station-port mode upstream-port protocol pkt-size speed_ul speed_dl QoS") | ||||
|    parser.add_argument("--radio",  type=str, action='append', help="Radio tuple:  radio nss channel") | ||||
| @@ -125,12 +130,13 @@ def main(): | ||||
|    parser.add_argument("--passwd",       type=str, help="AP's password if using PSK authentication, skip this argement for OPEN") | ||||
|    parser.add_argument("--txpkts",       type=str, help="Optional:  Packets (PDUs) to send before stopping data connections  Default (0) means infinite") | ||||
|    parser.add_argument("--sniffer_radios", type=str, help="Optional:  list of radios to sniff wifi traffic \"1.wiphy2 1.wiphy4\"") | ||||
|    parser.add_argument("--wait_sniffer", type=str, help="Optional: 1 means wait on sniffer to finish before existing script\"") | ||||
|    parser.add_argument("--wait_sniffer", type=str, help="Optional: 1 means wait on sniffer to finish before existing script.\"") | ||||
|     | ||||
|    args = None | ||||
|    try: | ||||
|       args = parser.parse_args() | ||||
|       cx_strs = args.cx.copy() | ||||
|       if (args.radio != None): | ||||
|           radio_strs = args.radio.copy() | ||||
|       if (args.lfmgr != None): | ||||
|           lfmgr = args.lfmgr | ||||
| @@ -147,7 +153,9 @@ def main(): | ||||
|           txpkts = args.txpkts | ||||
|       if (args.sniffer_radios != None): | ||||
|           sniffer_radios = args.sniffer_radios | ||||
|           do_sniff = True | ||||
|       if (args.wait_sniffer != None): | ||||
|           do_sniff = True | ||||
|           wait_sniffer = args.wait_sniffer == "1" | ||||
|       filehandler = None | ||||
|    except Exception as e: | ||||
| @@ -344,6 +352,7 @@ def main(): | ||||
|        if not ukey in upstreams: | ||||
|            upstreams.append(ukey) | ||||
|  | ||||
|        if radio != "NA": | ||||
|            rad_resource = "1" | ||||
|            rad_name = radio; | ||||
|            if radio[0].isdigit(): | ||||
| @@ -355,8 +364,13 @@ def main(): | ||||
|            subprocess.run(["./lf_associate_ap.pl", "--mgr", lfmgr, "--resource", rad_resource, "--action", "add", | ||||
|                            "--radio", rad_name, "--ssid", ssid, "--passphrase", passwd, "--security", security, | ||||
|                            "--first_sta", sta_name, "--first_ip", "DHCP", "--wifi_mode", mode, "--num_stations", "1"]) | ||||
|        else: | ||||
|            # Assume it should be sniffed. | ||||
|            ukey = "%s.%s"%(sta_resource, sta_name) | ||||
|            if not ukey in upstreams: | ||||
|                upstreams.append(ukey) | ||||
|  | ||||
|        # Up station | ||||
|        # Up station / A-side Port | ||||
|        subprocess.run(["./lf_portmod.pl", "--manager", lfmgr, "--card",  sta_resource, "--port_name", sta_name, | ||||
|                        "--set_ifstate", "up"]);  | ||||
|  | ||||
| @@ -382,6 +396,7 @@ def main(): | ||||
|  | ||||
|            #print("IP %s  Status %s"%(_ip, _status)) | ||||
|  | ||||
|            if sta_name.startswith("wlan") or sta_name.startswith("sta"): | ||||
|                if (_status == "Authorized"): | ||||
|                    if ((_ip != None) and (_ip != "0.0.0.0")): | ||||
|                        print("Station is associated with IP address.") | ||||
| @@ -394,6 +409,14 @@ def main(): | ||||
|                    if (not wait_assoc_print): | ||||
|                        print("Waiting up to 180s for station %s.%s to associate."%(sta_resource, sta_name)) | ||||
|                        wait_assoc_print = True | ||||
|            else: | ||||
|                if ((_ip != None) and (_ip != "0.0.0.0")): | ||||
|                    print("Port is associated with IP address.") | ||||
|                    break | ||||
|                else: | ||||
|                    if (not wait_ip_print): | ||||
|                        print("Waiting for port %s.%s to get IP Address."%(sta_resource, sta_name)) | ||||
|                        wait_ip_print = True | ||||
|  | ||||
|            i = i + 1 | ||||
|            # We wait a fairly long time since AP will take a long time to start on a CAC channel. | ||||
| @@ -462,10 +485,11 @@ def main(): | ||||
|        count = count + 1 | ||||
|  | ||||
|    # Start sniffer? | ||||
|    if sniffer_radios != "": | ||||
|        radios = sniffer_radios.split() | ||||
|    if do_sniff: | ||||
|        lfstations = "" | ||||
|        lfupstreams = "" | ||||
|        if sniffer_radios != "": | ||||
|            radios = sniffer_radios.split() | ||||
|            ri = 0 | ||||
|            for r in radios: | ||||
|                lfstations = lfstations + " " + stations[ri] | ||||
| @@ -476,12 +500,13 @@ def main(): | ||||
|  | ||||
|        # Add 15 seconds to capture length in case it takes a bit of time to start all | ||||
|        # of the connections. | ||||
|        if lfupstreams == "": | ||||
|            subprocess.run(["./lf_sniff.py", "--lfmgr", lfmgr, "--duration", "%f"%((dur + 15) / 60), "--station", lfstations, | ||||
|                            "--sniffer_radios", sniffer_radios])# capture_output=True); | ||||
|        else: | ||||
|            subprocess.run(["./lf_sniff.py", "--lfmgr", lfmgr, "--duration", "%f"%((dur + 15) / 60), "--station", lfstations, | ||||
|                            "--sniffer_radios", sniffer_radios, "--upstreams", lfupstreams])# capture_output=True); | ||||
|        cmd = ["./lf_sniff.py", "--lfmgr", lfmgr, "--duration", "%f"%((dur + 15) / 60)] | ||||
|        if lfstations != "": | ||||
|            cmd.extend(["--station", lfstations, "--sniffer_radios", sniffer_radios]) | ||||
|        if lfupstreams != "": | ||||
|            cmd.extend(["--upstreams", lfupstreams]) | ||||
|  | ||||
|        subprocess.run(cmd) | ||||
|  | ||||
|    sniff_done_at = time.time() + dur + 15; | ||||
|     | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Ben Greear
					Ben Greear