xref: /wlan-dirver/utils/sigma-dut/sigma_dut.h (revision 26a5b76ddabc9cf6d3e5aba8d8fbe7fcf565b559)
1cd4e3c3eSJouni Malinen /*
2cd4e3c3eSJouni Malinen  * Sigma Control API DUT (station/AP)
3cd4e3c3eSJouni Malinen  * Copyright (c) 2010-2011, Atheros Communications, Inc.
49c381f59SAmarnath Hullur Subramanyam  * Copyright (c) 2011-2017, Qualcomm Atheros, Inc.
5cd4e3c3eSJouni Malinen  * All Rights Reserved.
6cd4e3c3eSJouni Malinen  * Licensed under the Clear BSD license. See README for more details.
7cd4e3c3eSJouni Malinen  */
8cd4e3c3eSJouni Malinen 
9cd4e3c3eSJouni Malinen #ifndef SIGMA_DUT_H
10cd4e3c3eSJouni Malinen #define SIGMA_DUT_H
11cd4e3c3eSJouni Malinen 
129981b511SLior David #ifdef __GNUC__
139981b511SLior David #define _GNU_SOURCE	1
149981b511SLior David #endif
159981b511SLior David 
16cd4e3c3eSJouni Malinen #include <stdlib.h>
17cd4e3c3eSJouni Malinen #include <stdio.h>
18cd4e3c3eSJouni Malinen #include <stdarg.h>
19cd4e3c3eSJouni Malinen #include <string.h>
20cd4e3c3eSJouni Malinen #include <errno.h>
21cd4e3c3eSJouni Malinen #include <unistd.h>
22cd4e3c3eSJouni Malinen #include <time.h>
23cd4e3c3eSJouni Malinen #include <sys/time.h>
24cd4e3c3eSJouni Malinen #include <sys/types.h>
25cd4e3c3eSJouni Malinen #include <sys/socket.h>
26cd4e3c3eSJouni Malinen #include <net/if.h>
27cd4e3c3eSJouni Malinen #ifdef __QNXNTO__
28cd4e3c3eSJouni Malinen #include <sys/select.h>
29cd4e3c3eSJouni Malinen #include <net/if_ether.h>
30cd4e3c3eSJouni Malinen #endif /* __QNXNTO__ */
31cd4e3c3eSJouni Malinen #include <netinet/in.h>
32cd4e3c3eSJouni Malinen #include <arpa/inet.h>
33cd4e3c3eSJouni Malinen #ifdef CONFIG_TRAFFIC_AGENT
34cd4e3c3eSJouni Malinen #include <pthread.h>
35cd4e3c3eSJouni Malinen #endif /* CONFIG_TRAFFIC_AGENT */
36291d97daSPeng Xu #ifdef NL80211_SUPPORT
37291d97daSPeng Xu #include <netlink/genl/family.h>
38291d97daSPeng Xu #include <netlink/genl/ctrl.h>
39291d97daSPeng Xu #include <netlink/genl/genl.h>
40291d97daSPeng Xu #include "qca-vendor_copy.h"
41291d97daSPeng Xu #include "nl80211_copy.h"
42291d97daSPeng Xu #endif /* NL80211_SUPPORT */
43cd4e3c3eSJouni Malinen 
44cd4e3c3eSJouni Malinen 
45cd4e3c3eSJouni Malinen #ifdef __GNUC__
46cd4e3c3eSJouni Malinen #define PRINTF_FORMAT(a,b) __attribute__ ((format (printf, (a), (b))))
47cd4e3c3eSJouni Malinen #else
48cd4e3c3eSJouni Malinen #define PRINTF_FORMAT(a,b)
49cd4e3c3eSJouni Malinen #endif
50cd4e3c3eSJouni Malinen 
51cd4e3c3eSJouni Malinen #ifndef SIGMA_TMPDIR
52cd4e3c3eSJouni Malinen #define SIGMA_TMPDIR "/tmp"
53cd4e3c3eSJouni Malinen #endif /* SIGMA_TMPDIR */
54cd4e3c3eSJouni Malinen 
55cd4e3c3eSJouni Malinen #ifndef SIGMA_DUT_VER
56cd4e3c3eSJouni Malinen #define SIGMA_DUT_VER "(unknown)"
57cd4e3c3eSJouni Malinen #endif /* SIGMA_DUT_VER */
58cd4e3c3eSJouni Malinen 
59cd4e3c3eSJouni Malinen #ifndef ETH_ALEN
60cd4e3c3eSJouni Malinen #define ETH_ALEN 6
61cd4e3c3eSJouni Malinen #endif
62cd4e3c3eSJouni Malinen 
63cd4e3c3eSJouni Malinen #ifndef ETH_P_ARP
64cd4e3c3eSJouni Malinen #define ETH_P_ARP 0x0806
65cd4e3c3eSJouni Malinen #endif
66cd4e3c3eSJouni Malinen 
67cd4e3c3eSJouni Malinen struct sigma_dut;
68cd4e3c3eSJouni Malinen 
69cd4e3c3eSJouni Malinen #define MAX_PARAMS 100
70363f5584SAlejandro Vasquez #define MAX_RADIO 3
71cd4e3c3eSJouni Malinen 
72cd4e3c3eSJouni Malinen /* Set default operating channel width 80 MHz */
73cd4e3c3eSJouni Malinen #define VHT_DEFAULT_OPER_CHWIDTH AP_80_VHT_OPER_CHWIDTH
74cd4e3c3eSJouni Malinen 
75cd4e3c3eSJouni Malinen typedef unsigned int u32;
761bde7947SAnkita Bajaj typedef uint16_t u16;
77cd4e3c3eSJouni Malinen typedef unsigned char u8;
78cd4e3c3eSJouni Malinen 
79cd4e3c3eSJouni Malinen #define WPA_GET_BE32(a) ((((u32) (a)[0]) << 24) | (((u32) (a)[1]) << 16) | \
80cd4e3c3eSJouni Malinen 			 (((u32) (a)[2]) << 8) | ((u32) (a)[3]))
81cd4e3c3eSJouni Malinen #define WPA_PUT_BE32(a, val)					\
82cd4e3c3eSJouni Malinen 	do {							\
83cd4e3c3eSJouni Malinen 		(a)[0] = (u8) ((((u32) (val)) >> 24) & 0xff);	\
84cd4e3c3eSJouni Malinen 		(a)[1] = (u8) ((((u32) (val)) >> 16) & 0xff);	\
85cd4e3c3eSJouni Malinen 		(a)[2] = (u8) ((((u32) (val)) >> 8) & 0xff);	\
86cd4e3c3eSJouni Malinen 		(a)[3] = (u8) (((u32) (val)) & 0xff);		\
87cd4e3c3eSJouni Malinen 	} while (0)
88cd4e3c3eSJouni Malinen 
89cd4e3c3eSJouni Malinen struct sigma_cmd {
90cd4e3c3eSJouni Malinen 	char *params[MAX_PARAMS];
91cd4e3c3eSJouni Malinen 	char *values[MAX_PARAMS];
92cd4e3c3eSJouni Malinen 	int count;
93cd4e3c3eSJouni Malinen };
94cd4e3c3eSJouni Malinen 
953410aa5bSAlejandro Vasquez #define MAX_CMD_LEN 4096
96cd4e3c3eSJouni Malinen 
97cd4e3c3eSJouni Malinen struct sigma_conn {
98cd4e3c3eSJouni Malinen 	int s;
99cd4e3c3eSJouni Malinen 	struct sockaddr_in addr;
100cd4e3c3eSJouni Malinen 	socklen_t addrlen;
101cd4e3c3eSJouni Malinen 	char buf[MAX_CMD_LEN + 5];
102cd4e3c3eSJouni Malinen 	int pos;
103cd4e3c3eSJouni Malinen 	int waiting_completion;
104cd4e3c3eSJouni Malinen };
105cd4e3c3eSJouni Malinen 
1060e29cf2dSJouni Malinen enum sigma_cmd_result {
1070e29cf2dSJouni Malinen 	ERROR_SEND_STATUS = -2,
1080e29cf2dSJouni Malinen 	INVALID_SEND_STATUS = -1,
1090e29cf2dSJouni Malinen 	STATUS_SENT = 0,
1100e29cf2dSJouni Malinen 	SUCCESS_SEND_STATUS = 1
1110e29cf2dSJouni Malinen };
112cd4e3c3eSJouni Malinen 
113cd4e3c3eSJouni Malinen struct sigma_cmd_handler {
114cd4e3c3eSJouni Malinen 	struct sigma_cmd_handler *next;
115cd4e3c3eSJouni Malinen 	char *cmd;
116cd4e3c3eSJouni Malinen 	int (*validate)(struct sigma_cmd *cmd);
117cd4e3c3eSJouni Malinen 	/* process return value:
118cd4e3c3eSJouni Malinen 	 * -2 = failed, caller will send status,ERROR
119cd4e3c3eSJouni Malinen 	 * -1 = failed, caller will send status,INVALID
1200e29cf2dSJouni Malinen 	 * 0 = response already sent
121cd4e3c3eSJouni Malinen 	 * 1 = success, caller will send status,COMPLETE
122cd4e3c3eSJouni Malinen 	 */
123*26a5b76dSJouni Malinen 	enum sigma_cmd_result (*process)(struct sigma_dut *dut,
124*26a5b76dSJouni Malinen 					 struct sigma_conn *conn,
125cd4e3c3eSJouni Malinen 					 struct sigma_cmd *cmd);
126cd4e3c3eSJouni Malinen };
127cd4e3c3eSJouni Malinen 
128cd4e3c3eSJouni Malinen #define P2P_GRP_ID_LEN 128
129cd4e3c3eSJouni Malinen #define IP_ADDR_STR_LEN 16
130cd4e3c3eSJouni Malinen 
131cd4e3c3eSJouni Malinen struct wfa_cs_p2p_group {
132cd4e3c3eSJouni Malinen 	struct wfa_cs_p2p_group *next;
133cd4e3c3eSJouni Malinen 	char ifname[IFNAMSIZ];
134cd4e3c3eSJouni Malinen 	int go;
135cd4e3c3eSJouni Malinen 	char grpid[P2P_GRP_ID_LEN];
136cd4e3c3eSJouni Malinen 	char ssid[33];
137cd4e3c3eSJouni Malinen };
138cd4e3c3eSJouni Malinen 
139cd4e3c3eSJouni Malinen #ifdef CONFIG_TRAFFIC_AGENT
140cd4e3c3eSJouni Malinen 
141cd4e3c3eSJouni Malinen #define MAX_SIGMA_STREAMS 16
142cd4e3c3eSJouni Malinen #define MAX_SIGMA_STATS 6000
143cd4e3c3eSJouni Malinen 
144cd4e3c3eSJouni Malinen struct sigma_frame_stats {
145cd4e3c3eSJouni Malinen 	unsigned int seqnum;
146cd4e3c3eSJouni Malinen 	unsigned int local_sec;
147cd4e3c3eSJouni Malinen 	unsigned int local_usec;
148cd4e3c3eSJouni Malinen 	unsigned int remote_sec;
149cd4e3c3eSJouni Malinen 	unsigned int remote_usec;
150cd4e3c3eSJouni Malinen };
151cd4e3c3eSJouni Malinen 
152cd4e3c3eSJouni Malinen struct sigma_stream {
153cd4e3c3eSJouni Malinen 	enum sigma_stream_profile {
154cd4e3c3eSJouni Malinen 		SIGMA_PROFILE_FILE_TRANSFER,
155cd4e3c3eSJouni Malinen 		SIGMA_PROFILE_MULTICAST,
156cd4e3c3eSJouni Malinen 		SIGMA_PROFILE_IPTV,
157cd4e3c3eSJouni Malinen 		SIGMA_PROFILE_TRANSACTION,
158cd4e3c3eSJouni Malinen 		SIGMA_PROFILE_START_SYNC,
159cd4e3c3eSJouni Malinen 		SIGMA_PROFILE_UAPSD
160cd4e3c3eSJouni Malinen 	} profile;
161cd4e3c3eSJouni Malinen 	int sender;
162cd4e3c3eSJouni Malinen 	struct in_addr dst;
163cd4e3c3eSJouni Malinen 	int dst_port;
164cd4e3c3eSJouni Malinen 	struct in_addr src;
165cd4e3c3eSJouni Malinen 	int src_port;
166cd4e3c3eSJouni Malinen 	int frame_rate;
167cd4e3c3eSJouni Malinen 	int duration;
168c2493f83SJouni Malinen 	unsigned int payload_size;
169cd4e3c3eSJouni Malinen 	int start_delay;
170cd4e3c3eSJouni Malinen 	int max_cnt;
171cd4e3c3eSJouni Malinen 	enum sigma_traffic_class {
172cd4e3c3eSJouni Malinen 		SIGMA_TC_VOICE,
173cd4e3c3eSJouni Malinen 		SIGMA_TC_VIDEO,
174cd4e3c3eSJouni Malinen 		SIGMA_TC_BACKGROUND,
175cd4e3c3eSJouni Malinen 		SIGMA_TC_BEST_EFFORT
176cd4e3c3eSJouni Malinen 	} tc;
177cd4e3c3eSJouni Malinen 	int user_priority;
178cd4e3c3eSJouni Malinen 	int user_priority_set;
179cd4e3c3eSJouni Malinen 	int started;
180cd4e3c3eSJouni Malinen 	int no_timestamps;
181cd4e3c3eSJouni Malinen 
182cd4e3c3eSJouni Malinen 	int sock;
183cd4e3c3eSJouni Malinen 	pthread_t thr;
184cd4e3c3eSJouni Malinen 	int stop;
185cd4e3c3eSJouni Malinen 	int ta_send_in_progress;
186cd4e3c3eSJouni Malinen 	int trans_proto;
187cd4e3c3eSJouni Malinen 
188cd4e3c3eSJouni Malinen 	/* Statistics */
189cd4e3c3eSJouni Malinen 	int tx_act_frames; /*
190cd4e3c3eSJouni Malinen 			    * Number of frames generated by the traffic
191cd4e3c3eSJouni Malinen 			    * generator application. The name is defined in the
192cd4e3c3eSJouni Malinen 			    * Sigma CAPI spec.
193cd4e3c3eSJouni Malinen 			    */
194cd4e3c3eSJouni Malinen 	int tx_frames;
195cd4e3c3eSJouni Malinen 	int rx_frames;
196cd4e3c3eSJouni Malinen 	unsigned long long tx_payload_bytes;
197cd4e3c3eSJouni Malinen 	unsigned long long rx_payload_bytes;
198cd4e3c3eSJouni Malinen 	int out_of_seq_frames;
199cd4e3c3eSJouni Malinen 	struct sigma_frame_stats *stats;
200cd4e3c3eSJouni Malinen 	unsigned int num_stats;
201cd4e3c3eSJouni Malinen 	unsigned int stream_id;
202cd4e3c3eSJouni Malinen 
203cd4e3c3eSJouni Malinen 	/* U-APSD */
204cd4e3c3eSJouni Malinen 	unsigned int sta_id;
205cd4e3c3eSJouni Malinen 	unsigned int rx_cookie;
206cd4e3c3eSJouni Malinen 	unsigned int uapsd_sta_tc;
207cd4e3c3eSJouni Malinen 	unsigned int uapsd_rx_state;
208cd4e3c3eSJouni Malinen 	unsigned int uapsd_tx_state;
209cd4e3c3eSJouni Malinen 	unsigned int tx_stop_cnt;
210cd4e3c3eSJouni Malinen 	unsigned int tx_hello_cnt;
211cd4e3c3eSJouni Malinen 	pthread_t uapsd_send_thr;
212cd4e3c3eSJouni Malinen 	pthread_cond_t tx_thr_cond;
213cd4e3c3eSJouni Malinen 	pthread_mutex_t tx_thr_mutex;
214cd4e3c3eSJouni Malinen 	int reset_rx;
215cd4e3c3eSJouni Malinen 	int num_retry;
216cd4e3c3eSJouni Malinen 	char ifname[IFNAMSIZ]; /* ifname from the command */
217cd4e3c3eSJouni Malinen 	struct sigma_dut *dut; /* for traffic agent thread to access context */
21879594049SPradeep Reddy POTTETI 	/* console */
21979594049SPradeep Reddy POTTETI 	char test_name[9]; /* test case name */
22079594049SPradeep Reddy POTTETI 	int can_quit;
22179594049SPradeep Reddy POTTETI 	int reset;
222cd4e3c3eSJouni Malinen };
223cd4e3c3eSJouni Malinen 
224cd4e3c3eSJouni Malinen #endif /* CONFIG_TRAFFIC_AGENT */
225cd4e3c3eSJouni Malinen 
226bc180dc5SAlexei Avshalom Lazar /* extended scheduling test */
227bc180dc5SAlexei Avshalom Lazar enum sigma_ese_type {
228bc180dc5SAlexei Avshalom Lazar 	ESE_CBAP,
229bc180dc5SAlexei Avshalom Lazar 	ESE_SP,
230bc180dc5SAlexei Avshalom Lazar };
231bc180dc5SAlexei Avshalom Lazar 
232bc180dc5SAlexei Avshalom Lazar struct sigma_ese_alloc {
233bc180dc5SAlexei Avshalom Lazar 	unsigned int percent_bi;
234bc180dc5SAlexei Avshalom Lazar 	enum sigma_ese_type type;
235bc180dc5SAlexei Avshalom Lazar 	unsigned int src_aid, dst_aid;
236bc180dc5SAlexei Avshalom Lazar };
237bc180dc5SAlexei Avshalom Lazar 
238bc180dc5SAlexei Avshalom Lazar #define ESE_BCAST_AID	255
239bc180dc5SAlexei Avshalom Lazar #define MAX_ESE_ALLOCS	4
240cd4e3c3eSJouni Malinen 
241cd4e3c3eSJouni Malinen #define NUM_AP_AC 4
242cd4e3c3eSJouni Malinen #define AP_AC_BE 0
243cd4e3c3eSJouni Malinen #define AP_AC_BK 1
244cd4e3c3eSJouni Malinen #define AP_AC_VI 2
245cd4e3c3eSJouni Malinen #define AP_AC_VO 3
246cd4e3c3eSJouni Malinen 
247b7b297f2SAdil Saeed Musthafa #define MAX_WLAN_TAGS 3
24869063725SAdil Saeed Musthafa #define MBO_MAX_PREF_BSSIDS 10
2494ec61bd9SAdil Saeed Musthafa #define MAX_FT_BSS_LIST 10
250b7b297f2SAdil Saeed Musthafa 
2518863ec7cSPeng Xu #define TRANSPORT_PROTO_TYPE_TCP 0x06
2528863ec7cSPeng Xu #define TRANSPORT_PROTO_TYPE_UDP 0x11
2538863ec7cSPeng Xu #define NAN_TRANSPORT_PORT_DEFAULT 7000
2548863ec7cSPeng Xu #define NAN_TRANSPORT_PROTOCOL_DEFAULT TRANSPORT_PROTO_TYPE_TCP
2558863ec7cSPeng Xu 
25657fa3d83SJouni Malinen enum value_not_set_enabled_disabled {
25757fa3d83SJouni Malinen 	VALUE_NOT_SET,
25857fa3d83SJouni Malinen 	VALUE_ENABLED,
25957fa3d83SJouni Malinen 	VALUE_DISABLED
26057fa3d83SJouni Malinen };
26157fa3d83SJouni Malinen 
2624b0cdee4SPradeep Reddy Potteti enum sec_ch_offset {
2634b0cdee4SPradeep Reddy Potteti 	SEC_CH_NO,
2644b0cdee4SPradeep Reddy Potteti 	SEC_CH_40ABOVE,
2654b0cdee4SPradeep Reddy Potteti 	SEC_CH_40BELOW
2664b0cdee4SPradeep Reddy Potteti };
2674b0cdee4SPradeep Reddy Potteti 
26869063725SAdil Saeed Musthafa struct mbo_pref_ap {
26969063725SAdil Saeed Musthafa 	int ap_ne_class;
27069063725SAdil Saeed Musthafa 	int ap_ne_op_ch;
27169063725SAdil Saeed Musthafa 	int ap_ne_pref;
27269063725SAdil Saeed Musthafa 	unsigned char mac_addr[ETH_ALEN];
27369063725SAdil Saeed Musthafa };
27469063725SAdil Saeed Musthafa 
275291d97daSPeng Xu #ifdef NL80211_SUPPORT
276291d97daSPeng Xu #define SOCK_BUF_SIZE (32 * 1024)
277291d97daSPeng Xu struct nl80211_ctx {
278291d97daSPeng Xu 	struct nl_sock *sock;
279291d97daSPeng Xu 	int netlink_familyid;
280291d97daSPeng Xu 	int nlctrl_familyid;
281291d97daSPeng Xu 	size_t sock_buf_size;
282291d97daSPeng Xu };
283291d97daSPeng Xu #endif /* NL80211_SUPPORT */
284291d97daSPeng Xu 
28533f700cfSAlexei Avshalom Lazar /* hardcoded long WSC IE values to force fragmentation */
28633f700cfSAlexei Avshalom Lazar #define WPS_LONG_DEVICE_NAME	"Qti1234511adtest1234567890123456"
28733f700cfSAlexei Avshalom Lazar #define WPS_LONG_MANUFACTURER	"Qti1234511adQti1234511adQti1234511adQti1234511adQti1234511ad"
28833f700cfSAlexei Avshalom Lazar #define WPS_LONG_MODEL_NAME	"Qti1234511adtest1234567890123456"
28933f700cfSAlexei Avshalom Lazar #define WPS_LONG_MODEL_NUMBER	"11111111111111111111111111111111"
29033f700cfSAlexei Avshalom Lazar #define WPS_LONG_SERIAL_NUMBER	"22222222222222222222222222222222"
29133f700cfSAlexei Avshalom Lazar 
292cd4e3c3eSJouni Malinen struct sigma_dut {
293cd4e3c3eSJouni Malinen 	int s; /* server TCP socket */
294cd4e3c3eSJouni Malinen 	int debug_level;
295cd4e3c3eSJouni Malinen 	int stdout_debug;
296cd4e3c3eSJouni Malinen 	struct sigma_cmd_handler *cmds;
297cd4e3c3eSJouni Malinen 
298cd4e3c3eSJouni Malinen 	/* Default timeout value (seconds) for commands */
299cd4e3c3eSJouni Malinen 	unsigned int default_timeout;
300cd4e3c3eSJouni Malinen 
301cd4e3c3eSJouni Malinen 	int next_streamid;
302cd4e3c3eSJouni Malinen 
303cd4e3c3eSJouni Malinen 	const char *bridge; /* bridge interface to use in AP mode */
304cd4e3c3eSJouni Malinen 
305cd4e3c3eSJouni Malinen 	enum sigma_mode {
306cd4e3c3eSJouni Malinen 		SIGMA_MODE_UNKNOWN,
307cd4e3c3eSJouni Malinen 		SIGMA_MODE_STATION,
308cd4e3c3eSJouni Malinen 		SIGMA_MODE_AP,
309cd4e3c3eSJouni Malinen 		SIGMA_MODE_SNIFFER
310cd4e3c3eSJouni Malinen 	} mode;
311cd4e3c3eSJouni Malinen 
312cd4e3c3eSJouni Malinen 	/*
313cd4e3c3eSJouni Malinen 	 * Local cached values to handle API that does not provide all the
314cd4e3c3eSJouni Malinen 	 * needed information with commands that actually trigger some
315cd4e3c3eSJouni Malinen 	 * operations.
316cd4e3c3eSJouni Malinen 	 */
317cd4e3c3eSJouni Malinen 	int listen_chn;
318cd4e3c3eSJouni Malinen 	int persistent;
319cd4e3c3eSJouni Malinen 	int intra_bss;
320cd4e3c3eSJouni Malinen 	int noa_duration;
321cd4e3c3eSJouni Malinen 	int noa_interval;
322cd4e3c3eSJouni Malinen 	int noa_count;
323cd4e3c3eSJouni Malinen 	enum wfa_cs_wps_method {
324cd4e3c3eSJouni Malinen 		WFA_CS_WPS_NOT_READY,
325cd4e3c3eSJouni Malinen 		WFA_CS_WPS_PBC,
326cd4e3c3eSJouni Malinen 		WFA_CS_WPS_PIN_DISPLAY,
327cd4e3c3eSJouni Malinen 		WFA_CS_WPS_PIN_LABEL,
328cd4e3c3eSJouni Malinen 		WFA_CS_WPS_PIN_KEYPAD
329cd4e3c3eSJouni Malinen 	} wps_method;
330cd4e3c3eSJouni Malinen 	char wps_pin[9];
331cd4e3c3eSJouni Malinen 
332cd4e3c3eSJouni Malinen 	struct wfa_cs_p2p_group *groups;
333cd4e3c3eSJouni Malinen 
334cd4e3c3eSJouni Malinen 	char infra_ssid[33];
335cd4e3c3eSJouni Malinen 	int infra_network_id;
336cd4e3c3eSJouni Malinen 
337cd4e3c3eSJouni Malinen 	enum p2p_mode {
338cd4e3c3eSJouni Malinen 		P2P_IDLE, P2P_DISCOVER, P2P_LISTEN, P2P_DISABLE
339cd4e3c3eSJouni Malinen 	} p2p_mode;
340cd4e3c3eSJouni Malinen 
341cd4e3c3eSJouni Malinen 	int go;
342cd4e3c3eSJouni Malinen 	int p2p_client;
343091e253dSPurushottam Kushwaha 	char *p2p_ifname;
344cd4e3c3eSJouni Malinen 
345cd4e3c3eSJouni Malinen 	int client_uapsd;
346cd4e3c3eSJouni Malinen 
347cd4e3c3eSJouni Malinen 	char arp_ipaddr[IP_ADDR_STR_LEN];
348cd4e3c3eSJouni Malinen 	char arp_ifname[IFNAMSIZ + 1];
349cd4e3c3eSJouni Malinen 
350cd4e3c3eSJouni Malinen 	enum sta_pmf {
351cd4e3c3eSJouni Malinen 		STA_PMF_DISABLED,
352cd4e3c3eSJouni Malinen 		STA_PMF_OPTIONAL,
353cd4e3c3eSJouni Malinen 		STA_PMF_REQUIRED
354cd4e3c3eSJouni Malinen 	} sta_pmf;
355cd4e3c3eSJouni Malinen 
356cd4e3c3eSJouni Malinen 	int no_tpk_expiration;
357cd4e3c3eSJouni Malinen 
358cd4e3c3eSJouni Malinen 	int er_oper_performed;
359cd4e3c3eSJouni Malinen 	char er_oper_bssid[20];
360cd4e3c3eSJouni Malinen 	int amsdu_size;
361cd4e3c3eSJouni Malinen 	int back_rcv_buf;
362cd4e3c3eSJouni Malinen 
363cd4e3c3eSJouni Malinen 	int testbed_flag_txsp;
364cd4e3c3eSJouni Malinen 	int testbed_flag_rxsp;
365cd4e3c3eSJouni Malinen 	int chwidth;
366cd4e3c3eSJouni Malinen 
367cd4e3c3eSJouni Malinen 	/* AP configuration */
368cd4e3c3eSJouni Malinen 	char ap_ssid[33];
369b7b297f2SAdil Saeed Musthafa 	/*
370b7b297f2SAdil Saeed Musthafa 	 * WLAN-TAG of 1 will use 'ap_' variables;
371b7b297f2SAdil Saeed Musthafa 	 * tag higher than 1 will use 'ap_tag_' variables.
372b7b297f2SAdil Saeed Musthafa 	 */
373b7b297f2SAdil Saeed Musthafa 	char ap_tag_ssid[MAX_WLAN_TAGS - 1][33];
374cd4e3c3eSJouni Malinen 	enum ap_mode {
375cd4e3c3eSJouni Malinen 		AP_11a,
376cd4e3c3eSJouni Malinen 		AP_11g,
377cd4e3c3eSJouni Malinen 		AP_11b,
378cd4e3c3eSJouni Malinen 		AP_11na,
379cd4e3c3eSJouni Malinen 		AP_11ng,
380cd4e3c3eSJouni Malinen 		AP_11ac,
3812712cc86SAlexei Avshalom Lazar 		AP_11ad,
382cd4e3c3eSJouni Malinen 		AP_inval
383cd4e3c3eSJouni Malinen 	} ap_mode;
384cd4e3c3eSJouni Malinen 	int ap_channel;
385cd4e3c3eSJouni Malinen 	int ap_rts;
386cd4e3c3eSJouni Malinen 	int ap_frgmnt;
387cd4e3c3eSJouni Malinen 	int ap_bcnint;
388cd4e3c3eSJouni Malinen 	struct qos_params {
389cd4e3c3eSJouni Malinen 		int ac;
390cd4e3c3eSJouni Malinen 		int cwmin;
391cd4e3c3eSJouni Malinen 		int cwmax;
392cd4e3c3eSJouni Malinen 		int aifs;
393cd4e3c3eSJouni Malinen 		int txop;
394cd4e3c3eSJouni Malinen 		int acm;
395cd4e3c3eSJouni Malinen 	} ap_qos[NUM_AP_AC], ap_sta_qos[NUM_AP_AC];
39657fa3d83SJouni Malinen 	enum value_not_set_enabled_disabled ap_noack;
39757fa3d83SJouni Malinen 	enum value_not_set_enabled_disabled ap_ampdu;
39857fa3d83SJouni Malinen 	enum value_not_set_enabled_disabled ap_amsdu;
39957fa3d83SJouni Malinen 	enum value_not_set_enabled_disabled ap_rx_amsdu;
400cd4e3c3eSJouni Malinen 	int ap_ampdu_exp;
40157fa3d83SJouni Malinen 	enum value_not_set_enabled_disabled ap_addba_reject;
402cd4e3c3eSJouni Malinen 	int ap_fixed_rate;
403cd4e3c3eSJouni Malinen 	int ap_mcs;
404cd4e3c3eSJouni Malinen 	int ap_rx_streams;
405cd4e3c3eSJouni Malinen 	int ap_tx_streams;
406cd4e3c3eSJouni Malinen 	unsigned int ap_vhtmcs_map;
40757fa3d83SJouni Malinen 	enum value_not_set_enabled_disabled ap_ldpc;
40857fa3d83SJouni Malinen 	enum value_not_set_enabled_disabled ap_sig_rts;
409cd4e3c3eSJouni Malinen 	enum ap_chwidth {
410cd4e3c3eSJouni Malinen 		AP_20,
411cd4e3c3eSJouni Malinen 		AP_40,
412cd4e3c3eSJouni Malinen 		AP_80,
413cd4e3c3eSJouni Malinen 		AP_160,
41463ab8483Spriyadharshini gowthaman 		AP_80_80,
415cd4e3c3eSJouni Malinen 		AP_AUTO
416cd4e3c3eSJouni Malinen 	} ap_chwidth;
417bf8af292SPradeep Reddy Potteti 	enum ap_chwidth default_11na_ap_chwidth;
418bf8af292SPradeep Reddy Potteti 	enum ap_chwidth default_11ng_ap_chwidth;
419cd4e3c3eSJouni Malinen 	int ap_tx_stbc;
42057fa3d83SJouni Malinen 	enum value_not_set_enabled_disabled ap_dyn_bw_sig;
421cd4e3c3eSJouni Malinen 	int ap_sgi80;
422cd4e3c3eSJouni Malinen 	int ap_p2p_mgmt;
423cd4e3c3eSJouni Malinen 	enum ap_key_mgmt {
424cd4e3c3eSJouni Malinen 		AP_OPEN,
425cd4e3c3eSJouni Malinen 		AP_WPA2_PSK,
426cd4e3c3eSJouni Malinen 		AP_WPA_PSK,
427cd4e3c3eSJouni Malinen 		AP_WPA2_EAP,
428cd4e3c3eSJouni Malinen 		AP_WPA_EAP,
429cd4e3c3eSJouni Malinen 		AP_WPA2_EAP_MIXED,
43030824df7SJouni Malinen 		AP_WPA2_PSK_MIXED,
43130824df7SJouni Malinen 		AP_WPA2_SAE,
43230824df7SJouni Malinen 		AP_WPA2_PSK_SAE,
433ad395a20SJouni Malinen 		AP_SUITEB,
434147b3c39SJouni Malinen 		AP_WPA2_OWE,
4354cf699f1SJouni Malinen 		AP_WPA2_EAP_OSEN,
4366be21c87SJouni Malinen 		AP_WPA2_FT_EAP,
4376be21c87SJouni Malinen 		AP_WPA2_FT_PSK,
4386be21c87SJouni Malinen 		AP_WPA2_EAP_SHA256,
4396be21c87SJouni Malinen 		AP_WPA2_PSK_SHA256,
4406be21c87SJouni Malinen 		AP_WPA2_ENT_FT_EAP,
441c2b9121eSJouni Malinen 		AP_OSEN,
442cd4e3c3eSJouni Malinen 	} ap_key_mgmt;
443b7b297f2SAdil Saeed Musthafa 	enum ap_tag_key_mgmt {
444cd4e3c3eSJouni Malinen 		AP2_OPEN,
445b7b297f2SAdil Saeed Musthafa 		AP2_OSEN,
446353ba8b1SJouni Malinen 		AP2_WPA2_PSK,
447353ba8b1SJouni Malinen 		AP2_WPA2_OWE,
448b7b297f2SAdil Saeed Musthafa 	} ap_tag_key_mgmt[MAX_WLAN_TAGS - 1];
449cd4e3c3eSJouni Malinen 	int ap_add_sha256;
450de81f395Spriyadharshini gowthaman 	int ap_add_sha384;
45124dc7e40SSarvepalli, Rajesh Babu 	int ap_rsn_preauth;
452cd4e3c3eSJouni Malinen 	enum ap_pmf {
453cd4e3c3eSJouni Malinen 		AP_PMF_DISABLED,
454cd4e3c3eSJouni Malinen 		AP_PMF_OPTIONAL,
455cd4e3c3eSJouni Malinen 		AP_PMF_REQUIRED
456cd4e3c3eSJouni Malinen 	} ap_pmf;
457cd4e3c3eSJouni Malinen 	enum ap_cipher {
4582ba24498SJouni Malinen 		AP_NO_GROUP_CIPHER_SET,
459cd4e3c3eSJouni Malinen 		AP_CCMP,
460cd4e3c3eSJouni Malinen 		AP_TKIP,
461cd4e3c3eSJouni Malinen 		AP_WEP,
462cd4e3c3eSJouni Malinen 		AP_PLAIN,
463ad395a20SJouni Malinen 		AP_CCMP_TKIP,
464ad395a20SJouni Malinen 		AP_GCMP_256,
4653d633daeSJouni Malinen 		AP_GCMP_128,
4663d633daeSJouni Malinen 		AP_CCMP_256,
467d538c78eSJouni Malinen 		AP_CCMP_128_GCMP_256,
4682ba24498SJouni Malinen 	} ap_cipher, ap_group_cipher;
4693d633daeSJouni Malinen 	enum ap_group_mgmt_cipher {
4703d633daeSJouni Malinen 		AP_NO_GROUP_MGMT_CIPHER_SET,
4713d633daeSJouni Malinen 		AP_BIP_GMAC_256,
4723d633daeSJouni Malinen 		AP_BIP_CMAC_256,
4733d633daeSJouni Malinen 		AP_BIP_GMAC_128,
4743d633daeSJouni Malinen 		AP_BIP_CMAC_128,
4753d633daeSJouni Malinen 	} ap_group_mgmt_cipher;
476ed670f4cSJouni Malinen 	char *ap_sae_groups;
4772f524ce8SJouni Malinen 	int sae_anti_clogging_threshold;
478b347db0fSJouni Malinen 	int sae_reflection;
4792126f422SJouni Malinen 	char ap_passphrase[101];
48063370625SJouni Malinen 	char ap_psk[65];
481cd4e3c3eSJouni Malinen 	char ap_wepkey[27];
482cd4e3c3eSJouni Malinen 	char ap_radius_ipaddr[20];
483cd4e3c3eSJouni Malinen 	int ap_radius_port;
484cd4e3c3eSJouni Malinen 	char ap_radius_password[200];
485cd4e3c3eSJouni Malinen 	char ap2_radius_ipaddr[20];
486cd4e3c3eSJouni Malinen 	int ap2_radius_port;
487cd4e3c3eSJouni Malinen 	char ap2_radius_password[200];
488cd4e3c3eSJouni Malinen 	int ap_tdls_prohibit;
489cd4e3c3eSJouni Malinen 	int ap_tdls_prohibit_chswitch;
490cd4e3c3eSJouni Malinen 	int ap_hs2;
491cd4e3c3eSJouni Malinen 	int ap_dgaf_disable;
492cd4e3c3eSJouni Malinen 	int ap_p2p_cross_connect;
493cd4e3c3eSJouni Malinen 	int ap_oper_name;
494cd4e3c3eSJouni Malinen 	int ap_wan_metrics;
495cd4e3c3eSJouni Malinen 	int ap_conn_capab;
496cd4e3c3eSJouni Malinen 	int ap_oper_class;
497cd4e3c3eSJouni Malinen 
498cd4e3c3eSJouni Malinen 	int ap_interworking;
499cd4e3c3eSJouni Malinen 	int ap_access_net_type;
500cd4e3c3eSJouni Malinen 	int ap_internet;
501cd4e3c3eSJouni Malinen 	int ap_venue_group;
502cd4e3c3eSJouni Malinen 	int ap_venue_type;
503cd4e3c3eSJouni Malinen 	char ap_hessid[20];
504cd4e3c3eSJouni Malinen 	char ap_roaming_cons[100];
505cd4e3c3eSJouni Malinen 	int ap_venue_name;
506cd4e3c3eSJouni Malinen 	int ap_net_auth_type;
507cd4e3c3eSJouni Malinen 	int ap_nai_realm_list;
508cd4e3c3eSJouni Malinen 	char ap_domain_name_list[1000];
509cd4e3c3eSJouni Malinen 	int ap_ip_addr_type_avail;
510cd4e3c3eSJouni Malinen 	char ap_plmn_mcc[10][4];
511cd4e3c3eSJouni Malinen 	char ap_plmn_mnc[10][4];
512cd4e3c3eSJouni Malinen 	int ap_gas_cb_delay;
513cd4e3c3eSJouni Malinen 	int ap_proxy_arp;
514cd4e3c3eSJouni Malinen 	int ap2_proxy_arp;
515dbbc2c48SJouni Malinen 	int ap2_osu;
516cd4e3c3eSJouni Malinen 	int ap_l2tif;
517cd4e3c3eSJouni Malinen 	int ap_anqpserver;
518cd4e3c3eSJouni Malinen 	int ap_anqpserver_on;
519cd4e3c3eSJouni Malinen 	int ap_osu_provider_list;
52093a837f9SJouni Malinen 	int ap_osu_provider_nai_list;
521cd4e3c3eSJouni Malinen 	int ap_qos_map_set;
522cd4e3c3eSJouni Malinen 	int ap_bss_load;
523cd4e3c3eSJouni Malinen 	char ap_osu_server_uri[10][256];
524cd4e3c3eSJouni Malinen 	char ap_osu_ssid[33];
525cd4e3c3eSJouni Malinen 	int ap_osu_method[10];
526cd4e3c3eSJouni Malinen 	int ap_osu_icon_tag;
52754a89b08SJouni Malinen 	int ap_venue_url;
528f7ff42b7SJouni Malinen 	int ap_advice_of_charge;
529ac10453cSJouni Malinen 	int ap_oper_icon_metadata;
530ac367141SJouni Malinen 	int ap_tnc_file_name;
531ac367141SJouni Malinen 	unsigned int ap_tnc_time_stamp;
532cd4e3c3eSJouni Malinen 
533cd4e3c3eSJouni Malinen 	int ap_fake_pkhash;
534cd4e3c3eSJouni Malinen 	int ap_disable_protection;
535cd4e3c3eSJouni Malinen 	int ap_allow_vht_wep;
536cd4e3c3eSJouni Malinen 	int ap_allow_vht_tkip;
537cd4e3c3eSJouni Malinen 
538cd4e3c3eSJouni Malinen 	enum ap_vht_chwidth {
539cd4e3c3eSJouni Malinen 		AP_20_40_VHT_OPER_CHWIDTH,
540cd4e3c3eSJouni Malinen 		AP_80_VHT_OPER_CHWIDTH,
541cd4e3c3eSJouni Malinen 		AP_160_VHT_OPER_CHWIDTH
542cd4e3c3eSJouni Malinen 	} ap_vht_chwidth;
543cd4e3c3eSJouni Malinen 	int ap_txBF;
544cd4e3c3eSJouni Malinen 	int ap_mu_txBF;
545fba27db5SPradeep Reddy POTTETI 	enum ap_regulatory_mode {
546fba27db5SPradeep Reddy POTTETI 		AP_80211D_MODE_DISABLED,
547fba27db5SPradeep Reddy POTTETI 		AP_80211D_MODE_ENABLED,
548fba27db5SPradeep Reddy POTTETI 	} ap_regulatory_mode;
549fba27db5SPradeep Reddy POTTETI 	enum ap_dfs_mode {
550fba27db5SPradeep Reddy POTTETI 		AP_DFS_MODE_DISABLED,
551fba27db5SPradeep Reddy POTTETI 		AP_DFS_MODE_ENABLED,
552fba27db5SPradeep Reddy POTTETI 	} ap_dfs_mode;
553264d544aSpriyadharshini gowthaman 	int ap_ndpa_frame;
554cd4e3c3eSJouni Malinen 
5558e26ff4aSpriyadharshini gowthaman 	int ap_lci;
5568e26ff4aSpriyadharshini gowthaman 	char ap_val_lci[33];
557c2357bdcSpriyadharshini gowthaman 	char ap_infoz[17];
5588e26ff4aSpriyadharshini gowthaman 	int ap_lcr;
5598e26ff4aSpriyadharshini gowthaman 	char ap_val_lcr[400];
5608e26ff4aSpriyadharshini gowthaman 	int ap_rrm;
5618e26ff4aSpriyadharshini gowthaman 	int ap_rtt;
5628e26ff4aSpriyadharshini gowthaman 	int ap_neighap; /* number of configured neighbor APs */
5638e26ff4aSpriyadharshini gowthaman 	unsigned char ap_val_neighap[3][6];
5648e26ff4aSpriyadharshini gowthaman 	int ap_opchannel; /* number of oper channels */
5658e26ff4aSpriyadharshini gowthaman 	int ap_val_opchannel[3];
5668e26ff4aSpriyadharshini gowthaman 	int ap_scan;
567c2357bdcSpriyadharshini gowthaman 	int ap_fqdn_held;
568c2357bdcSpriyadharshini gowthaman 	int ap_fqdn_supl;
569a27b5b6eSpriyadharshini gowthaman 	int ap_msnt_type;
570a27b5b6eSpriyadharshini gowthaman 
571b4e05fc1Spriyadharshini gowthaman 	int ap_mbo;
572b4e05fc1Spriyadharshini gowthaman 	int ap_ne_class;
573b4e05fc1Spriyadharshini gowthaman 	int ap_ne_op_ch;
574b4e05fc1Spriyadharshini gowthaman 	int ap_set_bssidpref;
575b4e05fc1Spriyadharshini gowthaman 	int ap_btmreq_disassoc_imnt;
576b4e05fc1Spriyadharshini gowthaman 	int ap_btmreq_term_bit;
5777d9ae389SAdil Saeed Musthafa 	int ap_disassoc_timer;
5787d9ae389SAdil Saeed Musthafa 	int ap_btmreq_bss_term_dur;
579604c8261SAdil Saeed Musthafa 	enum reg_domain {
580604c8261SAdil Saeed Musthafa 		REG_DOMAIN_NOT_SET,
581604c8261SAdil Saeed Musthafa 		REG_DOMAIN_LOCAL,
582604c8261SAdil Saeed Musthafa 		REG_DOMAIN_GLOBAL
583604c8261SAdil Saeed Musthafa 	} ap_reg_domain;
584cf752fa7SAdil Saeed Musthafa 	char ap_mobility_domain[10];
585023108aeSAdil Saeed Musthafa 	unsigned char ap_cell_cap_pref;
5864ec61bd9SAdil Saeed Musthafa 	int ap_ft_oa;
5874ec61bd9SAdil Saeed Musthafa 	int ap_name;
58809d613e1Spriyadharshini gowthaman 	int ap_interface_5g;
58909d613e1Spriyadharshini gowthaman 	int ap_interface_2g;
590776562e2Spriyadharshini gowthaman 	int ap_assoc_delay;
59194062b58Spriyadharshini gowthaman 	int ap_btmreq_bss_term_tsf;
59200798a21Spriyadharshini gowthaman 	int ap_fils_dscv_int;
59300798a21Spriyadharshini gowthaman 	int ap_nairealm_int;
59400798a21Spriyadharshini gowthaman 	char ap_nairealm[33];
59500798a21Spriyadharshini gowthaman 	int ap_blechanutil;
59600798a21Spriyadharshini gowthaman 	int ap_ble_admit_cap;
59700798a21Spriyadharshini gowthaman 	int ap_datappdudura;
59800798a21Spriyadharshini gowthaman 	int ap_airtimefract;
59900798a21Spriyadharshini gowthaman 	char ap_dhcpserv_ipaddr[20];
60000798a21Spriyadharshini gowthaman 	int ap_dhcp_stop;
60100798a21Spriyadharshini gowthaman 	int ap_bawinsize;
60200798a21Spriyadharshini gowthaman 	int ap_blestacnt;
603cb22e43aSpriyadharshini gowthaman 	int ap_ul_availcap;
604cb22e43aSpriyadharshini gowthaman 	int ap_dl_availcap;
605de81f395Spriyadharshini gowthaman 	int ap_akm;
606de81f395Spriyadharshini gowthaman 	int ap_pmksa;
607de81f395Spriyadharshini gowthaman 	int ap_pmksa_caching;
60863ab8483Spriyadharshini gowthaman 	int ap_80plus80;
6099149afc1Spriyadharshini gowthaman 	int ap_oper_chn;
6104ec61bd9SAdil Saeed Musthafa 
61169063725SAdil Saeed Musthafa 	struct mbo_pref_ap mbo_pref_aps[MBO_MAX_PREF_BSSIDS];
61269063725SAdil Saeed Musthafa 	struct mbo_pref_ap mbo_self_ap_tuple;
61369063725SAdil Saeed Musthafa 	int mbo_pref_ap_cnt;
6144ec61bd9SAdil Saeed Musthafa 	unsigned char ft_bss_mac_list[MAX_FT_BSS_LIST][ETH_ALEN];
6154ec61bd9SAdil Saeed Musthafa 	int ft_bss_mac_cnt;
616b4e05fc1Spriyadharshini gowthaman 
61700798a21Spriyadharshini gowthaman 	enum value_not_set_enabled_disabled ap_oce;
61800798a21Spriyadharshini gowthaman 	enum value_not_set_enabled_disabled ap_filsdscv;
61900798a21Spriyadharshini gowthaman 	enum value_not_set_enabled_disabled ap_filshlp;
62000798a21Spriyadharshini gowthaman 	enum value_not_set_enabled_disabled ap_broadcast_ssid;
62100798a21Spriyadharshini gowthaman 	enum value_not_set_enabled_disabled ap_rnr;
62200798a21Spriyadharshini gowthaman 	enum value_not_set_enabled_disabled ap_esp;
62300798a21Spriyadharshini gowthaman 
624350f1913Spriyadharshini gowthaman 	enum ppdu {
625350f1913Spriyadharshini gowthaman 		PPDU_NOT_SET,
626350f1913Spriyadharshini gowthaman 		PPDU_MU,
627350f1913Spriyadharshini gowthaman 		PPDU_SU,
628350f1913Spriyadharshini gowthaman 		PPDU_ER,
629350f1913Spriyadharshini gowthaman 		PPDU_TB,
630350f1913Spriyadharshini gowthaman 	} ap_he_ppdu;
631350f1913Spriyadharshini gowthaman 
632bc180dc5SAlexei Avshalom Lazar 	struct sigma_ese_alloc ap_ese_allocs[MAX_ESE_ALLOCS];
633bc180dc5SAlexei Avshalom Lazar 	int ap_num_ese_allocs;
634bc180dc5SAlexei Avshalom Lazar 
635cd4e3c3eSJouni Malinen 	const char *hostapd_debug_log;
6363e8267ecSAlexei Avshalom Lazar 	const char *wpa_supplicant_debug_log;
637cd4e3c3eSJouni Malinen 
638cd4e3c3eSJouni Malinen #ifdef CONFIG_TRAFFIC_AGENT
639cd4e3c3eSJouni Malinen 	/* Traffic Agent */
640cd4e3c3eSJouni Malinen 	struct sigma_stream streams[MAX_SIGMA_STREAMS];
641cd4e3c3eSJouni Malinen 	int stream_id;
642cd4e3c3eSJouni Malinen 	int num_streams;
643cd4e3c3eSJouni Malinen 	pthread_t thr;
644cd4e3c3eSJouni Malinen #endif /* CONFIG_TRAFFIC_AGENT */
645cd4e3c3eSJouni Malinen 
646c2493f83SJouni Malinen 	unsigned int throughput_pktsize; /* If non-zero, override pktsize for
647c2493f83SJouni Malinen 					  * throughput tests */
648cd4e3c3eSJouni Malinen 	int no_timestamps;
649cd4e3c3eSJouni Malinen 
650cd4e3c3eSJouni Malinen 	const char *sniffer_ifname;
651cd4e3c3eSJouni Malinen 	const char *set_macaddr;
652cd4e3c3eSJouni Malinen 	int tmp_mac_addr;
653cd4e3c3eSJouni Malinen 	int ap_is_dual;
654cd4e3c3eSJouni Malinen 	enum ap_mode ap_mode_1;
655cd4e3c3eSJouni Malinen 	enum ap_chwidth ap_chwidth_1;
656cd4e3c3eSJouni Malinen 	int ap_channel_1;
657cd4e3c3eSJouni Malinen 	char ap_countrycode[3];
658cd4e3c3eSJouni Malinen 
659cd4e3c3eSJouni Malinen 	int ap_wpsnfc;
660cd4e3c3eSJouni Malinen 
6610d3db632SPradeep Reddy POTTETI 	enum ap_wme {
6620d3db632SPradeep Reddy POTTETI 		AP_WME_OFF,
6630d3db632SPradeep Reddy POTTETI 		AP_WME_ON,
6640d3db632SPradeep Reddy POTTETI 	} ap_wme;
6650d3db632SPradeep Reddy POTTETI 
66602e3b826SMohammed Shafi Shajakhan 	enum ap_wmmps {
66702e3b826SMohammed Shafi Shajakhan 		AP_WMMPS_OFF,
66802e3b826SMohammed Shafi Shajakhan 		AP_WMMPS_ON,
66902e3b826SMohammed Shafi Shajakhan 	} ap_wmmps;
67002e3b826SMohammed Shafi Shajakhan 
6714b0cdee4SPradeep Reddy Potteti 	enum sec_ch_offset ap_chwidth_offset;
6724b0cdee4SPradeep Reddy Potteti 
673cd4e3c3eSJouni Malinen #ifdef CONFIG_SNIFFER
674cd4e3c3eSJouni Malinen 	pid_t sniffer_pid;
675cd4e3c3eSJouni Malinen 	char sniffer_filename[200];
676cd4e3c3eSJouni Malinen #endif /* CONFIG_SNIFFER */
677cd4e3c3eSJouni Malinen 
678cd4e3c3eSJouni Malinen 	int last_set_ip_config_ipv6;
6799c381f59SAmarnath Hullur Subramanyam #ifdef MIRACAST
6809c381f59SAmarnath Hullur Subramanyam 	pthread_t rtsp_thread_handle;
6819c381f59SAmarnath Hullur Subramanyam 	int wfd_device_type; /* 0 for source, 1 for sink */
6829c381f59SAmarnath Hullur Subramanyam 	char peer_mac_address[32];
6839c381f59SAmarnath Hullur Subramanyam 	void *miracast_lib;
6849c381f59SAmarnath Hullur Subramanyam 	const char *miracast_lib_path;
6859c381f59SAmarnath Hullur Subramanyam 	char mdns_instance_name[64];
6869c381f59SAmarnath Hullur Subramanyam #endif /* MIRACAST */
687cd4e3c3eSJouni Malinen 
688cd4e3c3eSJouni Malinen 	int tid_to_handle[8]; /* Mapping of TID to handle */
689cd4e3c3eSJouni Malinen 	int dialog_token; /* Used for generating unique handle for an addTs */
690cd4e3c3eSJouni Malinen 
691cd4e3c3eSJouni Malinen 	enum sigma_program {
692cd4e3c3eSJouni Malinen 		PROGRAM_UNKNOWN = 0,
693cd4e3c3eSJouni Malinen 		PROGRAM_TDLS,
694cd4e3c3eSJouni Malinen 		PROGRAM_HS2,
695cd4e3c3eSJouni Malinen 		PROGRAM_HS2_R2,
696cd4e3c3eSJouni Malinen 		PROGRAM_WFD,
697659a34c4SAmarnath Hullur Subramanyam 		PROGRAM_DISPLAYR2,
698cd4e3c3eSJouni Malinen 		PROGRAM_PMF,
699cd4e3c3eSJouni Malinen 		PROGRAM_WPS,
700cd4e3c3eSJouni Malinen 		PROGRAM_60GHZ,
701cd4e3c3eSJouni Malinen 		PROGRAM_HT,
702cd4e3c3eSJouni Malinen 		PROGRAM_VHT,
703cd4e3c3eSJouni Malinen 		PROGRAM_NAN,
70412dd4145Spriyadharshini gowthaman 		PROGRAM_LOC,
70533ea287aSAdil Saeed Musthafa 		PROGRAM_MBO,
7065c3813a7SJouni Malinen 		PROGRAM_IOTLP,
7075c3813a7SJouni Malinen 		PROGRAM_DPP,
708a2cb567bSAnkita Bajaj 		PROGRAM_OCE,
7090e209fccSpriyadharshini gowthaman 		PROGRAM_WPA3,
7108f9c8687SAmarnath Hullur Subramanyam 		PROGRAM_HE,
711ba630459SJouni Malinen 		PROGRAM_HS2_R3,
712cd4e3c3eSJouni Malinen 	} program;
713cd4e3c3eSJouni Malinen 
714cd4e3c3eSJouni Malinen 	enum device_type {
715cd4e3c3eSJouni Malinen 		device_type_unknown,
716cd4e3c3eSJouni Malinen 		AP_unknown,
717cd4e3c3eSJouni Malinen 		AP_testbed,
718cd4e3c3eSJouni Malinen 		AP_dut,
719cd4e3c3eSJouni Malinen 		STA_unknown,
720cd4e3c3eSJouni Malinen 		STA_testbed,
721cd4e3c3eSJouni Malinen 		STA_dut
722cd4e3c3eSJouni Malinen 	} device_type;
723cd4e3c3eSJouni Malinen 
724cd4e3c3eSJouni Malinen 	enum {
725cd4e3c3eSJouni Malinen 		DEVROLE_UNKNOWN = 0,
726cd4e3c3eSJouni Malinen 		DEVROLE_STA,
727cd4e3c3eSJouni Malinen 		DEVROLE_PCP,
7282712cc86SAlexei Avshalom Lazar 		DEVROLE_STA_CFON,
7292712cc86SAlexei Avshalom Lazar 		DEVROLE_AP,
730cd4e3c3eSJouni Malinen 	} dev_role;
731cd4e3c3eSJouni Malinen 
73233f700cfSAlexei Avshalom Lazar 	enum wps_band {
73333f700cfSAlexei Avshalom Lazar 		WPS_BAND_NON_60G = 0,
73433f700cfSAlexei Avshalom Lazar 		WPS_BAND_60G,
73533f700cfSAlexei Avshalom Lazar 	} band;
73633f700cfSAlexei Avshalom Lazar 
737eee9ab0aSAlexei Avshalom Lazar 	int wps_disable; /* Used for 60G to disable PCP from sending WPS IE */
73833f700cfSAlexei Avshalom Lazar 	int wsc_fragment; /* simulate WSC IE fragmentation */
739b094bf08SAlexei Avshalom Lazar 	enum {
740b094bf08SAlexei Avshalom Lazar 		/* no change */
741b094bf08SAlexei Avshalom Lazar 		FORCE_RSN_IE_NONE = 0,
742b094bf08SAlexei Avshalom Lazar 		/* if exists, remove and clear privacy bit */
743b094bf08SAlexei Avshalom Lazar 		FORCE_RSN_IE_REMOVE,
744b094bf08SAlexei Avshalom Lazar 		/* if not exists, add and set privacy bit */
745b094bf08SAlexei Avshalom Lazar 		FORCE_RSN_IE_ADD,
746b094bf08SAlexei Avshalom Lazar 	} force_rsn_ie; /* override RSN IE in association request */
74733f700cfSAlexei Avshalom Lazar 
748cd4e3c3eSJouni Malinen 	const char *version;
749cd4e3c3eSJouni Malinen 	int no_ip_addr_set;
750cd4e3c3eSJouni Malinen 	int sta_channel;
751cd4e3c3eSJouni Malinen 
752cd4e3c3eSJouni Malinen 	const char *summary_log;
753cd4e3c3eSJouni Malinen 	const char *hostapd_entropy_log;
754cd4e3c3eSJouni Malinen 
755cd4e3c3eSJouni Malinen 	int iface_down_on_reset;
756cd4e3c3eSJouni Malinen 	int write_stats; /* traffic stream e2e*.txt files */
75773d7af09SBala Krishna Bhamidipati 	int sim_no_username; /* do not set SIM username to use real SIM */
7585db3b104SJouni Malinen 
7595db3b104SJouni Malinen 	const char *vendor_name; /* device_get_info vendor override */
7605db3b104SJouni Malinen 	const char *model_name; /* device_get_info model override */
7615db3b104SJouni Malinen 	const char *version_name; /* device_get_info version override */
7627d37f411SRakesh Sunki 
76314cfcd25SRakesh Sunki 	int ndp_enable; /* Flag which is set once the NDP is setup */
76414cfcd25SRakesh Sunki 
7658863ec7cSPeng Xu 	int ndpe; /* Flag indicating NDPE is supported */
7668863ec7cSPeng Xu 	u16 trans_port; /* transport port number for TCP/UDP connection */
7678863ec7cSPeng Xu 	u8 trans_proto; /* transport protocol, 0x06: TCP, 0x11: UDP */
7688863ec7cSPeng Xu 
7697d37f411SRakesh Sunki 	/* Length of nan_pmk in octets */
7707d37f411SRakesh Sunki 	u8 nan_pmk_len;
7717d37f411SRakesh Sunki 
7727d37f411SRakesh Sunki 	/*
7737d37f411SRakesh Sunki 	 * PMK: Info is optional in Discovery phase. PMK info can
7747d37f411SRakesh Sunki 	 *  be passed during the NDP session.
7757d37f411SRakesh Sunki 	 */
7767d37f411SRakesh Sunki 	u8 nan_pmk[32];
77733ea287aSAdil Saeed Musthafa 
77833ea287aSAdil Saeed Musthafa 	enum value_not_set_enabled_disabled wnm_bss_max_feature;
77933ea287aSAdil Saeed Musthafa 	int wnm_bss_max_idle_time;
78033ea287aSAdil Saeed Musthafa 	enum value_not_set_enabled_disabled wnm_bss_max_protection;
7810040258bSAshwini Patil 
7820040258bSAshwini Patil 	char *non_pref_ch_list; /* MBO: non-preferred channel report */
7835acd738cSAshwini Patil 	char *btm_query_cand_list; /* Candidate list for BTM Query */
7843c367e8dSJouni Malinen 
7856814313dSJouni Malinen 	char *sae_commit_override;
7863c367e8dSJouni Malinen 	char *rsne_override;
787d6bf1b4aSJouni Malinen 	const char *hostapd_bin;
788d6bf1b4aSJouni Malinen 	int use_hostapd_pid_file;
789d6bf1b4aSJouni Malinen 	const char *hostapd_ifname;
790d86e5828SJouni Malinen 	int hostapd_running;
791d86e5828SJouni Malinen 
792b1dd21f8SJouni Malinen 	char *dpp_peer_uri;
793d86e5828SJouni Malinen 	int dpp_local_bootstrap;
794d86e5828SJouni Malinen 	int dpp_conf_id;
7951bde7947SAnkita Bajaj 
7961bde7947SAnkita Bajaj 	u8 fils_hlp;
7971bde7947SAnkita Bajaj 	pthread_t hlp_thread;
798291d97daSPeng Xu 
799291d97daSPeng Xu #ifdef NL80211_SUPPORT
800291d97daSPeng Xu 	struct nl80211_ctx *nl_ctx;
801076081f1SSunil Dutt 	int config_rsnie;
802291d97daSPeng Xu #endif /* NL80211_SUPPORT */
803ac6c511cSArif Hussain 
804ac6c511cSArif Hussain 	int sta_nss;
8052052daa2SAnurag Das 
8062052daa2SAnurag Das #ifdef ANDROID
8072052daa2SAnurag Das 	int nanservicediscoveryinprogress;
8082052daa2SAnurag Das #endif /* ANDROID */
809cd4e3c3eSJouni Malinen };
810cd4e3c3eSJouni Malinen 
811cd4e3c3eSJouni Malinen 
812cd4e3c3eSJouni Malinen enum sigma_dut_print_level {
813cd4e3c3eSJouni Malinen 	DUT_MSG_DEBUG, DUT_MSG_INFO, DUT_MSG_ERROR
814cd4e3c3eSJouni Malinen };
815cd4e3c3eSJouni Malinen 
816cd4e3c3eSJouni Malinen void sigma_dut_print(struct sigma_dut *dut, int level, const char *fmt, ...)
817cd4e3c3eSJouni Malinen PRINTF_FORMAT(3, 4);
818cd4e3c3eSJouni Malinen 
819cd4e3c3eSJouni Malinen void sigma_dut_summary(struct sigma_dut *dut, const char *fmt, ...)
820cd4e3c3eSJouni Malinen PRINTF_FORMAT(2, 3);
821cd4e3c3eSJouni Malinen 
822cd4e3c3eSJouni Malinen 
823cd4e3c3eSJouni Malinen enum sigma_status {
824cd4e3c3eSJouni Malinen 	SIGMA_RUNNING, SIGMA_INVALID, SIGMA_ERROR, SIGMA_COMPLETE
825cd4e3c3eSJouni Malinen };
826cd4e3c3eSJouni Malinen 
827cd4e3c3eSJouni Malinen void send_resp(struct sigma_dut *dut, struct sigma_conn *conn,
82876401f50SJouni Malinen 	       enum sigma_status status, const char *buf);
829cd4e3c3eSJouni Malinen 
830cd4e3c3eSJouni Malinen const char * get_param(struct sigma_cmd *cmd, const char *name);
831bc180dc5SAlexei Avshalom Lazar const char * get_param_indexed(struct sigma_cmd *cmd, const char *name,
832bc180dc5SAlexei Avshalom Lazar 			       int index);
833cd4e3c3eSJouni Malinen 
834cd4e3c3eSJouni Malinen int sigma_dut_reg_cmd(const char *cmd,
835cd4e3c3eSJouni Malinen 		      int (*validate)(struct sigma_cmd *cmd),
836*26a5b76dSJouni Malinen 		      enum sigma_cmd_result (*process)(struct sigma_dut *dut,
837cd4e3c3eSJouni Malinen 						       struct sigma_conn *conn,
838cd4e3c3eSJouni Malinen 						       struct sigma_cmd *cmd));
839cd4e3c3eSJouni Malinen 
840cd4e3c3eSJouni Malinen void sigma_dut_register_cmds(void);
841cd4e3c3eSJouni Malinen 
842cd4e3c3eSJouni Malinen int cmd_sta_send_frame(struct sigma_dut *dut, struct sigma_conn *conn,
843cd4e3c3eSJouni Malinen 		       struct sigma_cmd *cmd);
844cd4e3c3eSJouni Malinen int cmd_sta_set_parameter(struct sigma_dut *dut, struct sigma_conn *conn,
845cd4e3c3eSJouni Malinen 			  struct sigma_cmd *cmd);
846cd4e3c3eSJouni Malinen int cmd_ap_send_frame(struct sigma_dut *dut, struct sigma_conn *conn,
847cd4e3c3eSJouni Malinen 		      struct sigma_cmd *cmd);
848cd4e3c3eSJouni Malinen int cmd_wlantest_send_frame(struct sigma_dut *dut, struct sigma_conn *conn,
849cd4e3c3eSJouni Malinen 			    struct sigma_cmd *cmd);
8500d5825b5SAnkita Bajaj int sta_cfon_set_wireless(struct sigma_dut *dut, struct sigma_conn *conn,
8510d5825b5SAnkita Bajaj 			  struct sigma_cmd *cmd);
8520d5825b5SAnkita Bajaj int sta_cfon_get_mac_address(struct sigma_dut *dut, struct sigma_conn *conn,
8530d5825b5SAnkita Bajaj 			     struct sigma_cmd *cmd);
8540d5825b5SAnkita Bajaj int sta_cfon_reset_default(struct sigma_dut *dut, struct sigma_conn *conn,
8550d5825b5SAnkita Bajaj 			   struct sigma_cmd *cmd);
856cd4e3c3eSJouni Malinen 
857cd4e3c3eSJouni Malinen enum driver_type {
858cd4e3c3eSJouni Malinen 	DRIVER_NOT_SET,
859cd4e3c3eSJouni Malinen 	DRIVER_ATHEROS,
860cd4e3c3eSJouni Malinen 	DRIVER_WCN,
861cd4e3c3eSJouni Malinen 	DRIVER_MAC80211,
862cd4e3c3eSJouni Malinen 	DRIVER_AR6003,
863cd4e3c3eSJouni Malinen 	DRIVER_WIL6210,
864cd4e3c3eSJouni Malinen 	DRIVER_QNXNTO,
865b692f107SSreelakshmi Konamki 	DRIVER_OPENWRT,
866b692f107SSreelakshmi Konamki 	DRIVER_LINUX_WCN,
867cd4e3c3eSJouni Malinen };
868cd4e3c3eSJouni Malinen 
869cd4e3c3eSJouni Malinen enum openwrt_driver_type {
870cd4e3c3eSJouni Malinen 	OPENWRT_DRIVER_NOT_SET,
871cd4e3c3eSJouni Malinen 	OPENWRT_DRIVER_ATHEROS
872cd4e3c3eSJouni Malinen };
873cd4e3c3eSJouni Malinen 
874cd4e3c3eSJouni Malinen #define DRIVER_NAME_60G "wil6210"
875cd4e3c3eSJouni Malinen 
876cd4e3c3eSJouni Malinen int set_wifi_chip(const char *chip_type);
877cd4e3c3eSJouni Malinen enum driver_type get_driver_type(void);
878cd4e3c3eSJouni Malinen enum openwrt_driver_type get_openwrt_driver_type(void);
879cd4e3c3eSJouni Malinen int file_exists(const char *fname);
880cd4e3c3eSJouni Malinen 
881cd4e3c3eSJouni Malinen struct wpa_ctrl;
882cd4e3c3eSJouni Malinen 
883cd4e3c3eSJouni Malinen int wps_connection_event(struct sigma_dut *dut, struct sigma_conn *conn,
884cd4e3c3eSJouni Malinen 			 struct wpa_ctrl *ctrl, const char *intf, int p2p_resp);
885cd4e3c3eSJouni Malinen int ascii2hexstr(const char *str, char *hex);
886cd4e3c3eSJouni Malinen void disconnect_station(struct sigma_dut *dut);
887cd4e3c3eSJouni Malinen void nfc_status(struct sigma_dut *dut, const char *state, const char *oper);
888cd4e3c3eSJouni Malinen int get_ip_config(struct sigma_dut *dut, const char *ifname, char *buf,
889cd4e3c3eSJouni Malinen 		  size_t buf_len);
890cd4e3c3eSJouni Malinen int ath6kl_client_uapsd(struct sigma_dut *dut, const char *intf, int uapsd);
891cd4e3c3eSJouni Malinen int is_ip_addr(const char *str);
892cd4e3c3eSJouni Malinen int run_system(struct sigma_dut *dut, const char *cmd);
8935f793f0dSAdil Saeed Musthafa int run_system_wrapper(struct sigma_dut *dut, const char *cmd, ...);
894cd4e3c3eSJouni Malinen int cmd_wlantest_set_channel(struct sigma_dut *dut, struct sigma_conn *conn,
895cd4e3c3eSJouni Malinen 			     struct sigma_cmd *cmd);
896cd4e3c3eSJouni Malinen void sniffer_close(struct sigma_dut *dut);
897cd4e3c3eSJouni Malinen 
898cd4e3c3eSJouni Malinen /* ap.c */
899cd4e3c3eSJouni Malinen void ath_disable_txbf(struct sigma_dut *dut, const char *intf);
900818afef5SPriyadharshini Gowthaman void ath_config_dyn_bw_sig(struct sigma_dut *dut, const char *ifname,
901818afef5SPriyadharshini Gowthaman 			   const char *val);
902e5e2517eSpriyadharshini gowthaman void novap_reset(struct sigma_dut *dut, const char *ifname);
9032e6ccc22SJouni Malinen int get_hwaddr(const char *ifname, unsigned char *hwaddr);
904a326d7b5SJouni Malinen int cmd_ap_config_commit(struct sigma_dut *dut, struct sigma_conn *conn,
905a326d7b5SJouni Malinen 			 struct sigma_cmd *cmd);
906cd4e3c3eSJouni Malinen 
907cd4e3c3eSJouni Malinen /* sta.c */
908cd4e3c3eSJouni Malinen int set_ps(const char *intf, struct sigma_dut *dut, int enabled);
909cd4e3c3eSJouni Malinen void ath_set_zero_crc(struct sigma_dut *dut, const char *val);
910cd4e3c3eSJouni Malinen void ath_set_cts_width(struct sigma_dut *dut, const char *ifname,
911cd4e3c3eSJouni Malinen 		       const char *val);
912cd4e3c3eSJouni Malinen int ath_set_width(struct sigma_dut *dut, struct sigma_conn *conn,
913cd4e3c3eSJouni Malinen 		  const char *intf, const char *val);
9140fe101e9SLior David int wil6210_send_frame_60g(struct sigma_dut *dut, struct sigma_conn *conn,
9150fe101e9SLior David 			   struct sigma_cmd *cmd);
9161bde7947SAnkita Bajaj int hwaddr_aton(const char *txt, unsigned char *addr);
9171bde7947SAnkita Bajaj int set_ipv4_addr(struct sigma_dut *dut, const char *ifname,
9181bde7947SAnkita Bajaj 		  const char *ip, const char *mask);
9191bde7947SAnkita Bajaj int set_ipv4_gw(struct sigma_dut *dut, const char *gw);
92079fa3fedSAlexei Avshalom Lazar int send_addba_60g(struct sigma_dut *dut, struct sigma_conn *conn,
92179fa3fedSAlexei Avshalom Lazar 		   struct sigma_cmd *cmd, const char *param);
922bc180dc5SAlexei Avshalom Lazar int wil6210_set_ese(struct sigma_dut *dut, int count,
923bc180dc5SAlexei Avshalom Lazar 		    struct sigma_ese_alloc *allocs);
924bc180dc5SAlexei Avshalom Lazar int sta_extract_60g_ese(struct sigma_dut *dut, struct sigma_cmd *cmd,
925bc180dc5SAlexei Avshalom Lazar 			struct sigma_ese_alloc *allocs, int *allocs_size);
926aad97b04SAlexei Avshalom Lazar int wil6210_set_force_mcs(struct sigma_dut *dut, int force, int mcs);
927cd4e3c3eSJouni Malinen 
928cd4e3c3eSJouni Malinen /* p2p.c */
929cd4e3c3eSJouni Malinen int p2p_cmd_sta_get_parameter(struct sigma_dut *dut, struct sigma_conn *conn,
930cd4e3c3eSJouni Malinen 			      struct sigma_cmd *cmd);
931091e253dSPurushottam Kushwaha void p2p_create_event_thread(struct sigma_dut *dut);
932091e253dSPurushottam Kushwaha void stop_event_thread(void);
93389b37cdcSAmarnath Hullur Subramanyam void start_dhcp(struct sigma_dut *dut, const char *group_ifname, int go);
93489b37cdcSAmarnath Hullur Subramanyam void stop_dhcp(struct sigma_dut *dut, const char *group_ifname, int go);
93589b37cdcSAmarnath Hullur Subramanyam int p2p_discover_peer(struct sigma_dut *dut, const char *ifname,
93689b37cdcSAmarnath Hullur Subramanyam 		      const char *peer, int full);
937cd4e3c3eSJouni Malinen 
938c54710deSJouni Malinen /* basic.c */
939c54710deSJouni Malinen void get_ver(const char *cmd, char *buf, size_t buflen);
940c54710deSJouni Malinen 
94172462ef3Spriyadharshini gowthaman /* utils.c */
942cd4e3c3eSJouni Malinen enum sigma_program sigma_program_to_enum(const char *prog);
94308cf231dSJouni Malinen int parse_hexstr(const char *hex, unsigned char *buf, size_t buflen);
94472462ef3Spriyadharshini gowthaman int parse_mac_address(struct sigma_dut *dut, const char *arg,
94572462ef3Spriyadharshini gowthaman 		      unsigned char *addr);
946093569ffSAlexei Avshalom Lazar int is_60g_sigma_dut(struct sigma_dut *dut);
947093569ffSAlexei Avshalom Lazar unsigned int channel_to_freq(struct sigma_dut *dut, unsigned int channel);
9487192dc42SRakesh Sunki unsigned int freq_to_channel(unsigned int freq);
949525965bbSPeng Xu int is_ipv6_addr(const char *str);
9508f8e74b5SRakesh Sunki void convert_mac_addr_to_ipv6_lladdr(u8 *mac_addr, char *ipv6_buf,
9518f8e74b5SRakesh Sunki 				     size_t buf_len);
9528863ec7cSPeng Xu size_t convert_mac_addr_to_ipv6_linklocal(const u8 *mac_addr, u8 *ipv6);
953cd4e3c3eSJouni Malinen 
954769731a2SPeng Xu #ifndef ANDROID
955769731a2SPeng Xu size_t strlcpy(char *dest, const char *src, size_t siz);
956769731a2SPeng Xu size_t strlcat(char *dst, const char *str, size_t size);
957769731a2SPeng Xu #endif /* ANDROID */
9581bde7947SAnkita Bajaj void hex_dump(struct sigma_dut *dut, u8 *data, size_t len);
9590dae51c5SAlexei Avshalom Lazar int get_wps_pin_from_mac(struct sigma_dut *dut, const char *macaddr,
9600dae51c5SAlexei Avshalom Lazar 			 char *pin, size_t len);
9616427969bSAlexei Avshalom Lazar void str_remove_chars(char *str, char ch);
962769731a2SPeng Xu 
963769731a2SPeng Xu 
964cd4e3c3eSJouni Malinen /* uapsd_stream.c */
965cd4e3c3eSJouni Malinen void receive_uapsd(struct sigma_stream *s);
96679594049SPradeep Reddy POTTETI void send_uapsd_console(struct sigma_stream *s);
967cd4e3c3eSJouni Malinen 
968cd4e3c3eSJouni Malinen /* nan.c */
969cd4e3c3eSJouni Malinen int nan_preset_testparameters(struct sigma_dut *dut, struct sigma_conn *conn,
970cd4e3c3eSJouni Malinen 			      struct sigma_cmd *cmd);
971cd4e3c3eSJouni Malinen int nan_cmd_sta_get_parameter(struct sigma_dut *dut, struct sigma_conn *conn,
972cd4e3c3eSJouni Malinen 			      struct sigma_cmd *cmd);
973cd4e3c3eSJouni Malinen int nan_cmd_sta_exec_action(struct sigma_dut *dut, struct sigma_conn *conn,
974cd4e3c3eSJouni Malinen 			    struct sigma_cmd *cmd);
975cd4e3c3eSJouni Malinen int nan_cmd_sta_get_events(struct sigma_dut *dut, struct sigma_conn *conn,
976cd4e3c3eSJouni Malinen 			   struct sigma_cmd *cmd);
977cd4e3c3eSJouni Malinen int nan_cmd_sta_transmit_followup(struct sigma_dut *dut,
978cd4e3c3eSJouni Malinen 				  struct sigma_conn *conn,
979cd4e3c3eSJouni Malinen 				  struct sigma_cmd *cmd);
980cd4e3c3eSJouni Malinen void nan_cmd_sta_reset_default(struct sigma_dut *dut, struct sigma_conn *conn,
981cd4e3c3eSJouni Malinen 			       struct sigma_cmd *cmd);
982cd4e3c3eSJouni Malinen int nan_cmd_sta_preset_testparameters(struct sigma_dut *dut,
983cd4e3c3eSJouni Malinen 				      struct sigma_conn *conn,
984cd4e3c3eSJouni Malinen 				      struct sigma_cmd *cmd);
985cd4e3c3eSJouni Malinen 
986d66913acSpriyadharshini gowthaman /* ftm.c */
987d66913acSpriyadharshini gowthaman int loc_cmd_sta_exec_action(struct sigma_dut *dut, struct sigma_conn *conn,
988d66913acSpriyadharshini gowthaman 			    struct sigma_cmd *cmd);
989d66913acSpriyadharshini gowthaman int loc_cmd_sta_send_frame(struct sigma_dut *dut, struct sigma_conn *conn,
990d66913acSpriyadharshini gowthaman 			   struct sigma_cmd *cmd);
991d66913acSpriyadharshini gowthaman int loc_cmd_sta_preset_testparameters(struct sigma_dut *dut,
992d66913acSpriyadharshini gowthaman 				      struct sigma_conn *conn,
993d66913acSpriyadharshini gowthaman 				      struct sigma_cmd *cmd);
994d66913acSpriyadharshini gowthaman 
995d86e5828SJouni Malinen /* dpp.c */
996d86e5828SJouni Malinen int dpp_dev_exec_action(struct sigma_dut *dut, struct sigma_conn *conn,
997d86e5828SJouni Malinen 			struct sigma_cmd *cmd);
998d86e5828SJouni Malinen 
9991bde7947SAnkita Bajaj /* dhcp.c */
10001bde7947SAnkita Bajaj void process_fils_hlp(struct sigma_dut *dut);
10011bde7947SAnkita Bajaj void hlp_thread_cleanup(struct sigma_dut *dut);
1002d86e5828SJouni Malinen 
1003291d97daSPeng Xu #ifdef NL80211_SUPPORT
1004291d97daSPeng Xu struct nl80211_ctx * nl80211_init(struct sigma_dut *dut);
1005291d97daSPeng Xu void nl80211_deinit(struct sigma_dut *dut, struct nl80211_ctx *ctx);
1006291d97daSPeng Xu struct nl_msg * nl80211_drv_msg(struct sigma_dut *dut, struct nl80211_ctx *ctx,
1007291d97daSPeng Xu 				int ifindex, int flags,
1008291d97daSPeng Xu 				uint8_t cmd);
1009291d97daSPeng Xu int send_and_recv_msgs(struct sigma_dut *dut, struct nl80211_ctx *ctx,
1010291d97daSPeng Xu 		       struct nl_msg *nlmsg,
1011291d97daSPeng Xu 		       int (*valid_handler)(struct nl_msg *, void *),
1012291d97daSPeng Xu 		       void *valid_data);
1013291d97daSPeng Xu #endif /* NL80211_SUPPORT */
1014291d97daSPeng Xu 
1015cd4e3c3eSJouni Malinen #endif /* SIGMA_DUT_H */
1016