blob: ccbdb1c1b327c57396917ea0ae0e36cf42b0c5f2 [file] [log] [blame]
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001/*
2 * Sigma Control API DUT (station/AP)
3 * Copyright (c) 2010-2011, Atheros Communications, Inc.
Amarnath Hullur Subramanyam9c381f52017-03-17 00:04:41 -07004 * Copyright (c) 2011-2017, Qualcomm Atheros, Inc.
Jouni Malinen2feb9132021-11-16 00:53:06 +02005 * Copyright (c) 2018-2021, The Linux Foundation
Jouni Malinencd4e3c32015-10-29 12:39:56 +02006 * All Rights Reserved.
7 * Licensed under the Clear BSD license. See README for more details.
8 */
9
10#ifndef SIGMA_DUT_H
11#define SIGMA_DUT_H
12
Lior David9981b512017-01-20 13:16:40 +020013#ifdef __GNUC__
14#define _GNU_SOURCE 1
15#endif
16
Jouni Malinencd4e3c32015-10-29 12:39:56 +020017#include <stdlib.h>
Veerendranath Jakkam2e5ef8e2021-02-12 15:05:16 +053018#include <stdbool.h>
Jouni Malinencd4e3c32015-10-29 12:39:56 +020019#include <stdio.h>
20#include <stdarg.h>
21#include <string.h>
22#include <errno.h>
23#include <unistd.h>
24#include <time.h>
25#include <sys/time.h>
Jouni Malinen3d972ba2017-03-15 20:52:20 +020026#include <sys/types.h>
Jouni Malinencd4e3c32015-10-29 12:39:56 +020027#include <sys/socket.h>
28#include <net/if.h>
29#ifdef __QNXNTO__
30#include <sys/select.h>
31#include <net/if_ether.h>
32#endif /* __QNXNTO__ */
33#include <netinet/in.h>
34#include <arpa/inet.h>
Jouni Malinencd4e3c32015-10-29 12:39:56 +020035#include <pthread.h>
Peng Xu291d97d2018-01-31 16:34:03 -080036#ifdef NL80211_SUPPORT
37#include <netlink/genl/family.h>
38#include <netlink/genl/ctrl.h>
39#include <netlink/genl/genl.h>
40#include "qca-vendor_copy.h"
41#include "nl80211_copy.h"
42#endif /* NL80211_SUPPORT */
Vinay Gannevaram2dfb1da2019-06-14 15:24:08 +053043#ifdef ANDROID_WIFI_HAL
Sunil Dutt437476e2021-04-01 13:56:44 +053044/* avoid duplicate definitions from wifi_hal.h causing issues */
45#define u32 wifi_hal_u32
46#define u16 wifi_hal_u16
47#define u8 wifi_hal_u8
Vinay Gannevaram2dfb1da2019-06-14 15:24:08 +053048#include "wifi_hal.h"
Sunil Dutt437476e2021-04-01 13:56:44 +053049#undef u32
50#undef u16
51#undef u8
Vinay Gannevaram2dfb1da2019-06-14 15:24:08 +053052#endif /*ANDROID_WIFI_HAL*/
Jouni Malinencd4e3c32015-10-29 12:39:56 +020053
Veerendranath Jakkam764553e2020-09-10 07:27:45 +053054#ifdef NL80211_SUPPORT
55#ifndef NL_CAPABILITY_VERSION_3_5_0
56#define nla_nest_start(msg, attrtype) \
57 nla_nest_start(msg, NLA_F_NESTED | (attrtype))
58#endif
59#endif
Jouni Malinencd4e3c32015-10-29 12:39:56 +020060
61#ifdef __GNUC__
62#define PRINTF_FORMAT(a,b) __attribute__ ((format (printf, (a), (b))))
63#else
64#define PRINTF_FORMAT(a,b)
65#endif
66
Jouni Malinenda5f35b2019-03-26 00:25:53 +020067#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
68
Jouni Malinencd4e3c32015-10-29 12:39:56 +020069#ifndef SIGMA_TMPDIR
70#define SIGMA_TMPDIR "/tmp"
71#endif /* SIGMA_TMPDIR */
72
73#ifndef SIGMA_DUT_VER
74#define SIGMA_DUT_VER "(unknown)"
75#endif /* SIGMA_DUT_VER */
76
77#ifndef ETH_ALEN
78#define ETH_ALEN 6
79#endif
80
Veerendranath Jakkamd0ad6ef2020-05-21 17:09:26 +053081#ifndef BIT_ULL
82#define BIT_ULL(nr) (1ULL << (nr))
83#endif
84
Jouni Malinencd4e3c32015-10-29 12:39:56 +020085#ifndef ETH_P_ARP
86#define ETH_P_ARP 0x0806
87#endif
88
Peng Xu47d709b2019-06-04 18:14:02 -070089#define IPV6_ADDR_LEN 16
90
Jouni Malinencd4e3c32015-10-29 12:39:56 +020091struct sigma_dut;
92
93#define MAX_PARAMS 100
Alejandro Vasquez363f5582018-07-17 11:25:05 -070094#define MAX_RADIO 3
Jouni Malinencd4e3c32015-10-29 12:39:56 +020095
Ajit Vaishyac2ae9612020-02-28 00:09:07 +053096#define NAN_AWARE_IFACE "wifi-aware0"
97
Jouni Malinencd4e3c32015-10-29 12:39:56 +020098/* Set default operating channel width 80 MHz */
99#define VHT_DEFAULT_OPER_CHWIDTH AP_80_VHT_OPER_CHWIDTH
100
101typedef unsigned int u32;
Ankita Bajaj1bde7942018-01-09 19:15:01 +0530102typedef uint16_t u16;
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200103typedef unsigned char u8;
104
Alexei Avshalom Lazara90032d2019-05-02 13:34:02 +0300105struct ieee80211_hdr_3addr {
106 uint16_t frame_control;
107 uint16_t duration_id;
108 uint8_t addr1[ETH_ALEN];
109 uint8_t addr2[ETH_ALEN];
110 uint8_t addr3[ETH_ALEN];
111 uint16_t seq_ctrl;
112} __attribute__((packed));
113
114struct wfa_p2p_attribute {
115 uint8_t id;
116 uint16_t len;
117 uint8_t variable[0];
118} __attribute__((packed));
119
Lavanya Suresh2e2097d2021-02-23 21:17:28 +0530120struct dut_hw_modes {
121 u16 ht_capab;
122 u8 mcs_set[16];
123 u8 ampdu_params;
124 u32 vht_capab;
125 u8 vht_mcs_set[8];
Venkateswara Naralasetty8784fcb2021-10-11 13:52:15 +0530126 u8 ap_he_phy_capab[11];
Hu Wangacede502021-11-15 19:41:00 +0530127 bool valid;
Lavanya Suresh2e2097d2021-02-23 21:17:28 +0530128};
129
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200130#define WPA_GET_BE32(a) ((((u32) (a)[0]) << 24) | (((u32) (a)[1]) << 16) | \
131 (((u32) (a)[2]) << 8) | ((u32) (a)[3]))
132#define WPA_PUT_BE32(a, val) \
133 do { \
134 (a)[0] = (u8) ((((u32) (val)) >> 24) & 0xff); \
135 (a)[1] = (u8) ((((u32) (val)) >> 16) & 0xff); \
136 (a)[2] = (u8) ((((u32) (val)) >> 8) & 0xff); \
137 (a)[3] = (u8) (((u32) (val)) & 0xff); \
138 } while (0)
139
140struct sigma_cmd {
141 char *params[MAX_PARAMS];
142 char *values[MAX_PARAMS];
143 int count;
144};
145
Alejandro Vasquez3410aa52018-07-17 11:26:17 -0700146#define MAX_CMD_LEN 4096
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200147
148struct sigma_conn {
149 int s;
150 struct sockaddr_in addr;
151 socklen_t addrlen;
152 char buf[MAX_CMD_LEN + 5];
153 int pos;
154 int waiting_completion;
155};
156
Jouni Malinen0e29cf22019-02-19 01:13:21 +0200157enum sigma_cmd_result {
Jouni Malinen53264f62019-05-03 13:04:40 +0300158 STATUS_SENT_ERROR = -3,
Jouni Malinen0e29cf22019-02-19 01:13:21 +0200159 ERROR_SEND_STATUS = -2,
160 INVALID_SEND_STATUS = -1,
161 STATUS_SENT = 0,
162 SUCCESS_SEND_STATUS = 1
163};
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200164
165struct sigma_cmd_handler {
166 struct sigma_cmd_handler *next;
167 char *cmd;
168 int (*validate)(struct sigma_cmd *cmd);
169 /* process return value:
170 * -2 = failed, caller will send status,ERROR
171 * -1 = failed, caller will send status,INVALID
Jouni Malinen0e29cf22019-02-19 01:13:21 +0200172 * 0 = response already sent
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200173 * 1 = success, caller will send status,COMPLETE
174 */
Jouni Malinen26a5b762019-02-19 01:17:48 +0200175 enum sigma_cmd_result (*process)(struct sigma_dut *dut,
176 struct sigma_conn *conn,
177 struct sigma_cmd *cmd);
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200178};
179
180#define P2P_GRP_ID_LEN 128
181#define IP_ADDR_STR_LEN 16
182
183struct wfa_cs_p2p_group {
184 struct wfa_cs_p2p_group *next;
185 char ifname[IFNAMSIZ];
186 int go;
187 char grpid[P2P_GRP_ID_LEN];
188 char ssid[33];
189};
190
191#ifdef CONFIG_TRAFFIC_AGENT
192
193#define MAX_SIGMA_STREAMS 16
194#define MAX_SIGMA_STATS 6000
195
196struct sigma_frame_stats {
197 unsigned int seqnum;
198 unsigned int local_sec;
199 unsigned int local_usec;
200 unsigned int remote_sec;
201 unsigned int remote_usec;
202};
203
204struct sigma_stream {
205 enum sigma_stream_profile {
206 SIGMA_PROFILE_FILE_TRANSFER,
207 SIGMA_PROFILE_MULTICAST,
208 SIGMA_PROFILE_IPTV,
209 SIGMA_PROFILE_TRANSACTION,
210 SIGMA_PROFILE_START_SYNC,
211 SIGMA_PROFILE_UAPSD
212 } profile;
213 int sender;
214 struct in_addr dst;
215 int dst_port;
216 struct in_addr src;
217 int src_port;
218 int frame_rate;
219 int duration;
Jouni Malinenc2493f82016-06-05 18:01:33 +0300220 unsigned int payload_size;
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200221 int start_delay;
222 int max_cnt;
223 enum sigma_traffic_class {
224 SIGMA_TC_VOICE,
225 SIGMA_TC_VIDEO,
226 SIGMA_TC_BACKGROUND,
227 SIGMA_TC_BEST_EFFORT
228 } tc;
229 int user_priority;
230 int user_priority_set;
231 int started;
232 int no_timestamps;
233
234 int sock;
235 pthread_t thr;
236 int stop;
237 int ta_send_in_progress;
238 int trans_proto;
239
240 /* Statistics */
241 int tx_act_frames; /*
242 * Number of frames generated by the traffic
243 * generator application. The name is defined in the
244 * Sigma CAPI spec.
245 */
246 int tx_frames;
247 int rx_frames;
248 unsigned long long tx_payload_bytes;
249 unsigned long long rx_payload_bytes;
250 int out_of_seq_frames;
251 struct sigma_frame_stats *stats;
252 unsigned int num_stats;
253 unsigned int stream_id;
254
255 /* U-APSD */
256 unsigned int sta_id;
257 unsigned int rx_cookie;
258 unsigned int uapsd_sta_tc;
259 unsigned int uapsd_rx_state;
260 unsigned int uapsd_tx_state;
261 unsigned int tx_stop_cnt;
262 unsigned int tx_hello_cnt;
263 pthread_t uapsd_send_thr;
264 pthread_cond_t tx_thr_cond;
265 pthread_mutex_t tx_thr_mutex;
266 int reset_rx;
267 int num_retry;
268 char ifname[IFNAMSIZ]; /* ifname from the command */
269 struct sigma_dut *dut; /* for traffic agent thread to access context */
Pradeep Reddy POTTETI79594042015-11-23 12:59:12 +0530270 /* console */
271 char test_name[9]; /* test case name */
272 int can_quit;
273 int reset;
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200274};
275
276#endif /* CONFIG_TRAFFIC_AGENT */
277
Alexei Avshalom Lazarbc180dc2018-12-18 16:01:14 +0200278/* extended scheduling test */
279enum sigma_ese_type {
280 ESE_CBAP,
281 ESE_SP,
282};
283
284struct sigma_ese_alloc {
285 unsigned int percent_bi;
286 enum sigma_ese_type type;
287 unsigned int src_aid, dst_aid;
288};
289
290#define ESE_BCAST_AID 255
291#define MAX_ESE_ALLOCS 4
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200292
293#define NUM_AP_AC 4
294#define AP_AC_BE 0
295#define AP_AC_BK 1
296#define AP_AC_VI 2
297#define AP_AC_VO 3
298
Adil Saeed Musthafab7b297f2017-04-10 23:13:31 -0700299#define MAX_WLAN_TAGS 3
Adil Saeed Musthafa69063722017-04-10 23:13:40 -0700300#define MBO_MAX_PREF_BSSIDS 10
Adil Saeed Musthafa4ec61bd2017-04-10 23:13:41 -0700301#define MAX_FT_BSS_LIST 10
Adil Saeed Musthafab7b297f2017-04-10 23:13:31 -0700302
Peng Xu8863ec72018-08-06 11:50:37 -0700303#define TRANSPORT_PROTO_TYPE_TCP 0x06
304#define TRANSPORT_PROTO_TYPE_UDP 0x11
305#define NAN_TRANSPORT_PORT_DEFAULT 7000
306#define NAN_TRANSPORT_PROTOCOL_DEFAULT TRANSPORT_PROTO_TYPE_TCP
307
Jouni Malinen57fa3d82016-11-30 12:51:43 +0200308enum value_not_set_enabled_disabled {
309 VALUE_NOT_SET,
310 VALUE_ENABLED,
311 VALUE_DISABLED
312};
313
Pradeep Reddy Potteti4b0cdee2017-03-15 12:37:33 +0530314enum sec_ch_offset {
315 SEC_CH_NO,
316 SEC_CH_40ABOVE,
317 SEC_CH_40BELOW
318};
319
Adil Saeed Musthafa69063722017-04-10 23:13:40 -0700320struct mbo_pref_ap {
321 int ap_ne_class;
322 int ap_ne_op_ch;
323 int ap_ne_pref;
324 unsigned char mac_addr[ETH_ALEN];
325};
326
Peng Xu291d97d2018-01-31 16:34:03 -0800327#ifdef NL80211_SUPPORT
328#define SOCK_BUF_SIZE (32 * 1024)
329struct nl80211_ctx {
330 struct nl_sock *sock;
331 int netlink_familyid;
332 int nlctrl_familyid;
333 size_t sock_buf_size;
Kiran Kumar Lokeref61a7432021-06-24 00:19:19 -0700334 struct nl_sock *event_sock;
Peng Xu291d97d2018-01-31 16:34:03 -0800335};
336#endif /* NL80211_SUPPORT */
337
Alexei Avshalom Lazar33f700c2018-12-18 16:00:39 +0200338/* hardcoded long WSC IE values to force fragmentation */
339#define WPS_LONG_DEVICE_NAME "Qti1234511adtest1234567890123456"
340#define WPS_LONG_MANUFACTURER "Qti1234511adQti1234511adQti1234511adQti1234511adQti1234511ad"
341#define WPS_LONG_MODEL_NAME "Qti1234511adtest1234567890123456"
342#define WPS_LONG_MODEL_NUMBER "11111111111111111111111111111111"
343#define WPS_LONG_SERIAL_NUMBER "22222222222222222222222222222222"
344
Jouni Malinene4fde732019-03-25 22:29:37 +0200345enum akm_suite_values {
346 AKM_WPA_EAP = 1,
347 AKM_WPA_PSK = 2,
348 AKM_FT_EAP = 3,
349 AKM_FT_PSK = 4,
350 AKM_EAP_SHA256 = 5,
351 AKM_PSK_SHA256 = 6,
352 AKM_SAE = 8,
353 AKM_FT_SAE = 9,
354 AKM_SUITE_B = 12,
355 AKM_FT_SUITE_B = 13,
356 AKM_FILS_SHA256 = 14,
357 AKM_FILS_SHA384 = 15,
358 AKM_FT_FILS_SHA256 = 16,
359 AKM_FT_FILS_SHA384 = 17,
360
361};
362
Veerendranath Jakkam9ceb3b12021-09-10 03:18:17 +0530363enum ip_version {
364 DEFAULT_IP_VERSION = 0,
365 IPV4 = 4,
366 IPV6 = 6,
367};
368
369enum ip_protocol {
370 DEFAULT_PROTOCOL = 0,
371 PROTOCOL_UDP = 17,
372 PROTOCOL_TCP = 6,
373 PROTOCOL_ESP = 50,
374};
375
376#define DSCP_POLICY_SUCCESS 0
377#define DSCP_POLICY_REJECT 1
378
379struct dscp_policy_status {
380 int id;
381 int status;
382};
383
384struct dscp_policy_data {
385 char domain_name[250];
386 int policy_id;
387 enum ip_version ip_version;
388 char src_ip[INET6_ADDRSTRLEN];
389 char dst_ip[INET6_ADDRSTRLEN];
390 int src_port;
391 int dst_port;
392 int start_port;
393 int end_port;
394 enum ip_protocol protocol;
395 int dscp;
Shivani Baranwal9cfc8d72021-11-22 11:53:19 +0530396 int granularity_score;
Veerendranath Jakkam9ceb3b12021-09-10 03:18:17 +0530397 struct dscp_policy_data *next;
398};
399
Jouni Malinen29a63f42022-04-13 22:08:47 +0300400enum dpp_mdns_role {
401 DPP_MDNS_NOT_RUNNING,
402 DPP_MDNS_RELAY,
403 DPP_MDNS_CONTROLLER,
404};
405
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200406struct sigma_dut {
Jouni Malinend2095482019-11-04 17:10:43 +0200407 const char *main_ifname;
Jouni Malinenb21f0542019-11-04 17:53:38 +0200408 char *main_ifname_2g;
409 char *main_ifname_5g;
Jouni Malinend2095482019-11-04 17:10:43 +0200410 const char *station_ifname;
Jouni Malinenb21f0542019-11-04 17:53:38 +0200411 char *station_ifname_2g;
412 char *station_ifname_5g;
Jouni Malinen1f76fa62019-11-04 17:30:12 +0200413 char *p2p_ifname_buf;
Jouni Malinenb21f0542019-11-04 17:53:38 +0200414 int use_5g;
Kiran Kumar Lokereafa02af2021-05-11 18:28:03 -0700415 int ap_band_6g;
Jouni Malinen78217db2019-11-06 18:46:08 +0200416 int sta_2g_started;
417 int sta_5g_started;
Jouni Malinend2095482019-11-04 17:10:43 +0200418
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200419 int s; /* server TCP socket */
420 int debug_level;
421 int stdout_debug;
422 struct sigma_cmd_handler *cmds;
Jouni Malinen0fee7012019-02-19 12:41:07 +0200423 int response_sent;
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200424
Alexei Avshalom Lazarc9bc15d2020-01-29 10:52:13 +0200425 const char *sigma_tmpdir;
426
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200427 /* Default timeout value (seconds) for commands */
428 unsigned int default_timeout;
Vinita S. Maloof7a2cbf2020-11-18 19:29:44 +0530429 unsigned int user_config_timeout;
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200430
431 int next_streamid;
432
433 const char *bridge; /* bridge interface to use in AP mode */
434
435 enum sigma_mode {
436 SIGMA_MODE_UNKNOWN,
437 SIGMA_MODE_STATION,
438 SIGMA_MODE_AP,
439 SIGMA_MODE_SNIFFER
440 } mode;
441
442 /*
443 * Local cached values to handle API that does not provide all the
444 * needed information with commands that actually trigger some
445 * operations.
446 */
447 int listen_chn;
448 int persistent;
449 int intra_bss;
450 int noa_duration;
451 int noa_interval;
452 int noa_count;
453 enum wfa_cs_wps_method {
454 WFA_CS_WPS_NOT_READY,
455 WFA_CS_WPS_PBC,
456 WFA_CS_WPS_PIN_DISPLAY,
457 WFA_CS_WPS_PIN_LABEL,
458 WFA_CS_WPS_PIN_KEYPAD
459 } wps_method;
460 char wps_pin[9];
461
462 struct wfa_cs_p2p_group *groups;
463
464 char infra_ssid[33];
465 int infra_network_id;
466
467 enum p2p_mode {
468 P2P_IDLE, P2P_DISCOVER, P2P_LISTEN, P2P_DISABLE
469 } p2p_mode;
470
471 int go;
472 int p2p_client;
Jouni Malinen016ae6c2019-11-04 17:00:01 +0200473 const char *p2p_ifname;
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200474
475 int client_uapsd;
476
477 char arp_ipaddr[IP_ADDR_STR_LEN];
478 char arp_ifname[IFNAMSIZ + 1];
479
480 enum sta_pmf {
481 STA_PMF_DISABLED,
482 STA_PMF_OPTIONAL,
483 STA_PMF_REQUIRED
484 } sta_pmf;
485
Jouni Malinen6a7c9b42019-08-20 00:15:59 +0300486 int sta_ft_ds;
487
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200488 int no_tpk_expiration;
489
490 int er_oper_performed;
491 char er_oper_bssid[20];
492 int amsdu_size;
493 int back_rcv_buf;
494
495 int testbed_flag_txsp;
496 int testbed_flag_rxsp;
497 int chwidth;
498
Jouni Malinen8179fee2019-03-28 03:19:47 +0200499 unsigned int akm_values;
500
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200501 /* AP configuration */
502 char ap_ssid[33];
Adil Saeed Musthafab7b297f2017-04-10 23:13:31 -0700503 /*
504 * WLAN-TAG of 1 will use 'ap_' variables;
505 * tag higher than 1 will use 'ap_tag_' variables.
506 */
507 char ap_tag_ssid[MAX_WLAN_TAGS - 1][33];
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200508 enum ap_mode {
509 AP_11a,
510 AP_11g,
511 AP_11b,
512 AP_11na,
513 AP_11ng,
514 AP_11ac,
Alexei Avshalom Lazar2712cc82018-12-23 16:29:14 +0200515 AP_11ad,
Priyadharshini Gowthaman4401cee2019-11-21 14:38:33 -0800516 AP_11ax,
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200517 AP_inval
518 } ap_mode;
519 int ap_channel;
Xin Dengb78d1c22021-01-20 19:54:07 +0530520 int ap_tag_channel[MAX_WLAN_TAGS - 1];
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200521 int ap_rts;
522 int ap_frgmnt;
523 int ap_bcnint;
Jouni Malinend2e9bb32020-05-06 01:12:03 +0300524 int ap_start_disabled;
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200525 struct qos_params {
526 int ac;
527 int cwmin;
528 int cwmax;
529 int aifs;
530 int txop;
531 int acm;
532 } ap_qos[NUM_AP_AC], ap_sta_qos[NUM_AP_AC];
Jouni Malinen57fa3d82016-11-30 12:51:43 +0200533 enum value_not_set_enabled_disabled ap_noack;
534 enum value_not_set_enabled_disabled ap_ampdu;
535 enum value_not_set_enabled_disabled ap_amsdu;
536 enum value_not_set_enabled_disabled ap_rx_amsdu;
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200537 int ap_ampdu_exp;
Pravas Kumar Pandabaae9682021-02-23 22:27:09 +0530538 int ap_max_mpdu_len;
Jouni Malinen57fa3d82016-11-30 12:51:43 +0200539 enum value_not_set_enabled_disabled ap_addba_reject;
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200540 int ap_fixed_rate;
541 int ap_mcs;
542 int ap_rx_streams;
543 int ap_tx_streams;
544 unsigned int ap_vhtmcs_map;
Jouni Malinen57fa3d82016-11-30 12:51:43 +0200545 enum value_not_set_enabled_disabled ap_ldpc;
546 enum value_not_set_enabled_disabled ap_sig_rts;
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200547 enum ap_chwidth {
548 AP_20,
549 AP_40,
550 AP_80,
551 AP_160,
priyadharshini gowthaman63ab8482017-12-28 15:32:55 -0800552 AP_80_80,
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200553 AP_AUTO
554 } ap_chwidth;
Pradeep Reddy Pottetibf8af292017-02-15 15:28:39 +0530555 enum ap_chwidth default_11na_ap_chwidth;
556 enum ap_chwidth default_11ng_ap_chwidth;
Hu Wangacede502021-11-15 19:41:00 +0530557 enum value_not_set_enabled_disabled ap_tx_stbc;
Jouni Malinen57fa3d82016-11-30 12:51:43 +0200558 enum value_not_set_enabled_disabled ap_dyn_bw_sig;
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200559 int ap_sgi80;
560 int ap_p2p_mgmt;
561 enum ap_key_mgmt {
562 AP_OPEN,
563 AP_WPA2_PSK,
564 AP_WPA_PSK,
565 AP_WPA2_EAP,
566 AP_WPA_EAP,
567 AP_WPA2_EAP_MIXED,
Jouni Malinen30824df2017-08-22 21:21:38 +0300568 AP_WPA2_PSK_MIXED,
569 AP_WPA2_SAE,
570 AP_WPA2_PSK_SAE,
Jouni Malinenad395a22017-09-01 21:13:46 +0300571 AP_SUITEB,
Jouni Malinen147b3c32017-10-09 16:51:54 +0300572 AP_WPA2_OWE,
Jouni Malinen4cf699f2018-06-19 00:46:27 +0300573 AP_WPA2_EAP_OSEN,
Jouni Malinen6be21c82018-08-01 18:47:24 +0300574 AP_WPA2_FT_EAP,
575 AP_WPA2_FT_PSK,
576 AP_WPA2_EAP_SHA256,
577 AP_WPA2_PSK_SHA256,
578 AP_WPA2_ENT_FT_EAP,
Jouni Malinenc2b91212018-09-12 02:26:39 +0300579 AP_OSEN,
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200580 } ap_key_mgmt;
Adil Saeed Musthafab7b297f2017-04-10 23:13:31 -0700581 enum ap_tag_key_mgmt {
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200582 AP2_OPEN,
Adil Saeed Musthafab7b297f2017-04-10 23:13:31 -0700583 AP2_OSEN,
Jouni Malinen353ba8b2018-01-10 17:04:12 +0200584 AP2_WPA2_PSK,
585 AP2_WPA2_OWE,
Adil Saeed Musthafab7b297f2017-04-10 23:13:31 -0700586 } ap_tag_key_mgmt[MAX_WLAN_TAGS - 1];
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200587 int ap_add_sha256;
priyadharshini gowthamande81f392017-12-28 15:28:49 -0800588 int ap_add_sha384;
Sarvepalli, Rajesh Babu24dc7e42016-03-18 21:27:26 +0530589 int ap_rsn_preauth;
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200590 enum ap_pmf {
591 AP_PMF_DISABLED,
592 AP_PMF_OPTIONAL,
593 AP_PMF_REQUIRED
594 } ap_pmf;
595 enum ap_cipher {
Jouni Malinen2ba24492017-11-17 12:43:59 +0200596 AP_NO_GROUP_CIPHER_SET,
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200597 AP_CCMP,
598 AP_TKIP,
599 AP_WEP,
600 AP_PLAIN,
Jouni Malinenad395a22017-09-01 21:13:46 +0300601 AP_CCMP_TKIP,
602 AP_GCMP_256,
Jouni Malinen3d633da2017-09-14 22:19:21 +0300603 AP_GCMP_128,
604 AP_CCMP_256,
Jouni Malinend538c782017-11-17 12:13:04 +0200605 AP_CCMP_128_GCMP_256,
Jouni Malinen2ba24492017-11-17 12:43:59 +0200606 } ap_cipher, ap_group_cipher;
Jouni Malinen3d633da2017-09-14 22:19:21 +0300607 enum ap_group_mgmt_cipher {
608 AP_NO_GROUP_MGMT_CIPHER_SET,
609 AP_BIP_GMAC_256,
610 AP_BIP_CMAC_256,
611 AP_BIP_GMAC_128,
612 AP_BIP_CMAC_128,
613 } ap_group_mgmt_cipher;
Jouni Malinened670f42017-08-31 01:39:28 +0300614 char *ap_sae_groups;
Jouni Malinen2f524ce2017-08-31 01:43:29 +0300615 int sae_anti_clogging_threshold;
Jouni Malinenb347db02017-09-02 01:36:03 +0300616 int sae_reflection;
Jouni Malinen0a9876c2020-06-08 19:15:36 +0300617 int ap_sae_commit_status;
618 int ap_sae_pk_omit;
Jouni Malinen3c740ab2019-10-10 15:55:11 +0300619 int sae_confirm_immediate;
Jouni Malinen2126f422017-10-11 23:24:33 +0300620 char ap_passphrase[101];
Xin Dengb78d1c22021-01-20 19:54:07 +0530621 char ap_tag_passphrase[MAX_WLAN_TAGS - 1][101];
Jouni Malinen63370622017-11-18 17:47:13 +0200622 char ap_psk[65];
Jouni Malinen09550de2019-03-26 00:24:11 +0200623 char *ap_sae_passwords;
Jouni Malinen59fab0f2020-06-05 16:59:55 +0300624 char *ap_sae_pk_modifier;
625 char *ap_sae_pk_keypair;
Jouni Malinenfbf12ef2020-06-08 19:49:40 +0300626 char *ap_sae_pk_keypair_sig;
Jouni Malinen59fab0f2020-06-05 16:59:55 +0300627 int ap_sae_pk;
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200628 char ap_wepkey[27];
629 char ap_radius_ipaddr[20];
630 int ap_radius_port;
631 char ap_radius_password[200];
632 char ap2_radius_ipaddr[20];
633 int ap2_radius_port;
634 char ap2_radius_password[200];
635 int ap_tdls_prohibit;
636 int ap_tdls_prohibit_chswitch;
637 int ap_hs2;
638 int ap_dgaf_disable;
639 int ap_p2p_cross_connect;
640 int ap_oper_name;
641 int ap_wan_metrics;
642 int ap_conn_capab;
643 int ap_oper_class;
644
645 int ap_interworking;
646 int ap_access_net_type;
647 int ap_internet;
648 int ap_venue_group;
649 int ap_venue_type;
650 char ap_hessid[20];
651 char ap_roaming_cons[100];
652 int ap_venue_name;
653 int ap_net_auth_type;
654 int ap_nai_realm_list;
655 char ap_domain_name_list[1000];
656 int ap_ip_addr_type_avail;
657 char ap_plmn_mcc[10][4];
658 char ap_plmn_mnc[10][4];
659 int ap_gas_cb_delay;
660 int ap_proxy_arp;
661 int ap2_proxy_arp;
Jouni Malinendbbc2c42018-11-14 23:55:41 +0200662 int ap2_osu;
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200663 int ap_l2tif;
664 int ap_anqpserver;
665 int ap_anqpserver_on;
666 int ap_osu_provider_list;
Jouni Malinen93a837f2018-11-01 17:09:22 +0200667 int ap_osu_provider_nai_list;
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200668 int ap_qos_map_set;
669 int ap_bss_load;
670 char ap_osu_server_uri[10][256];
671 char ap_osu_ssid[33];
672 int ap_osu_method[10];
673 int ap_osu_icon_tag;
Jouni Malinen54a89b02018-05-01 00:16:26 +0300674 int ap_venue_url;
Jouni Malinenf7ff42b2018-05-01 00:21:56 +0300675 int ap_advice_of_charge;
Jouni Malinenac104532018-05-01 00:27:37 +0300676 int ap_oper_icon_metadata;
Jouni Malinenac367142018-05-01 00:32:24 +0300677 int ap_tnc_file_name;
678 unsigned int ap_tnc_time_stamp;
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200679
680 int ap_fake_pkhash;
681 int ap_disable_protection;
682 int ap_allow_vht_wep;
683 int ap_allow_vht_tkip;
684
685 enum ap_vht_chwidth {
686 AP_20_40_VHT_OPER_CHWIDTH,
687 AP_80_VHT_OPER_CHWIDTH,
688 AP_160_VHT_OPER_CHWIDTH
689 } ap_vht_chwidth;
690 int ap_txBF;
691 int ap_mu_txBF;
Pradeep Reddy POTTETIfba27db2015-11-20 16:42:22 +0530692 enum ap_regulatory_mode {
693 AP_80211D_MODE_DISABLED,
694 AP_80211D_MODE_ENABLED,
695 } ap_regulatory_mode;
696 enum ap_dfs_mode {
697 AP_DFS_MODE_DISABLED,
698 AP_DFS_MODE_ENABLED,
699 } ap_dfs_mode;
priyadharshini gowthaman264d5442016-02-25 15:52:22 -0800700 int ap_ndpa_frame;
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200701
priyadharshini gowthaman8e26ff42016-06-22 22:47:14 -0700702 int ap_lci;
703 char ap_val_lci[33];
priyadharshini gowthamanc2357bd2016-06-22 22:47:14 -0700704 char ap_infoz[17];
priyadharshini gowthaman8e26ff42016-06-22 22:47:14 -0700705 int ap_lcr;
706 char ap_val_lcr[400];
707 int ap_rrm;
708 int ap_rtt;
709 int ap_neighap; /* number of configured neighbor APs */
710 unsigned char ap_val_neighap[3][6];
711 int ap_opchannel; /* number of oper channels */
712 int ap_val_opchannel[3];
713 int ap_scan;
priyadharshini gowthamanc2357bd2016-06-22 22:47:14 -0700714 int ap_fqdn_held;
715 int ap_fqdn_supl;
priyadharshini gowthamana27b5b62016-06-22 22:47:14 -0700716 int ap_msnt_type;
717
priyadharshini gowthamanb4e05fc2016-10-13 15:02:35 -0700718 int ap_mbo;
719 int ap_ne_class;
720 int ap_ne_op_ch;
721 int ap_set_bssidpref;
722 int ap_btmreq_disassoc_imnt;
723 int ap_btmreq_term_bit;
Adil Saeed Musthafa7d9ae382017-04-10 23:13:33 -0700724 int ap_disassoc_timer;
725 int ap_btmreq_bss_term_dur;
Adil Saeed Musthafa604c8262017-04-10 23:13:31 -0700726 enum reg_domain {
727 REG_DOMAIN_NOT_SET,
728 REG_DOMAIN_LOCAL,
729 REG_DOMAIN_GLOBAL
730 } ap_reg_domain;
Adil Saeed Musthafacf752fa2017-04-10 23:13:32 -0700731 char ap_mobility_domain[10];
Adil Saeed Musthafa023108a2017-04-10 23:13:37 -0700732 unsigned char ap_cell_cap_pref;
Adil Saeed Musthafa4ec61bd2017-04-10 23:13:41 -0700733 int ap_ft_oa;
Jouni Malinen9f943312019-08-19 23:49:16 +0300734 enum value_not_set_enabled_disabled ap_ft_ds;
Adil Saeed Musthafa4ec61bd2017-04-10 23:13:41 -0700735 int ap_name;
priyadharshini gowthaman09d613e2017-12-20 11:43:44 -0800736 int ap_interface_5g;
737 int ap_interface_2g;
priyadharshini gowthaman776562e2017-12-20 12:33:34 -0800738 int ap_assoc_delay;
priyadharshini gowthaman94062b52017-12-20 12:33:34 -0800739 int ap_btmreq_bss_term_tsf;
priyadharshini gowthaman00798a22017-12-28 15:15:00 -0800740 int ap_fils_dscv_int;
741 int ap_nairealm_int;
742 char ap_nairealm[33];
743 int ap_blechanutil;
744 int ap_ble_admit_cap;
745 int ap_datappdudura;
746 int ap_airtimefract;
747 char ap_dhcpserv_ipaddr[20];
748 int ap_dhcp_stop;
749 int ap_bawinsize;
750 int ap_blestacnt;
priyadharshini gowthamancb22e432017-12-28 15:23:31 -0800751 int ap_ul_availcap;
752 int ap_dl_availcap;
priyadharshini gowthamande81f392017-12-28 15:28:49 -0800753 int ap_akm;
Jouni Malinenda5f35b2019-03-26 00:25:53 +0200754 unsigned int ap_akm_values;
priyadharshini gowthamande81f392017-12-28 15:28:49 -0800755 int ap_pmksa;
756 int ap_pmksa_caching;
Jouni Malinen05d005a2020-03-26 12:49:33 +0200757 int ap_beacon_prot;
Jouni Malinenc098c442020-03-26 13:01:50 +0200758 u8 ap_transition_disable;
priyadharshini gowthaman63ab8482017-12-28 15:32:55 -0800759 int ap_80plus80;
priyadharshini gowthaman9149afc2018-01-15 13:40:18 -0800760 int ap_oper_chn;
Adil Saeed Musthafa4ec61bd2017-04-10 23:13:41 -0700761
Adil Saeed Musthafa69063722017-04-10 23:13:40 -0700762 struct mbo_pref_ap mbo_pref_aps[MBO_MAX_PREF_BSSIDS];
763 struct mbo_pref_ap mbo_self_ap_tuple;
764 int mbo_pref_ap_cnt;
Adil Saeed Musthafa4ec61bd2017-04-10 23:13:41 -0700765 unsigned char ft_bss_mac_list[MAX_FT_BSS_LIST][ETH_ALEN];
766 int ft_bss_mac_cnt;
priyadharshini gowthamanb4e05fc2016-10-13 15:02:35 -0700767
Priyadharshini Gowthamanc067edf2019-06-20 11:23:27 -0700768 char *ar_ltf;
769
Priyadharshini Gowthamanbc948892019-09-10 14:22:49 -0700770 int ap_numsounddim;
Priyadharshini Gowthaman78ee2ef2019-11-15 16:08:28 -0800771 unsigned int he_mcsnssmap;
772 int he_ul_mcs;
Priyadharshini Gowthaman21f74402019-11-25 15:39:09 -0800773 int he_mmss;
Priyadharshini Gowthaman88d55c82019-12-12 14:31:46 -0800774 int he_srctrl_allow;
Priyadharshini Gowthamanbc948892019-09-10 14:22:49 -0700775
Priyadharshini Gowthamance7ba822020-05-27 13:03:09 -0700776 int ap_ocvc;
777
priyadharshini gowthaman00798a22017-12-28 15:15:00 -0800778 enum value_not_set_enabled_disabled ap_oce;
779 enum value_not_set_enabled_disabled ap_filsdscv;
780 enum value_not_set_enabled_disabled ap_filshlp;
781 enum value_not_set_enabled_disabled ap_broadcast_ssid;
782 enum value_not_set_enabled_disabled ap_rnr;
783 enum value_not_set_enabled_disabled ap_esp;
784
Priyadharshini Gowthamanc067edf2019-06-20 11:23:27 -0700785 enum value_not_set_enabled_disabled ap_he_ulofdma;
Priyadharshini Gowthamanfe60c502019-08-14 13:00:34 -0700786 enum value_not_set_enabled_disabled ap_he_dlofdma;
Priyadharshini Gowthaman670b3232019-09-10 16:09:19 -0700787 enum value_not_set_enabled_disabled ap_bcc;
Priyadharshini Gowthaman6bc4c1e2019-09-10 16:24:51 -0700788 enum value_not_set_enabled_disabled ap_he_frag;
Priyadharshini Gowthaman21895a52019-10-07 16:56:16 -0700789 enum value_not_set_enabled_disabled ap_mu_edca;
Priyadharshini Gowthaman43d6b412019-10-07 16:56:37 -0700790 enum value_not_set_enabled_disabled ap_he_rtsthrshld;
Priyadharshini Gowthaman8018c982019-10-31 15:14:37 -0700791 enum value_not_set_enabled_disabled ap_mbssid;
Priyadharshini Gowthamanae0a6052019-11-01 15:26:38 -0700792 enum value_not_set_enabled_disabled ap_twtresp;
Priyadharshini Gowthaman96d542e2019-11-21 14:25:21 -0800793 enum value_not_set_enabled_disabled he_sounding;
Priyadharshini Gowthaman9b7dbe12019-12-04 12:17:32 -0800794 enum value_not_set_enabled_disabled he_set_sta_1x1;
Priyadharshini Gowthamanc067edf2019-06-20 11:23:27 -0700795
priyadharshini gowthaman350f1912018-06-04 13:09:12 -0700796 enum ppdu {
797 PPDU_NOT_SET,
798 PPDU_MU,
799 PPDU_SU,
800 PPDU_ER,
801 PPDU_TB,
Priyadharshini Gowthamanfe60c502019-08-14 13:00:34 -0700802 PPDU_HESU,
priyadharshini gowthaman350f1912018-06-04 13:09:12 -0700803 } ap_he_ppdu;
804
Priyadharshini Gowthaman1a686bd2019-09-19 14:41:40 -0700805 enum bufsize {
806 BA_BUFSIZE_NOT_SET,
807 BA_BUFSIZE_64,
808 BA_BUFSIZE_256,
809 } ap_ba_bufsize;
810
Priyadharshini Gowthamandee79e22019-10-07 16:56:27 -0700811 enum mimo {
812 MIMO_NOT_SET,
813 MIMO_DL,
814 MIMO_UL,
815 } ap_he_mimo;
816
Alexei Avshalom Lazarbc180dc2018-12-18 16:01:14 +0200817 struct sigma_ese_alloc ap_ese_allocs[MAX_ESE_ALLOCS];
818 int ap_num_ese_allocs;
819
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200820 const char *hostapd_debug_log;
Alexei Avshalom Lazar3e8267e2018-12-18 15:58:54 +0200821 const char *wpa_supplicant_debug_log;
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200822
823#ifdef CONFIG_TRAFFIC_AGENT
824 /* Traffic Agent */
825 struct sigma_stream streams[MAX_SIGMA_STREAMS];
826 int stream_id;
827 int num_streams;
828 pthread_t thr;
829#endif /* CONFIG_TRAFFIC_AGENT */
830
Jouni Malinenc2493f82016-06-05 18:01:33 +0300831 unsigned int throughput_pktsize; /* If non-zero, override pktsize for
832 * throughput tests */
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200833 int no_timestamps;
834
835 const char *sniffer_ifname;
836 const char *set_macaddr;
837 int tmp_mac_addr;
838 int ap_is_dual;
839 enum ap_mode ap_mode_1;
840 enum ap_chwidth ap_chwidth_1;
841 int ap_channel_1;
842 char ap_countrycode[3];
843
844 int ap_wpsnfc;
845
Pradeep Reddy POTTETI0d3db632016-03-11 15:21:11 +0530846 enum ap_wme {
847 AP_WME_OFF,
848 AP_WME_ON,
849 } ap_wme;
850
Mohammed Shafi Shajakhan02e3b822017-02-23 04:15:02 +0530851 enum ap_wmmps {
852 AP_WMMPS_OFF,
853 AP_WMMPS_ON,
854 } ap_wmmps;
855
Pradeep Reddy Potteti4b0cdee2017-03-15 12:37:33 +0530856 enum sec_ch_offset ap_chwidth_offset;
857
Jouni Malinenba4f2d42019-10-04 16:13:41 +0300858 char *ap_dpp_conf_addr;
859 char *ap_dpp_conf_pkhash;
860
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200861#ifdef CONFIG_SNIFFER
862 pid_t sniffer_pid;
863 char sniffer_filename[200];
864#endif /* CONFIG_SNIFFER */
865
866 int last_set_ip_config_ipv6;
Amarnath Hullur Subramanyam9c381f52017-03-17 00:04:41 -0700867#ifdef MIRACAST
868 pthread_t rtsp_thread_handle;
869 int wfd_device_type; /* 0 for source, 1 for sink */
870 char peer_mac_address[32];
Sunil Duttbf9bcdf2020-04-02 19:14:52 +0530871 char modified_peer_mac_address[32];
Amarnath Hullur Subramanyam9c381f52017-03-17 00:04:41 -0700872 void *miracast_lib;
873 const char *miracast_lib_path;
874 char mdns_instance_name[64];
875#endif /* MIRACAST */
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200876
877 int tid_to_handle[8]; /* Mapping of TID to handle */
878 int dialog_token; /* Used for generating unique handle for an addTs */
879
880 enum sigma_program {
881 PROGRAM_UNKNOWN = 0,
882 PROGRAM_TDLS,
883 PROGRAM_HS2,
884 PROGRAM_HS2_R2,
885 PROGRAM_WFD,
Amarnath Hullur Subramanyam659a34c2017-03-17 00:04:41 -0700886 PROGRAM_DISPLAYR2,
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200887 PROGRAM_PMF,
888 PROGRAM_WPS,
889 PROGRAM_60GHZ,
890 PROGRAM_HT,
891 PROGRAM_VHT,
892 PROGRAM_NAN,
priyadharshini gowthaman12dd4142016-06-22 22:47:14 -0700893 PROGRAM_LOC,
Adil Saeed Musthafa33ea2872017-04-10 23:13:24 -0700894 PROGRAM_MBO,
Jouni Malinen5c3813a2017-08-26 13:30:39 +0300895 PROGRAM_IOTLP,
896 PROGRAM_DPP,
Ankita Bajaja2cb5672017-10-25 16:08:28 +0530897 PROGRAM_OCE,
priyadharshini gowthaman0e209fc2018-01-26 15:15:37 -0800898 PROGRAM_WPA3,
Amarnath Hullur Subramanyam8f9c8682018-01-30 19:01:51 -0800899 PROGRAM_HE,
Jouni Malinenba630452018-06-22 11:49:59 +0300900 PROGRAM_HS2_R3,
Vamsi Krishnaf642d6a2020-03-27 12:33:14 +0530901 PROGRAM_QM,
Jouni Malinen9a742ff2022-01-27 00:43:14 +0200902 PROGRAM_HS2_R4,
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200903 } program;
904
905 enum device_type {
906 device_type_unknown,
907 AP_unknown,
908 AP_testbed,
909 AP_dut,
910 STA_unknown,
911 STA_testbed,
912 STA_dut
913 } device_type;
914
915 enum {
916 DEVROLE_UNKNOWN = 0,
917 DEVROLE_STA,
918 DEVROLE_PCP,
Alexei Avshalom Lazar2712cc82018-12-23 16:29:14 +0200919 DEVROLE_STA_CFON,
920 DEVROLE_AP,
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200921 } dev_role;
922
Alexei Avshalom Lazar33f700c2018-12-18 16:00:39 +0200923 enum wps_band {
924 WPS_BAND_NON_60G = 0,
925 WPS_BAND_60G,
926 } band;
927
Alexei Avshalom Lazareee9ab02018-12-24 16:27:48 +0200928 int wps_disable; /* Used for 60G to disable PCP from sending WPS IE */
Alexei Avshalom Lazar33f700c2018-12-18 16:00:39 +0200929 int wsc_fragment; /* simulate WSC IE fragmentation */
Alexei Avshalom Lazar2eccf4d2019-01-31 10:03:59 +0200930 int eap_fragment; /* simulate EAP fragmentation */
Alexei Avshalom Lazar744ae8a2019-01-31 17:26:46 +0200931 int wps_forced_version; /* Used to force reported WPS version */
Alexei Avshalom Lazarb094bf02018-12-18 16:00:53 +0200932 enum {
933 /* no change */
934 FORCE_RSN_IE_NONE = 0,
935 /* if exists, remove and clear privacy bit */
936 FORCE_RSN_IE_REMOVE,
937 /* if not exists, add and set privacy bit */
938 FORCE_RSN_IE_ADD,
939 } force_rsn_ie; /* override RSN IE in association request */
Alexei Avshalom Lazar33f700c2018-12-18 16:00:39 +0200940
Jouni Malinencd4e3c32015-10-29 12:39:56 +0200941 const char *version;
942 int no_ip_addr_set;
943 int sta_channel;
944
945 const char *summary_log;
946 const char *hostapd_entropy_log;
947
948 int iface_down_on_reset;
949 int write_stats; /* traffic stream e2e*.txt files */
Bala Krishna Bhamidipati73d7af02016-03-24 12:27:56 +0530950 int sim_no_username; /* do not set SIM username to use real SIM */
Jouni Malinen5db3b102016-08-04 12:27:18 +0300951
952 const char *vendor_name; /* device_get_info vendor override */
953 const char *model_name; /* device_get_info model override */
954 const char *version_name; /* device_get_info version override */
Kiran Kumar Lokere0128bf92019-04-08 18:36:16 -0700955 const char *log_file_dir; /* Directory to generate log file */
956 FILE *log_file_fd; /* Pointer to log file */
Rakesh Sunki7d37f412017-03-30 14:47:55 -0700957
Rakesh Sunki14cfcd22017-03-30 14:47:55 -0700958 int ndp_enable; /* Flag which is set once the NDP is setup */
959
Peng Xu8863ec72018-08-06 11:50:37 -0700960 int ndpe; /* Flag indicating NDPE is supported */
961 u16 trans_port; /* transport port number for TCP/UDP connection */
962 u8 trans_proto; /* transport protocol, 0x06: TCP, 0x11: UDP */
Peng Xu47d709b2019-06-04 18:14:02 -0700963 u8 nan_ipv6_addr[IPV6_ADDR_LEN]; /* NAN IPv6 address */
964 u8 nan_ipv6_len; /* NAN IPv6 address length */
Peng Xu8863ec72018-08-06 11:50:37 -0700965
Rakesh Sunki7d37f412017-03-30 14:47:55 -0700966 /* Length of nan_pmk in octets */
967 u8 nan_pmk_len;
968
969 /*
970 * PMK: Info is optional in Discovery phase. PMK info can
971 * be passed during the NDP session.
972 */
973 u8 nan_pmk[32];
Adil Saeed Musthafa33ea2872017-04-10 23:13:24 -0700974
975 enum value_not_set_enabled_disabled wnm_bss_max_feature;
976 int wnm_bss_max_idle_time;
977 enum value_not_set_enabled_disabled wnm_bss_max_protection;
Ashwini Patil00402582017-04-13 12:29:39 +0530978
979 char *non_pref_ch_list; /* MBO: non-preferred channel report */
Ashwini Patil5acd7382017-04-13 15:55:04 +0530980 char *btm_query_cand_list; /* Candidate list for BTM Query */
Jouni Malinen3c367e82017-06-23 17:01:47 +0300981
Jouni Malinen68143132017-09-02 02:34:08 +0300982 char *sae_commit_override;
Jouni Malinen3c367e82017-06-23 17:01:47 +0300983 char *rsne_override;
Jouni Malinen7960e3a2019-12-07 17:04:35 +0200984 char *rsnxe_override_eapol;
Jouni Malinen134fe3c2019-06-12 04:16:49 +0300985 int sta_associate_wait_connect;
986 char server_cert_hash[65];
Jouni Malinen37d5c692019-08-19 16:56:55 +0300987 int server_cert_tod;
Jouni Malinen134fe3c2019-06-12 04:16:49 +0300988 int sta_tod_policy;
Jouni Malinend6bf1b42017-06-23 17:51:01 +0300989 const char *hostapd_bin;
990 int use_hostapd_pid_file;
991 const char *hostapd_ifname;
Jouni Malinend86e5822017-08-29 03:55:32 +0300992 int hostapd_running;
993
Jouni Malinenb1dd21f2017-11-13 19:14:29 +0200994 char *dpp_peer_uri;
Jouni Malinend86e5822017-08-29 03:55:32 +0300995 int dpp_local_bootstrap;
996 int dpp_conf_id;
Jouni Malinen1dabb5a2020-06-26 21:05:21 +0300997 int dpp_network_id;
Jouni Malinen29a63f42022-04-13 22:08:47 +0300998 enum dpp_mdns_role dpp_mdns;
Ankita Bajaj1bde7942018-01-09 19:15:01 +0530999
1000 u8 fils_hlp;
1001 pthread_t hlp_thread;
Peng Xu291d97d2018-01-31 16:34:03 -08001002
1003#ifdef NL80211_SUPPORT
1004 struct nl80211_ctx *nl_ctx;
Sunil Dutt076081f2018-02-05 19:45:50 +05301005 int config_rsnie;
Peng Xu291d97d2018-01-31 16:34:03 -08001006#endif /* NL80211_SUPPORT */
Arif Hussainac6c5112018-05-25 17:34:00 -07001007
1008 int sta_nss;
Anurag Das2052daa2018-08-31 14:35:25 +05301009
Kiran Kumar Lokeref61a7432021-06-24 00:19:19 -07001010 int sta_async_twt_supp; /* Asynchronous TWT response event support */
1011
Anurag Das2052daa2018-08-31 14:35:25 +05301012#ifdef ANDROID
1013 int nanservicediscoveryinprogress;
1014#endif /* ANDROID */
Priyadharshini Gowthamand06f1002019-04-22 15:45:41 -07001015
1016 const char *priv_cmd; /* iwpriv / cfg80211tool command name */
Kiran Kumar Lokere0128bf92019-04-08 18:36:16 -07001017
1018 unsigned int wpa_log_size;
1019 char dev_start_test_runtime_id[100];
Vinay Gannevaram2dfb1da2019-06-14 15:24:08 +05301020#ifdef ANDROID_WIFI_HAL
1021 wifi_interface_handle wifi_hal_iface_handle;
1022 wifi_handle wifi_hal_handle;
1023 bool wifi_hal_initialized;
1024#endif /*ANDROID_WIFI_HAL*/
Jouni Malinen11e55212019-11-22 21:46:59 +02001025
1026 int sae_h2e_default;
1027 enum {
1028 SAE_PWE_DEFAULT,
1029 SAE_PWE_LOOP,
1030 SAE_PWE_H2E
1031 } sae_pwe;
Hu Wang6010ce72020-03-05 19:33:53 +08001032 int owe_ptk_workaround;
Lavanya Suresh2e2097d2021-02-23 21:17:28 +05301033 struct dut_hw_modes hw_modes;
Vamsi Krishnac1633d22020-05-06 18:31:21 +05301034 int ocvc;
Veerendranath Jakkamc1f71b62021-01-23 03:09:51 +05301035 int beacon_prot;
Jouni Malinen67433fc2020-06-26 22:50:33 +03001036 int client_privacy;
Veerendranath Jakkam47867202020-12-21 01:53:52 +05301037 int client_privacy_default;
Veerendranath Jakkam54ddc352020-07-05 15:47:54 +05301038 int saquery_oci_freq;
Venkateswara Naralasettyf0f88052020-11-11 19:15:17 +05301039 char device_driver[32];
Vinita S. Maloo1ded3742021-07-28 16:55:21 +05301040 int user_config_ap_ocvc;
1041 int user_config_ap_beacon_prot;
Veerendranath Jakkam329a3cd2021-09-11 18:10:13 +05301042 char qm_domain_name[250];
Veerendranath Jakkam9ceb3b12021-09-10 03:18:17 +05301043 struct dscp_policy_data *dscp_policy_table;
1044 pthread_t dscp_policy_mon_thread;
Veerendranath Jakkama16cdc82021-09-12 16:44:22 +05301045 int reject_dscp_policies;
1046 int dscp_reject_resp_code;
Veerendranath Jakkam1bf1bd62021-09-12 16:35:55 +05301047 struct dscp_policy_status dscp_status[5];
1048 unsigned int num_dscp_status;
Shivani Baranwalebde8f62021-10-19 12:26:02 +05301049 unsigned int prev_disable_scs_support;
1050 unsigned int prev_disable_mscs_support;
Shivani Baranwal9cfc8d72021-11-22 11:53:19 +05301051 int dscp_use_iptables;
Veerendranath Jakkamf6c8ab52022-03-10 05:43:02 -08001052 int autoconnect_default;
Veerendranath Jakkamfc5b7d22022-04-15 02:12:12 +05301053 int dhcp_client_running;
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001054};
1055
1056
1057enum sigma_dut_print_level {
1058 DUT_MSG_DEBUG, DUT_MSG_INFO, DUT_MSG_ERROR
1059};
1060
1061void sigma_dut_print(struct sigma_dut *dut, int level, const char *fmt, ...)
1062PRINTF_FORMAT(3, 4);
1063
1064void sigma_dut_summary(struct sigma_dut *dut, const char *fmt, ...)
1065PRINTF_FORMAT(2, 3);
1066
1067
1068enum sigma_status {
1069 SIGMA_RUNNING, SIGMA_INVALID, SIGMA_ERROR, SIGMA_COMPLETE
1070};
1071
1072void send_resp(struct sigma_dut *dut, struct sigma_conn *conn,
Jouni Malinen76401f52017-03-18 01:04:55 +02001073 enum sigma_status status, const char *buf);
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001074
1075const char * get_param(struct sigma_cmd *cmd, const char *name);
Alexei Avshalom Lazarbc180dc2018-12-18 16:01:14 +02001076const char * get_param_indexed(struct sigma_cmd *cmd, const char *name,
1077 int index);
Vinita S. Maloo8d7a28d2021-01-21 22:55:00 +05301078const char * get_param_fmt(struct sigma_cmd *cmd, const char *name, ...);
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001079
1080int sigma_dut_reg_cmd(const char *cmd,
1081 int (*validate)(struct sigma_cmd *cmd),
Jouni Malinen26a5b762019-02-19 01:17:48 +02001082 enum sigma_cmd_result (*process)(struct sigma_dut *dut,
1083 struct sigma_conn *conn,
1084 struct sigma_cmd *cmd));
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001085
1086void sigma_dut_register_cmds(void);
1087
Jouni Malinena485fd12019-06-13 23:27:01 +03001088enum sigma_cmd_result cmd_sta_send_frame(struct sigma_dut *dut,
1089 struct sigma_conn *conn,
1090 struct sigma_cmd *cmd);
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001091int cmd_sta_set_parameter(struct sigma_dut *dut, struct sigma_conn *conn,
1092 struct sigma_cmd *cmd);
Jouni Malinena485fd12019-06-13 23:27:01 +03001093enum sigma_cmd_result cmd_ap_send_frame(struct sigma_dut *dut,
1094 struct sigma_conn *conn,
1095 struct sigma_cmd *cmd);
1096enum sigma_cmd_result cmd_wlantest_send_frame(struct sigma_dut *dut,
1097 struct sigma_conn *conn,
1098 struct sigma_cmd *cmd);
Ankita Bajaj0d5825b2017-10-25 16:20:17 +05301099int sta_cfon_set_wireless(struct sigma_dut *dut, struct sigma_conn *conn,
1100 struct sigma_cmd *cmd);
1101int sta_cfon_get_mac_address(struct sigma_dut *dut, struct sigma_conn *conn,
1102 struct sigma_cmd *cmd);
1103int sta_cfon_reset_default(struct sigma_dut *dut, struct sigma_conn *conn,
1104 struct sigma_cmd *cmd);
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001105
1106enum driver_type {
1107 DRIVER_NOT_SET,
1108 DRIVER_ATHEROS,
1109 DRIVER_WCN,
1110 DRIVER_MAC80211,
1111 DRIVER_AR6003,
1112 DRIVER_WIL6210,
1113 DRIVER_QNXNTO,
Sreelakshmi Konamkib692f102016-04-26 19:47:00 +05301114 DRIVER_OPENWRT,
1115 DRIVER_LINUX_WCN,
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001116};
1117
1118enum openwrt_driver_type {
1119 OPENWRT_DRIVER_NOT_SET,
1120 OPENWRT_DRIVER_ATHEROS
1121};
1122
1123#define DRIVER_NAME_60G "wil6210"
1124
1125int set_wifi_chip(const char *chip_type);
Jouni Malinen016ae6c2019-11-04 17:00:01 +02001126enum driver_type get_driver_type(struct sigma_dut *dut);
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001127enum openwrt_driver_type get_openwrt_driver_type(void);
Venkateswara Naralasettyf0f88052020-11-11 19:15:17 +05301128void sigma_dut_get_device_driver_name(const char *ifname, char *name,
1129 size_t size);
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001130int file_exists(const char *fname);
1131
1132struct wpa_ctrl;
1133
1134int wps_connection_event(struct sigma_dut *dut, struct sigma_conn *conn,
1135 struct wpa_ctrl *ctrl, const char *intf, int p2p_resp);
1136int ascii2hexstr(const char *str, char *hex);
1137void disconnect_station(struct sigma_dut *dut);
1138void nfc_status(struct sigma_dut *dut, const char *state, const char *oper);
1139int get_ip_config(struct sigma_dut *dut, const char *ifname, char *buf,
1140 size_t buf_len);
1141int ath6kl_client_uapsd(struct sigma_dut *dut, const char *intf, int uapsd);
1142int is_ip_addr(const char *str);
1143int run_system(struct sigma_dut *dut, const char *cmd);
Adil Saeed Musthafa5f793f02017-04-10 23:13:30 -07001144int run_system_wrapper(struct sigma_dut *dut, const char *cmd, ...);
Priyadharshini Gowthamand06f1002019-04-22 15:45:41 -07001145int run_iwpriv(struct sigma_dut *dut, const char *ifname, const char *cmd, ...);
Jouni Malinena485fd12019-06-13 23:27:01 +03001146enum sigma_cmd_result cmd_wlantest_set_channel(struct sigma_dut *dut,
1147 struct sigma_conn *conn,
1148 struct sigma_cmd *cmd);
Jouni Malinena2df7db2019-06-13 02:31:24 +03001149void wlantest_register_cmds(void);
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001150void sniffer_close(struct sigma_dut *dut);
1151
Vinay Gannevaram2dfb1da2019-06-14 15:24:08 +05301152/* sigma_dut.c */
1153int wifi_hal_initialize(struct sigma_dut *dut);
1154
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001155/* ap.c */
Jouni Malinena2df7db2019-06-13 02:31:24 +03001156void ap_register_cmds(void);
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001157void ath_disable_txbf(struct sigma_dut *dut, const char *intf);
Priyadharshini Gowthaman818afef2015-11-09 13:28:15 -08001158void ath_config_dyn_bw_sig(struct sigma_dut *dut, const char *ifname,
1159 const char *val);
Priyadharshini Gowthaman8c5b9a42019-07-31 14:38:48 -07001160void novap_reset(struct sigma_dut *dut, const char *ifname, int reset);
Jouni Malinen2e6ccc22017-09-04 13:43:16 +03001161int get_hwaddr(const char *ifname, unsigned char *hwaddr);
Jouni Malinena485fd12019-06-13 23:27:01 +03001162enum sigma_cmd_result cmd_ap_config_commit(struct sigma_dut *dut,
1163 struct sigma_conn *conn,
1164 struct sigma_cmd *cmd);
Alexei Avshalom Lazar043230b2019-02-04 14:11:24 +02001165int ap_wps_registration(struct sigma_dut *dut, struct sigma_conn *conn,
1166 struct sigma_cmd *cmd);
Jouni Malinen314b9c62020-06-05 15:36:04 +03001167const char * get_hostapd_ifname(struct sigma_dut *dut);
Sai Pavan Akhil Remella6469f0c2021-12-20 15:49:53 +05301168void get_wiphy_capabilities(struct sigma_dut *dut);
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001169
1170/* sta.c */
Jouni Malinena2df7db2019-06-13 02:31:24 +03001171void sta_register_cmds(void);
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001172int set_ps(const char *intf, struct sigma_dut *dut, int enabled);
1173void ath_set_zero_crc(struct sigma_dut *dut, const char *val);
1174void ath_set_cts_width(struct sigma_dut *dut, const char *ifname,
1175 const char *val);
1176int ath_set_width(struct sigma_dut *dut, struct sigma_conn *conn,
1177 const char *intf, const char *val);
Alexei Avshalom Lazar49498b82019-01-31 15:16:32 +02001178int sta_set_60g_abft_len(struct sigma_dut *dut, struct sigma_conn *conn,
1179 int abft_len);
Lior David0fe101e2017-03-09 16:09:50 +02001180int wil6210_send_frame_60g(struct sigma_dut *dut, struct sigma_conn *conn,
1181 struct sigma_cmd *cmd);
Ankita Bajaj1bde7942018-01-09 19:15:01 +05301182int hwaddr_aton(const char *txt, unsigned char *addr);
1183int set_ipv4_addr(struct sigma_dut *dut, const char *ifname,
1184 const char *ip, const char *mask);
1185int set_ipv4_gw(struct sigma_dut *dut, const char *gw);
Alexei Avshalom Lazar79fa3fe2018-12-24 15:43:33 +02001186int send_addba_60g(struct sigma_dut *dut, struct sigma_conn *conn,
1187 struct sigma_cmd *cmd, const char *param);
Alexei Avshalom Lazarbc180dc2018-12-18 16:01:14 +02001188int wil6210_set_ese(struct sigma_dut *dut, int count,
1189 struct sigma_ese_alloc *allocs);
1190int sta_extract_60g_ese(struct sigma_dut *dut, struct sigma_cmd *cmd,
1191 struct sigma_ese_alloc *allocs, int *allocs_size);
Alexei Avshalom Lazaraad97b02018-12-18 16:01:23 +02001192int wil6210_set_force_mcs(struct sigma_dut *dut, int force, int mcs);
Qiwei Caib6806972020-01-15 13:52:11 +08001193int sta_set_addba_buf_size(struct sigma_dut *dut,
1194 const char *intf, int bufsize);
Kiran Kumar Lokerebed80952021-11-22 22:47:25 -08001195int wcn_set_he_gi(struct sigma_dut *dut, const char *intf, u8 gi_val);
Kiran Kumar Lokere26c0f862020-01-22 11:15:59 -08001196#ifdef NL80211_SUPPORT
1197int wcn_set_he_ltf(struct sigma_dut *dut, const char *intf,
1198 enum qca_wlan_he_ltf_cfg ltf);
1199#endif /* NL80211_SUPPORT */
Veerendranath Jakkam9ceb3b12021-09-10 03:18:17 +05301200void stop_dscp_policy_mon_thread(struct sigma_dut *dut);
1201void free_dscp_policy_table(struct sigma_dut *dut);
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001202
1203/* p2p.c */
Jouni Malinena2df7db2019-06-13 02:31:24 +03001204void p2p_register_cmds(void);
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001205int p2p_cmd_sta_get_parameter(struct sigma_dut *dut, struct sigma_conn *conn,
1206 struct sigma_cmd *cmd);
Purushottam Kushwaha091e2532016-08-23 11:52:21 +05301207void p2p_create_event_thread(struct sigma_dut *dut);
1208void stop_event_thread(void);
Amarnath Hullur Subramanyam89b37cd2017-03-17 00:04:41 -07001209void start_dhcp(struct sigma_dut *dut, const char *group_ifname, int go);
1210void stop_dhcp(struct sigma_dut *dut, const char *group_ifname, int go);
1211int p2p_discover_peer(struct sigma_dut *dut, const char *ifname,
1212 const char *peer, int full);
Jouni Malinena0bf62a2019-06-13 02:22:24 +03001213enum sigma_cmd_result cmd_sta_p2p_reset(struct sigma_dut *dut,
1214 struct sigma_conn *conn,
1215 struct sigma_cmd *cmd);
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001216
Jouni Malinenc54710d2019-01-23 12:34:21 +02001217/* basic.c */
Jouni Malinena2df7db2019-06-13 02:31:24 +03001218void basic_register_cmds(void);
Jouni Malinenc54710d2019-01-23 12:34:21 +02001219void get_ver(const char *cmd, char *buf, size_t buflen);
1220
priyadharshini gowthaman72462ef2016-06-22 22:47:14 -07001221/* utils.c */
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001222enum sigma_program sigma_program_to_enum(const char *prog);
Alexei Avshalom Lazar9a4f98d2019-05-02 13:35:22 +03001223int hex_byte(const char *str);
Jouni Malinen08cf2312017-09-04 13:39:47 +03001224int parse_hexstr(const char *hex, unsigned char *buf, size_t buflen);
priyadharshini gowthaman72462ef2016-06-22 22:47:14 -07001225int parse_mac_address(struct sigma_dut *dut, const char *arg,
1226 unsigned char *addr);
Alexei Avshalom Lazar093569f2018-11-13 14:08:17 +02001227int is_60g_sigma_dut(struct sigma_dut *dut);
1228unsigned int channel_to_freq(struct sigma_dut *dut, unsigned int channel);
Rakesh Sunki7192dc42017-03-30 14:47:55 -07001229unsigned int freq_to_channel(unsigned int freq);
Peng Xu525965b2018-06-26 16:40:14 -07001230int is_ipv6_addr(const char *str);
Rakesh Sunki8f8e74b2017-05-16 15:42:12 -07001231void convert_mac_addr_to_ipv6_lladdr(u8 *mac_addr, char *ipv6_buf,
1232 size_t buf_len);
Peng Xu8863ec72018-08-06 11:50:37 -07001233size_t convert_mac_addr_to_ipv6_linklocal(const u8 *mac_addr, u8 *ipv6);
Veerendranath Jakkam9ceb3b12021-09-10 03:18:17 +05301234int snprintf_error(size_t size, int res);
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001235
Peng Xu769731a2017-05-10 17:27:28 -07001236#ifndef ANDROID
1237size_t strlcpy(char *dest, const char *src, size_t siz);
1238size_t strlcat(char *dst, const char *str, size_t size);
1239#endif /* ANDROID */
Ankita Bajaj1bde7942018-01-09 19:15:01 +05301240void hex_dump(struct sigma_dut *dut, u8 *data, size_t len);
Alexei Avshalom Lazar0dae51c2018-12-18 16:00:18 +02001241int get_wps_pin_from_mac(struct sigma_dut *dut, const char *macaddr,
1242 char *pin, size_t len);
Alexei Avshalom Lazar64279692018-12-23 16:49:49 +02001243void str_remove_chars(char *str, char ch);
Peng Xu769731a2017-05-10 17:27:28 -07001244
Alexei Avshalom Lazar744ae8a2019-01-31 17:26:46 +02001245int get_wps_forced_version(struct sigma_dut *dut, const char *str);
Alexei Avshalom Lazara37dc162019-02-04 14:06:48 +02001246int base64_encode(const char *src, size_t len, char *out, size_t out_len);
Jouni Malinen3d6d1622022-04-14 12:47:54 +03001247unsigned char * base64_decode(const char *src, size_t len, size_t *out_len);
Alexei Avshalom Lazara37dc162019-02-04 14:06:48 +02001248int random_get_bytes(char *buf, size_t len);
Jouni Malinen3c740ab2019-10-10 15:55:11 +03001249int get_enable_disable(const char *val);
Vinita Maloo54b78cf2020-03-30 12:18:19 +05301250int wcn_driver_cmd(const char *ifname, char *buf);
Peng Xu769731a2017-05-10 17:27:28 -07001251
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001252/* uapsd_stream.c */
1253void receive_uapsd(struct sigma_stream *s);
Pradeep Reddy POTTETI79594042015-11-23 12:59:12 +05301254void send_uapsd_console(struct sigma_stream *s);
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001255
1256/* nan.c */
1257int nan_preset_testparameters(struct sigma_dut *dut, struct sigma_conn *conn,
1258 struct sigma_cmd *cmd);
1259int nan_cmd_sta_get_parameter(struct sigma_dut *dut, struct sigma_conn *conn,
1260 struct sigma_cmd *cmd);
1261int nan_cmd_sta_exec_action(struct sigma_dut *dut, struct sigma_conn *conn,
1262 struct sigma_cmd *cmd);
1263int nan_cmd_sta_get_events(struct sigma_dut *dut, struct sigma_conn *conn,
1264 struct sigma_cmd *cmd);
1265int nan_cmd_sta_transmit_followup(struct sigma_dut *dut,
1266 struct sigma_conn *conn,
1267 struct sigma_cmd *cmd);
1268void nan_cmd_sta_reset_default(struct sigma_dut *dut, struct sigma_conn *conn,
1269 struct sigma_cmd *cmd);
1270int nan_cmd_sta_preset_testparameters(struct sigma_dut *dut,
1271 struct sigma_conn *conn,
1272 struct sigma_cmd *cmd);
1273
priyadharshini gowthamand66913a2016-07-29 15:11:17 -07001274/* ftm.c */
1275int loc_cmd_sta_exec_action(struct sigma_dut *dut, struct sigma_conn *conn,
1276 struct sigma_cmd *cmd);
1277int loc_cmd_sta_send_frame(struct sigma_dut *dut, struct sigma_conn *conn,
1278 struct sigma_cmd *cmd);
1279int loc_cmd_sta_preset_testparameters(struct sigma_dut *dut,
1280 struct sigma_conn *conn,
1281 struct sigma_cmd *cmd);
Vinay Gannevaram3b9fdd32019-06-14 17:55:44 +05301282int lowi_cmd_sta_reset_default(struct sigma_dut *dut, struct sigma_conn *conn,
1283 struct sigma_cmd *cmd);
priyadharshini gowthamand66913a2016-07-29 15:11:17 -07001284
Jouni Malinend86e5822017-08-29 03:55:32 +03001285/* dpp.c */
Jouni Malinen89cf6d62020-05-11 22:42:11 +03001286enum sigma_cmd_result dpp_dev_exec_action(struct sigma_dut *dut,
1287 struct sigma_conn *conn,
1288 struct sigma_cmd *cmd);
Jouni Malinencd208ad2022-04-14 13:04:00 +03001289int dpp_mdns_discover_relay_params(struct sigma_dut *dut);
Jouni Malinen29a63f42022-04-13 22:08:47 +03001290int dpp_mdns_start(struct sigma_dut *dut, enum dpp_mdns_role role);
1291void dpp_mdns_stop(struct sigma_dut *dut);
Jouni Malinend86e5822017-08-29 03:55:32 +03001292
Ankita Bajaj1bde7942018-01-09 19:15:01 +05301293/* dhcp.c */
1294void process_fils_hlp(struct sigma_dut *dut);
1295void hlp_thread_cleanup(struct sigma_dut *dut);
Jouni Malinend86e5822017-08-29 03:55:32 +03001296
Peng Xu291d97d2018-01-31 16:34:03 -08001297#ifdef NL80211_SUPPORT
1298struct nl80211_ctx * nl80211_init(struct sigma_dut *dut);
1299void nl80211_deinit(struct sigma_dut *dut, struct nl80211_ctx *ctx);
Kiran Kumar Lokere94829ce2022-01-20 10:49:08 -08001300int nl80211_open_event_sock(struct sigma_dut *dut);
1301void nl80211_close_event_sock(struct sigma_dut *dut);
Peng Xu291d97d2018-01-31 16:34:03 -08001302struct nl_msg * nl80211_drv_msg(struct sigma_dut *dut, struct nl80211_ctx *ctx,
1303 int ifindex, int flags,
1304 uint8_t cmd);
1305int send_and_recv_msgs(struct sigma_dut *dut, struct nl80211_ctx *ctx,
1306 struct nl_msg *nlmsg,
1307 int (*valid_handler)(struct nl_msg *, void *),
1308 void *valid_data);
Veerendranath Jakkam050b85a2020-07-04 04:00:32 +05301309int wcn_wifi_test_config_set_flag(struct sigma_dut *dut, const char *intf,
1310 int attr_id);
1311int wcn_wifi_test_config_set_u8(struct sigma_dut *dut, const char *intf,
1312 int attr_id, uint8_t val);
1313int wcn_wifi_test_config_set_u16(struct sigma_dut *dut, const char *intf,
1314 int attr_id, uint16_t val);
Peng Xu291d97d2018-01-31 16:34:03 -08001315#endif /* NL80211_SUPPORT */
1316
Jouni Malinena2df7db2019-06-13 02:31:24 +03001317void traffic_register_cmds(void);
1318void traffic_agent_register_cmds(void);
1319void powerswitch_register_cmds(void);
1320void atheros_register_cmds(void);
1321void dev_register_cmds(void);
1322void sniffer_register_cmds(void);
1323void server_register_cmds(void);
1324void miracast_register_cmds(void);
Veerendranath Jakkam176181c2020-05-16 00:19:21 +05301325int set_ipv6_addr(struct sigma_dut *dut, const char *ip, const char *mask,
1326 const char *ifname);
Shivani Baranwal31182012021-12-07 21:11:13 +05301327void kill_pid(struct sigma_dut *dut, const char *pid_file);
Jouni Malinena2df7db2019-06-13 02:31:24 +03001328
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001329#endif /* SIGMA_DUT_H */