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. 50fee701cSJouni Malinen * Copyright (c) 2018-2019, The Linux Foundation 6cd4e3c3eSJouni Malinen * All Rights Reserved. 7cd4e3c3eSJouni Malinen * Licensed under the Clear BSD license. See README for more details. 8cd4e3c3eSJouni Malinen */ 9cd4e3c3eSJouni Malinen 10cd4e3c3eSJouni Malinen #ifndef SIGMA_DUT_H 11cd4e3c3eSJouni Malinen #define SIGMA_DUT_H 12cd4e3c3eSJouni Malinen 139981b511SLior David #ifdef __GNUC__ 149981b511SLior David #define _GNU_SOURCE 1 159981b511SLior David #endif 169981b511SLior David 17cd4e3c3eSJouni Malinen #include <stdlib.h> 18cd4e3c3eSJouni Malinen #include <stdio.h> 19cd4e3c3eSJouni Malinen #include <stdarg.h> 20cd4e3c3eSJouni Malinen #include <string.h> 21cd4e3c3eSJouni Malinen #include <errno.h> 22cd4e3c3eSJouni Malinen #include <unistd.h> 23cd4e3c3eSJouni Malinen #include <time.h> 24cd4e3c3eSJouni Malinen #include <sys/time.h> 25cd4e3c3eSJouni Malinen #include <sys/types.h> 26cd4e3c3eSJouni Malinen #include <sys/socket.h> 27cd4e3c3eSJouni Malinen #include <net/if.h> 28cd4e3c3eSJouni Malinen #ifdef __QNXNTO__ 29cd4e3c3eSJouni Malinen #include <sys/select.h> 30cd4e3c3eSJouni Malinen #include <net/if_ether.h> 31cd4e3c3eSJouni Malinen #endif /* __QNXNTO__ */ 32cd4e3c3eSJouni Malinen #include <netinet/in.h> 33cd4e3c3eSJouni Malinen #include <arpa/inet.h> 34cd4e3c3eSJouni Malinen #ifdef CONFIG_TRAFFIC_AGENT 35cd4e3c3eSJouni Malinen #include <pthread.h> 36cd4e3c3eSJouni Malinen #endif /* CONFIG_TRAFFIC_AGENT */ 37291d97daSPeng Xu #ifdef NL80211_SUPPORT 38291d97daSPeng Xu #include <netlink/genl/family.h> 39291d97daSPeng Xu #include <netlink/genl/ctrl.h> 40291d97daSPeng Xu #include <netlink/genl/genl.h> 41291d97daSPeng Xu #include "qca-vendor_copy.h" 42291d97daSPeng Xu #include "nl80211_copy.h" 43291d97daSPeng Xu #endif /* NL80211_SUPPORT */ 44cd4e3c3eSJouni Malinen 45cd4e3c3eSJouni Malinen 46cd4e3c3eSJouni Malinen #ifdef __GNUC__ 47cd4e3c3eSJouni Malinen #define PRINTF_FORMAT(a,b) __attribute__ ((format (printf, (a), (b)))) 48cd4e3c3eSJouni Malinen #else 49cd4e3c3eSJouni Malinen #define PRINTF_FORMAT(a,b) 50cd4e3c3eSJouni Malinen #endif 51cd4e3c3eSJouni Malinen 52cd4e3c3eSJouni Malinen #ifndef SIGMA_TMPDIR 53cd4e3c3eSJouni Malinen #define SIGMA_TMPDIR "/tmp" 54cd4e3c3eSJouni Malinen #endif /* SIGMA_TMPDIR */ 55cd4e3c3eSJouni Malinen 56cd4e3c3eSJouni Malinen #ifndef SIGMA_DUT_VER 57cd4e3c3eSJouni Malinen #define SIGMA_DUT_VER "(unknown)" 58cd4e3c3eSJouni Malinen #endif /* SIGMA_DUT_VER */ 59cd4e3c3eSJouni Malinen 60cd4e3c3eSJouni Malinen #ifndef ETH_ALEN 61cd4e3c3eSJouni Malinen #define ETH_ALEN 6 62cd4e3c3eSJouni Malinen #endif 63cd4e3c3eSJouni Malinen 64cd4e3c3eSJouni Malinen #ifndef ETH_P_ARP 65cd4e3c3eSJouni Malinen #define ETH_P_ARP 0x0806 66cd4e3c3eSJouni Malinen #endif 67cd4e3c3eSJouni Malinen 68cd4e3c3eSJouni Malinen struct sigma_dut; 69cd4e3c3eSJouni Malinen 70cd4e3c3eSJouni Malinen #define MAX_PARAMS 100 71363f5584SAlejandro Vasquez #define MAX_RADIO 3 72cd4e3c3eSJouni Malinen 73cd4e3c3eSJouni Malinen /* Set default operating channel width 80 MHz */ 74cd4e3c3eSJouni Malinen #define VHT_DEFAULT_OPER_CHWIDTH AP_80_VHT_OPER_CHWIDTH 75cd4e3c3eSJouni Malinen 76cd4e3c3eSJouni Malinen typedef unsigned int u32; 771bde7947SAnkita Bajaj typedef uint16_t u16; 78cd4e3c3eSJouni Malinen typedef unsigned char u8; 79cd4e3c3eSJouni Malinen 80cd4e3c3eSJouni Malinen #define WPA_GET_BE32(a) ((((u32) (a)[0]) << 24) | (((u32) (a)[1]) << 16) | \ 81cd4e3c3eSJouni Malinen (((u32) (a)[2]) << 8) | ((u32) (a)[3])) 82cd4e3c3eSJouni Malinen #define WPA_PUT_BE32(a, val) \ 83cd4e3c3eSJouni Malinen do { \ 84cd4e3c3eSJouni Malinen (a)[0] = (u8) ((((u32) (val)) >> 24) & 0xff); \ 85cd4e3c3eSJouni Malinen (a)[1] = (u8) ((((u32) (val)) >> 16) & 0xff); \ 86cd4e3c3eSJouni Malinen (a)[2] = (u8) ((((u32) (val)) >> 8) & 0xff); \ 87cd4e3c3eSJouni Malinen (a)[3] = (u8) (((u32) (val)) & 0xff); \ 88cd4e3c3eSJouni Malinen } while (0) 89cd4e3c3eSJouni Malinen 90cd4e3c3eSJouni Malinen struct sigma_cmd { 91cd4e3c3eSJouni Malinen char *params[MAX_PARAMS]; 92cd4e3c3eSJouni Malinen char *values[MAX_PARAMS]; 93cd4e3c3eSJouni Malinen int count; 94cd4e3c3eSJouni Malinen }; 95cd4e3c3eSJouni Malinen 963410aa5bSAlejandro Vasquez #define MAX_CMD_LEN 4096 97cd4e3c3eSJouni Malinen 98cd4e3c3eSJouni Malinen struct sigma_conn { 99cd4e3c3eSJouni Malinen int s; 100cd4e3c3eSJouni Malinen struct sockaddr_in addr; 101cd4e3c3eSJouni Malinen socklen_t addrlen; 102cd4e3c3eSJouni Malinen char buf[MAX_CMD_LEN + 5]; 103cd4e3c3eSJouni Malinen int pos; 104cd4e3c3eSJouni Malinen int waiting_completion; 105cd4e3c3eSJouni Malinen }; 106cd4e3c3eSJouni Malinen 1070e29cf2dSJouni Malinen enum sigma_cmd_result { 1080e29cf2dSJouni Malinen ERROR_SEND_STATUS = -2, 1090e29cf2dSJouni Malinen INVALID_SEND_STATUS = -1, 1100e29cf2dSJouni Malinen STATUS_SENT = 0, 1110e29cf2dSJouni Malinen SUCCESS_SEND_STATUS = 1 1120e29cf2dSJouni Malinen }; 113cd4e3c3eSJouni Malinen 114cd4e3c3eSJouni Malinen struct sigma_cmd_handler { 115cd4e3c3eSJouni Malinen struct sigma_cmd_handler *next; 116cd4e3c3eSJouni Malinen char *cmd; 117cd4e3c3eSJouni Malinen int (*validate)(struct sigma_cmd *cmd); 118cd4e3c3eSJouni Malinen /* process return value: 119cd4e3c3eSJouni Malinen * -2 = failed, caller will send status,ERROR 120cd4e3c3eSJouni Malinen * -1 = failed, caller will send status,INVALID 1210e29cf2dSJouni Malinen * 0 = response already sent 122cd4e3c3eSJouni Malinen * 1 = success, caller will send status,COMPLETE 123cd4e3c3eSJouni Malinen */ 12426a5b76dSJouni Malinen enum sigma_cmd_result (*process)(struct sigma_dut *dut, 12526a5b76dSJouni Malinen struct sigma_conn *conn, 126cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 127cd4e3c3eSJouni Malinen }; 128cd4e3c3eSJouni Malinen 129cd4e3c3eSJouni Malinen #define P2P_GRP_ID_LEN 128 130cd4e3c3eSJouni Malinen #define IP_ADDR_STR_LEN 16 131cd4e3c3eSJouni Malinen 132cd4e3c3eSJouni Malinen struct wfa_cs_p2p_group { 133cd4e3c3eSJouni Malinen struct wfa_cs_p2p_group *next; 134cd4e3c3eSJouni Malinen char ifname[IFNAMSIZ]; 135cd4e3c3eSJouni Malinen int go; 136cd4e3c3eSJouni Malinen char grpid[P2P_GRP_ID_LEN]; 137cd4e3c3eSJouni Malinen char ssid[33]; 138cd4e3c3eSJouni Malinen }; 139cd4e3c3eSJouni Malinen 140cd4e3c3eSJouni Malinen #ifdef CONFIG_TRAFFIC_AGENT 141cd4e3c3eSJouni Malinen 142cd4e3c3eSJouni Malinen #define MAX_SIGMA_STREAMS 16 143cd4e3c3eSJouni Malinen #define MAX_SIGMA_STATS 6000 144cd4e3c3eSJouni Malinen 145cd4e3c3eSJouni Malinen struct sigma_frame_stats { 146cd4e3c3eSJouni Malinen unsigned int seqnum; 147cd4e3c3eSJouni Malinen unsigned int local_sec; 148cd4e3c3eSJouni Malinen unsigned int local_usec; 149cd4e3c3eSJouni Malinen unsigned int remote_sec; 150cd4e3c3eSJouni Malinen unsigned int remote_usec; 151cd4e3c3eSJouni Malinen }; 152cd4e3c3eSJouni Malinen 153cd4e3c3eSJouni Malinen struct sigma_stream { 154cd4e3c3eSJouni Malinen enum sigma_stream_profile { 155cd4e3c3eSJouni Malinen SIGMA_PROFILE_FILE_TRANSFER, 156cd4e3c3eSJouni Malinen SIGMA_PROFILE_MULTICAST, 157cd4e3c3eSJouni Malinen SIGMA_PROFILE_IPTV, 158cd4e3c3eSJouni Malinen SIGMA_PROFILE_TRANSACTION, 159cd4e3c3eSJouni Malinen SIGMA_PROFILE_START_SYNC, 160cd4e3c3eSJouni Malinen SIGMA_PROFILE_UAPSD 161cd4e3c3eSJouni Malinen } profile; 162cd4e3c3eSJouni Malinen int sender; 163cd4e3c3eSJouni Malinen struct in_addr dst; 164cd4e3c3eSJouni Malinen int dst_port; 165cd4e3c3eSJouni Malinen struct in_addr src; 166cd4e3c3eSJouni Malinen int src_port; 167cd4e3c3eSJouni Malinen int frame_rate; 168cd4e3c3eSJouni Malinen int duration; 169c2493f83SJouni Malinen unsigned int payload_size; 170cd4e3c3eSJouni Malinen int start_delay; 171cd4e3c3eSJouni Malinen int max_cnt; 172cd4e3c3eSJouni Malinen enum sigma_traffic_class { 173cd4e3c3eSJouni Malinen SIGMA_TC_VOICE, 174cd4e3c3eSJouni Malinen SIGMA_TC_VIDEO, 175cd4e3c3eSJouni Malinen SIGMA_TC_BACKGROUND, 176cd4e3c3eSJouni Malinen SIGMA_TC_BEST_EFFORT 177cd4e3c3eSJouni Malinen } tc; 178cd4e3c3eSJouni Malinen int user_priority; 179cd4e3c3eSJouni Malinen int user_priority_set; 180cd4e3c3eSJouni Malinen int started; 181cd4e3c3eSJouni Malinen int no_timestamps; 182cd4e3c3eSJouni Malinen 183cd4e3c3eSJouni Malinen int sock; 184cd4e3c3eSJouni Malinen pthread_t thr; 185cd4e3c3eSJouni Malinen int stop; 186cd4e3c3eSJouni Malinen int ta_send_in_progress; 187cd4e3c3eSJouni Malinen int trans_proto; 188cd4e3c3eSJouni Malinen 189cd4e3c3eSJouni Malinen /* Statistics */ 190cd4e3c3eSJouni Malinen int tx_act_frames; /* 191cd4e3c3eSJouni Malinen * Number of frames generated by the traffic 192cd4e3c3eSJouni Malinen * generator application. The name is defined in the 193cd4e3c3eSJouni Malinen * Sigma CAPI spec. 194cd4e3c3eSJouni Malinen */ 195cd4e3c3eSJouni Malinen int tx_frames; 196cd4e3c3eSJouni Malinen int rx_frames; 197cd4e3c3eSJouni Malinen unsigned long long tx_payload_bytes; 198cd4e3c3eSJouni Malinen unsigned long long rx_payload_bytes; 199cd4e3c3eSJouni Malinen int out_of_seq_frames; 200cd4e3c3eSJouni Malinen struct sigma_frame_stats *stats; 201cd4e3c3eSJouni Malinen unsigned int num_stats; 202cd4e3c3eSJouni Malinen unsigned int stream_id; 203cd4e3c3eSJouni Malinen 204cd4e3c3eSJouni Malinen /* U-APSD */ 205cd4e3c3eSJouni Malinen unsigned int sta_id; 206cd4e3c3eSJouni Malinen unsigned int rx_cookie; 207cd4e3c3eSJouni Malinen unsigned int uapsd_sta_tc; 208cd4e3c3eSJouni Malinen unsigned int uapsd_rx_state; 209cd4e3c3eSJouni Malinen unsigned int uapsd_tx_state; 210cd4e3c3eSJouni Malinen unsigned int tx_stop_cnt; 211cd4e3c3eSJouni Malinen unsigned int tx_hello_cnt; 212cd4e3c3eSJouni Malinen pthread_t uapsd_send_thr; 213cd4e3c3eSJouni Malinen pthread_cond_t tx_thr_cond; 214cd4e3c3eSJouni Malinen pthread_mutex_t tx_thr_mutex; 215cd4e3c3eSJouni Malinen int reset_rx; 216cd4e3c3eSJouni Malinen int num_retry; 217cd4e3c3eSJouni Malinen char ifname[IFNAMSIZ]; /* ifname from the command */ 218cd4e3c3eSJouni Malinen struct sigma_dut *dut; /* for traffic agent thread to access context */ 21979594049SPradeep Reddy POTTETI /* console */ 22079594049SPradeep Reddy POTTETI char test_name[9]; /* test case name */ 22179594049SPradeep Reddy POTTETI int can_quit; 22279594049SPradeep Reddy POTTETI int reset; 223cd4e3c3eSJouni Malinen }; 224cd4e3c3eSJouni Malinen 225cd4e3c3eSJouni Malinen #endif /* CONFIG_TRAFFIC_AGENT */ 226cd4e3c3eSJouni Malinen 227bc180dc5SAlexei Avshalom Lazar /* extended scheduling test */ 228bc180dc5SAlexei Avshalom Lazar enum sigma_ese_type { 229bc180dc5SAlexei Avshalom Lazar ESE_CBAP, 230bc180dc5SAlexei Avshalom Lazar ESE_SP, 231bc180dc5SAlexei Avshalom Lazar }; 232bc180dc5SAlexei Avshalom Lazar 233bc180dc5SAlexei Avshalom Lazar struct sigma_ese_alloc { 234bc180dc5SAlexei Avshalom Lazar unsigned int percent_bi; 235bc180dc5SAlexei Avshalom Lazar enum sigma_ese_type type; 236bc180dc5SAlexei Avshalom Lazar unsigned int src_aid, dst_aid; 237bc180dc5SAlexei Avshalom Lazar }; 238bc180dc5SAlexei Avshalom Lazar 239bc180dc5SAlexei Avshalom Lazar #define ESE_BCAST_AID 255 240bc180dc5SAlexei Avshalom Lazar #define MAX_ESE_ALLOCS 4 241cd4e3c3eSJouni Malinen 242cd4e3c3eSJouni Malinen #define NUM_AP_AC 4 243cd4e3c3eSJouni Malinen #define AP_AC_BE 0 244cd4e3c3eSJouni Malinen #define AP_AC_BK 1 245cd4e3c3eSJouni Malinen #define AP_AC_VI 2 246cd4e3c3eSJouni Malinen #define AP_AC_VO 3 247cd4e3c3eSJouni Malinen 248b7b297f2SAdil Saeed Musthafa #define MAX_WLAN_TAGS 3 24969063725SAdil Saeed Musthafa #define MBO_MAX_PREF_BSSIDS 10 2504ec61bd9SAdil Saeed Musthafa #define MAX_FT_BSS_LIST 10 251b7b297f2SAdil Saeed Musthafa 2528863ec7cSPeng Xu #define TRANSPORT_PROTO_TYPE_TCP 0x06 2538863ec7cSPeng Xu #define TRANSPORT_PROTO_TYPE_UDP 0x11 2548863ec7cSPeng Xu #define NAN_TRANSPORT_PORT_DEFAULT 7000 2558863ec7cSPeng Xu #define NAN_TRANSPORT_PROTOCOL_DEFAULT TRANSPORT_PROTO_TYPE_TCP 2568863ec7cSPeng Xu 25757fa3d83SJouni Malinen enum value_not_set_enabled_disabled { 25857fa3d83SJouni Malinen VALUE_NOT_SET, 25957fa3d83SJouni Malinen VALUE_ENABLED, 26057fa3d83SJouni Malinen VALUE_DISABLED 26157fa3d83SJouni Malinen }; 26257fa3d83SJouni Malinen 2634b0cdee4SPradeep Reddy Potteti enum sec_ch_offset { 2644b0cdee4SPradeep Reddy Potteti SEC_CH_NO, 2654b0cdee4SPradeep Reddy Potteti SEC_CH_40ABOVE, 2664b0cdee4SPradeep Reddy Potteti SEC_CH_40BELOW 2674b0cdee4SPradeep Reddy Potteti }; 2684b0cdee4SPradeep Reddy Potteti 26969063725SAdil Saeed Musthafa struct mbo_pref_ap { 27069063725SAdil Saeed Musthafa int ap_ne_class; 27169063725SAdil Saeed Musthafa int ap_ne_op_ch; 27269063725SAdil Saeed Musthafa int ap_ne_pref; 27369063725SAdil Saeed Musthafa unsigned char mac_addr[ETH_ALEN]; 27469063725SAdil Saeed Musthafa }; 27569063725SAdil Saeed Musthafa 276291d97daSPeng Xu #ifdef NL80211_SUPPORT 277291d97daSPeng Xu #define SOCK_BUF_SIZE (32 * 1024) 278291d97daSPeng Xu struct nl80211_ctx { 279291d97daSPeng Xu struct nl_sock *sock; 280291d97daSPeng Xu int netlink_familyid; 281291d97daSPeng Xu int nlctrl_familyid; 282291d97daSPeng Xu size_t sock_buf_size; 283291d97daSPeng Xu }; 284291d97daSPeng Xu #endif /* NL80211_SUPPORT */ 285291d97daSPeng Xu 28633f700cfSAlexei Avshalom Lazar /* hardcoded long WSC IE values to force fragmentation */ 28733f700cfSAlexei Avshalom Lazar #define WPS_LONG_DEVICE_NAME "Qti1234511adtest1234567890123456" 28833f700cfSAlexei Avshalom Lazar #define WPS_LONG_MANUFACTURER "Qti1234511adQti1234511adQti1234511adQti1234511adQti1234511ad" 28933f700cfSAlexei Avshalom Lazar #define WPS_LONG_MODEL_NAME "Qti1234511adtest1234567890123456" 29033f700cfSAlexei Avshalom Lazar #define WPS_LONG_MODEL_NUMBER "11111111111111111111111111111111" 29133f700cfSAlexei Avshalom Lazar #define WPS_LONG_SERIAL_NUMBER "22222222222222222222222222222222" 29233f700cfSAlexei Avshalom Lazar 293e4fde73dSJouni Malinen enum akm_suite_values { 294e4fde73dSJouni Malinen AKM_WPA_EAP = 1, 295e4fde73dSJouni Malinen AKM_WPA_PSK = 2, 296e4fde73dSJouni Malinen AKM_FT_EAP = 3, 297e4fde73dSJouni Malinen AKM_FT_PSK = 4, 298e4fde73dSJouni Malinen AKM_EAP_SHA256 = 5, 299e4fde73dSJouni Malinen AKM_PSK_SHA256 = 6, 300e4fde73dSJouni Malinen AKM_SAE = 8, 301e4fde73dSJouni Malinen AKM_FT_SAE = 9, 302e4fde73dSJouni Malinen AKM_SUITE_B = 12, 303e4fde73dSJouni Malinen AKM_FT_SUITE_B = 13, 304e4fde73dSJouni Malinen AKM_FILS_SHA256 = 14, 305e4fde73dSJouni Malinen AKM_FILS_SHA384 = 15, 306e4fde73dSJouni Malinen AKM_FT_FILS_SHA256 = 16, 307e4fde73dSJouni Malinen AKM_FT_FILS_SHA384 = 17, 308e4fde73dSJouni Malinen 309e4fde73dSJouni Malinen }; 310e4fde73dSJouni Malinen 311cd4e3c3eSJouni Malinen struct sigma_dut { 312cd4e3c3eSJouni Malinen int s; /* server TCP socket */ 313cd4e3c3eSJouni Malinen int debug_level; 314cd4e3c3eSJouni Malinen int stdout_debug; 315cd4e3c3eSJouni Malinen struct sigma_cmd_handler *cmds; 3160fee701cSJouni Malinen int response_sent; 317cd4e3c3eSJouni Malinen 318cd4e3c3eSJouni Malinen /* Default timeout value (seconds) for commands */ 319cd4e3c3eSJouni Malinen unsigned int default_timeout; 320cd4e3c3eSJouni Malinen 321cd4e3c3eSJouni Malinen int next_streamid; 322cd4e3c3eSJouni Malinen 323cd4e3c3eSJouni Malinen const char *bridge; /* bridge interface to use in AP mode */ 324cd4e3c3eSJouni Malinen 325cd4e3c3eSJouni Malinen enum sigma_mode { 326cd4e3c3eSJouni Malinen SIGMA_MODE_UNKNOWN, 327cd4e3c3eSJouni Malinen SIGMA_MODE_STATION, 328cd4e3c3eSJouni Malinen SIGMA_MODE_AP, 329cd4e3c3eSJouni Malinen SIGMA_MODE_SNIFFER 330cd4e3c3eSJouni Malinen } mode; 331cd4e3c3eSJouni Malinen 332cd4e3c3eSJouni Malinen /* 333cd4e3c3eSJouni Malinen * Local cached values to handle API that does not provide all the 334cd4e3c3eSJouni Malinen * needed information with commands that actually trigger some 335cd4e3c3eSJouni Malinen * operations. 336cd4e3c3eSJouni Malinen */ 337cd4e3c3eSJouni Malinen int listen_chn; 338cd4e3c3eSJouni Malinen int persistent; 339cd4e3c3eSJouni Malinen int intra_bss; 340cd4e3c3eSJouni Malinen int noa_duration; 341cd4e3c3eSJouni Malinen int noa_interval; 342cd4e3c3eSJouni Malinen int noa_count; 343cd4e3c3eSJouni Malinen enum wfa_cs_wps_method { 344cd4e3c3eSJouni Malinen WFA_CS_WPS_NOT_READY, 345cd4e3c3eSJouni Malinen WFA_CS_WPS_PBC, 346cd4e3c3eSJouni Malinen WFA_CS_WPS_PIN_DISPLAY, 347cd4e3c3eSJouni Malinen WFA_CS_WPS_PIN_LABEL, 348cd4e3c3eSJouni Malinen WFA_CS_WPS_PIN_KEYPAD 349cd4e3c3eSJouni Malinen } wps_method; 350cd4e3c3eSJouni Malinen char wps_pin[9]; 351cd4e3c3eSJouni Malinen 352cd4e3c3eSJouni Malinen struct wfa_cs_p2p_group *groups; 353cd4e3c3eSJouni Malinen 354cd4e3c3eSJouni Malinen char infra_ssid[33]; 355cd4e3c3eSJouni Malinen int infra_network_id; 356cd4e3c3eSJouni Malinen 357cd4e3c3eSJouni Malinen enum p2p_mode { 358cd4e3c3eSJouni Malinen P2P_IDLE, P2P_DISCOVER, P2P_LISTEN, P2P_DISABLE 359cd4e3c3eSJouni Malinen } p2p_mode; 360cd4e3c3eSJouni Malinen 361cd4e3c3eSJouni Malinen int go; 362cd4e3c3eSJouni Malinen int p2p_client; 363091e253dSPurushottam Kushwaha char *p2p_ifname; 364cd4e3c3eSJouni Malinen 365cd4e3c3eSJouni Malinen int client_uapsd; 366cd4e3c3eSJouni Malinen 367cd4e3c3eSJouni Malinen char arp_ipaddr[IP_ADDR_STR_LEN]; 368cd4e3c3eSJouni Malinen char arp_ifname[IFNAMSIZ + 1]; 369cd4e3c3eSJouni Malinen 370cd4e3c3eSJouni Malinen enum sta_pmf { 371cd4e3c3eSJouni Malinen STA_PMF_DISABLED, 372cd4e3c3eSJouni Malinen STA_PMF_OPTIONAL, 373cd4e3c3eSJouni Malinen STA_PMF_REQUIRED 374cd4e3c3eSJouni Malinen } sta_pmf; 375cd4e3c3eSJouni Malinen 376cd4e3c3eSJouni Malinen int no_tpk_expiration; 377cd4e3c3eSJouni Malinen 378cd4e3c3eSJouni Malinen int er_oper_performed; 379cd4e3c3eSJouni Malinen char er_oper_bssid[20]; 380cd4e3c3eSJouni Malinen int amsdu_size; 381cd4e3c3eSJouni Malinen int back_rcv_buf; 382cd4e3c3eSJouni Malinen 383cd4e3c3eSJouni Malinen int testbed_flag_txsp; 384cd4e3c3eSJouni Malinen int testbed_flag_rxsp; 385cd4e3c3eSJouni Malinen int chwidth; 386cd4e3c3eSJouni Malinen 387cd4e3c3eSJouni Malinen /* AP configuration */ 388cd4e3c3eSJouni Malinen char ap_ssid[33]; 389b7b297f2SAdil Saeed Musthafa /* 390b7b297f2SAdil Saeed Musthafa * WLAN-TAG of 1 will use 'ap_' variables; 391b7b297f2SAdil Saeed Musthafa * tag higher than 1 will use 'ap_tag_' variables. 392b7b297f2SAdil Saeed Musthafa */ 393b7b297f2SAdil Saeed Musthafa char ap_tag_ssid[MAX_WLAN_TAGS - 1][33]; 394cd4e3c3eSJouni Malinen enum ap_mode { 395cd4e3c3eSJouni Malinen AP_11a, 396cd4e3c3eSJouni Malinen AP_11g, 397cd4e3c3eSJouni Malinen AP_11b, 398cd4e3c3eSJouni Malinen AP_11na, 399cd4e3c3eSJouni Malinen AP_11ng, 400cd4e3c3eSJouni Malinen AP_11ac, 4012712cc86SAlexei Avshalom Lazar AP_11ad, 402cd4e3c3eSJouni Malinen AP_inval 403cd4e3c3eSJouni Malinen } ap_mode; 404cd4e3c3eSJouni Malinen int ap_channel; 405cd4e3c3eSJouni Malinen int ap_rts; 406cd4e3c3eSJouni Malinen int ap_frgmnt; 407cd4e3c3eSJouni Malinen int ap_bcnint; 408cd4e3c3eSJouni Malinen struct qos_params { 409cd4e3c3eSJouni Malinen int ac; 410cd4e3c3eSJouni Malinen int cwmin; 411cd4e3c3eSJouni Malinen int cwmax; 412cd4e3c3eSJouni Malinen int aifs; 413cd4e3c3eSJouni Malinen int txop; 414cd4e3c3eSJouni Malinen int acm; 415cd4e3c3eSJouni Malinen } ap_qos[NUM_AP_AC], ap_sta_qos[NUM_AP_AC]; 41657fa3d83SJouni Malinen enum value_not_set_enabled_disabled ap_noack; 41757fa3d83SJouni Malinen enum value_not_set_enabled_disabled ap_ampdu; 41857fa3d83SJouni Malinen enum value_not_set_enabled_disabled ap_amsdu; 41957fa3d83SJouni Malinen enum value_not_set_enabled_disabled ap_rx_amsdu; 420cd4e3c3eSJouni Malinen int ap_ampdu_exp; 42157fa3d83SJouni Malinen enum value_not_set_enabled_disabled ap_addba_reject; 422cd4e3c3eSJouni Malinen int ap_fixed_rate; 423cd4e3c3eSJouni Malinen int ap_mcs; 424cd4e3c3eSJouni Malinen int ap_rx_streams; 425cd4e3c3eSJouni Malinen int ap_tx_streams; 426cd4e3c3eSJouni Malinen unsigned int ap_vhtmcs_map; 42757fa3d83SJouni Malinen enum value_not_set_enabled_disabled ap_ldpc; 42857fa3d83SJouni Malinen enum value_not_set_enabled_disabled ap_sig_rts; 429cd4e3c3eSJouni Malinen enum ap_chwidth { 430cd4e3c3eSJouni Malinen AP_20, 431cd4e3c3eSJouni Malinen AP_40, 432cd4e3c3eSJouni Malinen AP_80, 433cd4e3c3eSJouni Malinen AP_160, 43463ab8483Spriyadharshini gowthaman AP_80_80, 435cd4e3c3eSJouni Malinen AP_AUTO 436cd4e3c3eSJouni Malinen } ap_chwidth; 437bf8af292SPradeep Reddy Potteti enum ap_chwidth default_11na_ap_chwidth; 438bf8af292SPradeep Reddy Potteti enum ap_chwidth default_11ng_ap_chwidth; 439cd4e3c3eSJouni Malinen int ap_tx_stbc; 44057fa3d83SJouni Malinen enum value_not_set_enabled_disabled ap_dyn_bw_sig; 441cd4e3c3eSJouni Malinen int ap_sgi80; 442cd4e3c3eSJouni Malinen int ap_p2p_mgmt; 443cd4e3c3eSJouni Malinen enum ap_key_mgmt { 444cd4e3c3eSJouni Malinen AP_OPEN, 445cd4e3c3eSJouni Malinen AP_WPA2_PSK, 446cd4e3c3eSJouni Malinen AP_WPA_PSK, 447cd4e3c3eSJouni Malinen AP_WPA2_EAP, 448cd4e3c3eSJouni Malinen AP_WPA_EAP, 449cd4e3c3eSJouni Malinen AP_WPA2_EAP_MIXED, 45030824df7SJouni Malinen AP_WPA2_PSK_MIXED, 45130824df7SJouni Malinen AP_WPA2_SAE, 45230824df7SJouni Malinen AP_WPA2_PSK_SAE, 453ad395a20SJouni Malinen AP_SUITEB, 454147b3c39SJouni Malinen AP_WPA2_OWE, 4554cf699f1SJouni Malinen AP_WPA2_EAP_OSEN, 4566be21c87SJouni Malinen AP_WPA2_FT_EAP, 4576be21c87SJouni Malinen AP_WPA2_FT_PSK, 4586be21c87SJouni Malinen AP_WPA2_EAP_SHA256, 4596be21c87SJouni Malinen AP_WPA2_PSK_SHA256, 4606be21c87SJouni Malinen AP_WPA2_ENT_FT_EAP, 461c2b9121eSJouni Malinen AP_OSEN, 462cd4e3c3eSJouni Malinen } ap_key_mgmt; 463b7b297f2SAdil Saeed Musthafa enum ap_tag_key_mgmt { 464cd4e3c3eSJouni Malinen AP2_OPEN, 465b7b297f2SAdil Saeed Musthafa AP2_OSEN, 466353ba8b1SJouni Malinen AP2_WPA2_PSK, 467353ba8b1SJouni Malinen AP2_WPA2_OWE, 468b7b297f2SAdil Saeed Musthafa } ap_tag_key_mgmt[MAX_WLAN_TAGS - 1]; 469cd4e3c3eSJouni Malinen int ap_add_sha256; 470de81f395Spriyadharshini gowthaman int ap_add_sha384; 47124dc7e40SSarvepalli, Rajesh Babu int ap_rsn_preauth; 472cd4e3c3eSJouni Malinen enum ap_pmf { 473cd4e3c3eSJouni Malinen AP_PMF_DISABLED, 474cd4e3c3eSJouni Malinen AP_PMF_OPTIONAL, 475cd4e3c3eSJouni Malinen AP_PMF_REQUIRED 476cd4e3c3eSJouni Malinen } ap_pmf; 477cd4e3c3eSJouni Malinen enum ap_cipher { 4782ba24498SJouni Malinen AP_NO_GROUP_CIPHER_SET, 479cd4e3c3eSJouni Malinen AP_CCMP, 480cd4e3c3eSJouni Malinen AP_TKIP, 481cd4e3c3eSJouni Malinen AP_WEP, 482cd4e3c3eSJouni Malinen AP_PLAIN, 483ad395a20SJouni Malinen AP_CCMP_TKIP, 484ad395a20SJouni Malinen AP_GCMP_256, 4853d633daeSJouni Malinen AP_GCMP_128, 4863d633daeSJouni Malinen AP_CCMP_256, 487d538c78eSJouni Malinen AP_CCMP_128_GCMP_256, 4882ba24498SJouni Malinen } ap_cipher, ap_group_cipher; 4893d633daeSJouni Malinen enum ap_group_mgmt_cipher { 4903d633daeSJouni Malinen AP_NO_GROUP_MGMT_CIPHER_SET, 4913d633daeSJouni Malinen AP_BIP_GMAC_256, 4923d633daeSJouni Malinen AP_BIP_CMAC_256, 4933d633daeSJouni Malinen AP_BIP_GMAC_128, 4943d633daeSJouni Malinen AP_BIP_CMAC_128, 4953d633daeSJouni Malinen } ap_group_mgmt_cipher; 496ed670f4cSJouni Malinen char *ap_sae_groups; 4972f524ce8SJouni Malinen int sae_anti_clogging_threshold; 498b347db0fSJouni Malinen int sae_reflection; 4992126f422SJouni Malinen char ap_passphrase[101]; 50063370625SJouni Malinen char ap_psk[65]; 501*09550de6SJouni Malinen char *ap_sae_passwords; 502cd4e3c3eSJouni Malinen char ap_wepkey[27]; 503cd4e3c3eSJouni Malinen char ap_radius_ipaddr[20]; 504cd4e3c3eSJouni Malinen int ap_radius_port; 505cd4e3c3eSJouni Malinen char ap_radius_password[200]; 506cd4e3c3eSJouni Malinen char ap2_radius_ipaddr[20]; 507cd4e3c3eSJouni Malinen int ap2_radius_port; 508cd4e3c3eSJouni Malinen char ap2_radius_password[200]; 509cd4e3c3eSJouni Malinen int ap_tdls_prohibit; 510cd4e3c3eSJouni Malinen int ap_tdls_prohibit_chswitch; 511cd4e3c3eSJouni Malinen int ap_hs2; 512cd4e3c3eSJouni Malinen int ap_dgaf_disable; 513cd4e3c3eSJouni Malinen int ap_p2p_cross_connect; 514cd4e3c3eSJouni Malinen int ap_oper_name; 515cd4e3c3eSJouni Malinen int ap_wan_metrics; 516cd4e3c3eSJouni Malinen int ap_conn_capab; 517cd4e3c3eSJouni Malinen int ap_oper_class; 518cd4e3c3eSJouni Malinen 519cd4e3c3eSJouni Malinen int ap_interworking; 520cd4e3c3eSJouni Malinen int ap_access_net_type; 521cd4e3c3eSJouni Malinen int ap_internet; 522cd4e3c3eSJouni Malinen int ap_venue_group; 523cd4e3c3eSJouni Malinen int ap_venue_type; 524cd4e3c3eSJouni Malinen char ap_hessid[20]; 525cd4e3c3eSJouni Malinen char ap_roaming_cons[100]; 526cd4e3c3eSJouni Malinen int ap_venue_name; 527cd4e3c3eSJouni Malinen int ap_net_auth_type; 528cd4e3c3eSJouni Malinen int ap_nai_realm_list; 529cd4e3c3eSJouni Malinen char ap_domain_name_list[1000]; 530cd4e3c3eSJouni Malinen int ap_ip_addr_type_avail; 531cd4e3c3eSJouni Malinen char ap_plmn_mcc[10][4]; 532cd4e3c3eSJouni Malinen char ap_plmn_mnc[10][4]; 533cd4e3c3eSJouni Malinen int ap_gas_cb_delay; 534cd4e3c3eSJouni Malinen int ap_proxy_arp; 535cd4e3c3eSJouni Malinen int ap2_proxy_arp; 536dbbc2c48SJouni Malinen int ap2_osu; 537cd4e3c3eSJouni Malinen int ap_l2tif; 538cd4e3c3eSJouni Malinen int ap_anqpserver; 539cd4e3c3eSJouni Malinen int ap_anqpserver_on; 540cd4e3c3eSJouni Malinen int ap_osu_provider_list; 54193a837f9SJouni Malinen int ap_osu_provider_nai_list; 542cd4e3c3eSJouni Malinen int ap_qos_map_set; 543cd4e3c3eSJouni Malinen int ap_bss_load; 544cd4e3c3eSJouni Malinen char ap_osu_server_uri[10][256]; 545cd4e3c3eSJouni Malinen char ap_osu_ssid[33]; 546cd4e3c3eSJouni Malinen int ap_osu_method[10]; 547cd4e3c3eSJouni Malinen int ap_osu_icon_tag; 54854a89b08SJouni Malinen int ap_venue_url; 549f7ff42b7SJouni Malinen int ap_advice_of_charge; 550ac10453cSJouni Malinen int ap_oper_icon_metadata; 551ac367141SJouni Malinen int ap_tnc_file_name; 552ac367141SJouni Malinen unsigned int ap_tnc_time_stamp; 553cd4e3c3eSJouni Malinen 554cd4e3c3eSJouni Malinen int ap_fake_pkhash; 555cd4e3c3eSJouni Malinen int ap_disable_protection; 556cd4e3c3eSJouni Malinen int ap_allow_vht_wep; 557cd4e3c3eSJouni Malinen int ap_allow_vht_tkip; 558cd4e3c3eSJouni Malinen 559cd4e3c3eSJouni Malinen enum ap_vht_chwidth { 560cd4e3c3eSJouni Malinen AP_20_40_VHT_OPER_CHWIDTH, 561cd4e3c3eSJouni Malinen AP_80_VHT_OPER_CHWIDTH, 562cd4e3c3eSJouni Malinen AP_160_VHT_OPER_CHWIDTH 563cd4e3c3eSJouni Malinen } ap_vht_chwidth; 564cd4e3c3eSJouni Malinen int ap_txBF; 565cd4e3c3eSJouni Malinen int ap_mu_txBF; 566fba27db5SPradeep Reddy POTTETI enum ap_regulatory_mode { 567fba27db5SPradeep Reddy POTTETI AP_80211D_MODE_DISABLED, 568fba27db5SPradeep Reddy POTTETI AP_80211D_MODE_ENABLED, 569fba27db5SPradeep Reddy POTTETI } ap_regulatory_mode; 570fba27db5SPradeep Reddy POTTETI enum ap_dfs_mode { 571fba27db5SPradeep Reddy POTTETI AP_DFS_MODE_DISABLED, 572fba27db5SPradeep Reddy POTTETI AP_DFS_MODE_ENABLED, 573fba27db5SPradeep Reddy POTTETI } ap_dfs_mode; 574264d544aSpriyadharshini gowthaman int ap_ndpa_frame; 575cd4e3c3eSJouni Malinen 5768e26ff4aSpriyadharshini gowthaman int ap_lci; 5778e26ff4aSpriyadharshini gowthaman char ap_val_lci[33]; 578c2357bdcSpriyadharshini gowthaman char ap_infoz[17]; 5798e26ff4aSpriyadharshini gowthaman int ap_lcr; 5808e26ff4aSpriyadharshini gowthaman char ap_val_lcr[400]; 5818e26ff4aSpriyadharshini gowthaman int ap_rrm; 5828e26ff4aSpriyadharshini gowthaman int ap_rtt; 5838e26ff4aSpriyadharshini gowthaman int ap_neighap; /* number of configured neighbor APs */ 5848e26ff4aSpriyadharshini gowthaman unsigned char ap_val_neighap[3][6]; 5858e26ff4aSpriyadharshini gowthaman int ap_opchannel; /* number of oper channels */ 5868e26ff4aSpriyadharshini gowthaman int ap_val_opchannel[3]; 5878e26ff4aSpriyadharshini gowthaman int ap_scan; 588c2357bdcSpriyadharshini gowthaman int ap_fqdn_held; 589c2357bdcSpriyadharshini gowthaman int ap_fqdn_supl; 590a27b5b6eSpriyadharshini gowthaman int ap_msnt_type; 591a27b5b6eSpriyadharshini gowthaman 592b4e05fc1Spriyadharshini gowthaman int ap_mbo; 593b4e05fc1Spriyadharshini gowthaman int ap_ne_class; 594b4e05fc1Spriyadharshini gowthaman int ap_ne_op_ch; 595b4e05fc1Spriyadharshini gowthaman int ap_set_bssidpref; 596b4e05fc1Spriyadharshini gowthaman int ap_btmreq_disassoc_imnt; 597b4e05fc1Spriyadharshini gowthaman int ap_btmreq_term_bit; 5987d9ae389SAdil Saeed Musthafa int ap_disassoc_timer; 5997d9ae389SAdil Saeed Musthafa int ap_btmreq_bss_term_dur; 600604c8261SAdil Saeed Musthafa enum reg_domain { 601604c8261SAdil Saeed Musthafa REG_DOMAIN_NOT_SET, 602604c8261SAdil Saeed Musthafa REG_DOMAIN_LOCAL, 603604c8261SAdil Saeed Musthafa REG_DOMAIN_GLOBAL 604604c8261SAdil Saeed Musthafa } ap_reg_domain; 605cf752fa7SAdil Saeed Musthafa char ap_mobility_domain[10]; 606023108aeSAdil Saeed Musthafa unsigned char ap_cell_cap_pref; 6074ec61bd9SAdil Saeed Musthafa int ap_ft_oa; 6084ec61bd9SAdil Saeed Musthafa int ap_name; 60909d613e1Spriyadharshini gowthaman int ap_interface_5g; 61009d613e1Spriyadharshini gowthaman int ap_interface_2g; 611776562e2Spriyadharshini gowthaman int ap_assoc_delay; 61294062b58Spriyadharshini gowthaman int ap_btmreq_bss_term_tsf; 61300798a21Spriyadharshini gowthaman int ap_fils_dscv_int; 61400798a21Spriyadharshini gowthaman int ap_nairealm_int; 61500798a21Spriyadharshini gowthaman char ap_nairealm[33]; 61600798a21Spriyadharshini gowthaman int ap_blechanutil; 61700798a21Spriyadharshini gowthaman int ap_ble_admit_cap; 61800798a21Spriyadharshini gowthaman int ap_datappdudura; 61900798a21Spriyadharshini gowthaman int ap_airtimefract; 62000798a21Spriyadharshini gowthaman char ap_dhcpserv_ipaddr[20]; 62100798a21Spriyadharshini gowthaman int ap_dhcp_stop; 62200798a21Spriyadharshini gowthaman int ap_bawinsize; 62300798a21Spriyadharshini gowthaman int ap_blestacnt; 624cb22e43aSpriyadharshini gowthaman int ap_ul_availcap; 625cb22e43aSpriyadharshini gowthaman int ap_dl_availcap; 626de81f395Spriyadharshini gowthaman int ap_akm; 627de81f395Spriyadharshini gowthaman int ap_pmksa; 628de81f395Spriyadharshini gowthaman int ap_pmksa_caching; 62963ab8483Spriyadharshini gowthaman int ap_80plus80; 6309149afc1Spriyadharshini gowthaman int ap_oper_chn; 6314ec61bd9SAdil Saeed Musthafa 63269063725SAdil Saeed Musthafa struct mbo_pref_ap mbo_pref_aps[MBO_MAX_PREF_BSSIDS]; 63369063725SAdil Saeed Musthafa struct mbo_pref_ap mbo_self_ap_tuple; 63469063725SAdil Saeed Musthafa int mbo_pref_ap_cnt; 6354ec61bd9SAdil Saeed Musthafa unsigned char ft_bss_mac_list[MAX_FT_BSS_LIST][ETH_ALEN]; 6364ec61bd9SAdil Saeed Musthafa int ft_bss_mac_cnt; 637b4e05fc1Spriyadharshini gowthaman 63800798a21Spriyadharshini gowthaman enum value_not_set_enabled_disabled ap_oce; 63900798a21Spriyadharshini gowthaman enum value_not_set_enabled_disabled ap_filsdscv; 64000798a21Spriyadharshini gowthaman enum value_not_set_enabled_disabled ap_filshlp; 64100798a21Spriyadharshini gowthaman enum value_not_set_enabled_disabled ap_broadcast_ssid; 64200798a21Spriyadharshini gowthaman enum value_not_set_enabled_disabled ap_rnr; 64300798a21Spriyadharshini gowthaman enum value_not_set_enabled_disabled ap_esp; 64400798a21Spriyadharshini gowthaman 645350f1913Spriyadharshini gowthaman enum ppdu { 646350f1913Spriyadharshini gowthaman PPDU_NOT_SET, 647350f1913Spriyadharshini gowthaman PPDU_MU, 648350f1913Spriyadharshini gowthaman PPDU_SU, 649350f1913Spriyadharshini gowthaman PPDU_ER, 650350f1913Spriyadharshini gowthaman PPDU_TB, 651350f1913Spriyadharshini gowthaman } ap_he_ppdu; 652350f1913Spriyadharshini gowthaman 653bc180dc5SAlexei Avshalom Lazar struct sigma_ese_alloc ap_ese_allocs[MAX_ESE_ALLOCS]; 654bc180dc5SAlexei Avshalom Lazar int ap_num_ese_allocs; 655bc180dc5SAlexei Avshalom Lazar 656cd4e3c3eSJouni Malinen const char *hostapd_debug_log; 6573e8267ecSAlexei Avshalom Lazar const char *wpa_supplicant_debug_log; 658cd4e3c3eSJouni Malinen 659cd4e3c3eSJouni Malinen #ifdef CONFIG_TRAFFIC_AGENT 660cd4e3c3eSJouni Malinen /* Traffic Agent */ 661cd4e3c3eSJouni Malinen struct sigma_stream streams[MAX_SIGMA_STREAMS]; 662cd4e3c3eSJouni Malinen int stream_id; 663cd4e3c3eSJouni Malinen int num_streams; 664cd4e3c3eSJouni Malinen pthread_t thr; 665cd4e3c3eSJouni Malinen #endif /* CONFIG_TRAFFIC_AGENT */ 666cd4e3c3eSJouni Malinen 667c2493f83SJouni Malinen unsigned int throughput_pktsize; /* If non-zero, override pktsize for 668c2493f83SJouni Malinen * throughput tests */ 669cd4e3c3eSJouni Malinen int no_timestamps; 670cd4e3c3eSJouni Malinen 671cd4e3c3eSJouni Malinen const char *sniffer_ifname; 672cd4e3c3eSJouni Malinen const char *set_macaddr; 673cd4e3c3eSJouni Malinen int tmp_mac_addr; 674cd4e3c3eSJouni Malinen int ap_is_dual; 675cd4e3c3eSJouni Malinen enum ap_mode ap_mode_1; 676cd4e3c3eSJouni Malinen enum ap_chwidth ap_chwidth_1; 677cd4e3c3eSJouni Malinen int ap_channel_1; 678cd4e3c3eSJouni Malinen char ap_countrycode[3]; 679cd4e3c3eSJouni Malinen 680cd4e3c3eSJouni Malinen int ap_wpsnfc; 681cd4e3c3eSJouni Malinen 6820d3db632SPradeep Reddy POTTETI enum ap_wme { 6830d3db632SPradeep Reddy POTTETI AP_WME_OFF, 6840d3db632SPradeep Reddy POTTETI AP_WME_ON, 6850d3db632SPradeep Reddy POTTETI } ap_wme; 6860d3db632SPradeep Reddy POTTETI 68702e3b826SMohammed Shafi Shajakhan enum ap_wmmps { 68802e3b826SMohammed Shafi Shajakhan AP_WMMPS_OFF, 68902e3b826SMohammed Shafi Shajakhan AP_WMMPS_ON, 69002e3b826SMohammed Shafi Shajakhan } ap_wmmps; 69102e3b826SMohammed Shafi Shajakhan 6924b0cdee4SPradeep Reddy Potteti enum sec_ch_offset ap_chwidth_offset; 6934b0cdee4SPradeep Reddy Potteti 694cd4e3c3eSJouni Malinen #ifdef CONFIG_SNIFFER 695cd4e3c3eSJouni Malinen pid_t sniffer_pid; 696cd4e3c3eSJouni Malinen char sniffer_filename[200]; 697cd4e3c3eSJouni Malinen #endif /* CONFIG_SNIFFER */ 698cd4e3c3eSJouni Malinen 699cd4e3c3eSJouni Malinen int last_set_ip_config_ipv6; 7009c381f59SAmarnath Hullur Subramanyam #ifdef MIRACAST 7019c381f59SAmarnath Hullur Subramanyam pthread_t rtsp_thread_handle; 7029c381f59SAmarnath Hullur Subramanyam int wfd_device_type; /* 0 for source, 1 for sink */ 7039c381f59SAmarnath Hullur Subramanyam char peer_mac_address[32]; 7049c381f59SAmarnath Hullur Subramanyam void *miracast_lib; 7059c381f59SAmarnath Hullur Subramanyam const char *miracast_lib_path; 7069c381f59SAmarnath Hullur Subramanyam char mdns_instance_name[64]; 7079c381f59SAmarnath Hullur Subramanyam #endif /* MIRACAST */ 708cd4e3c3eSJouni Malinen 709cd4e3c3eSJouni Malinen int tid_to_handle[8]; /* Mapping of TID to handle */ 710cd4e3c3eSJouni Malinen int dialog_token; /* Used for generating unique handle for an addTs */ 711cd4e3c3eSJouni Malinen 712cd4e3c3eSJouni Malinen enum sigma_program { 713cd4e3c3eSJouni Malinen PROGRAM_UNKNOWN = 0, 714cd4e3c3eSJouni Malinen PROGRAM_TDLS, 715cd4e3c3eSJouni Malinen PROGRAM_HS2, 716cd4e3c3eSJouni Malinen PROGRAM_HS2_R2, 717cd4e3c3eSJouni Malinen PROGRAM_WFD, 718659a34c4SAmarnath Hullur Subramanyam PROGRAM_DISPLAYR2, 719cd4e3c3eSJouni Malinen PROGRAM_PMF, 720cd4e3c3eSJouni Malinen PROGRAM_WPS, 721cd4e3c3eSJouni Malinen PROGRAM_60GHZ, 722cd4e3c3eSJouni Malinen PROGRAM_HT, 723cd4e3c3eSJouni Malinen PROGRAM_VHT, 724cd4e3c3eSJouni Malinen PROGRAM_NAN, 72512dd4145Spriyadharshini gowthaman PROGRAM_LOC, 72633ea287aSAdil Saeed Musthafa PROGRAM_MBO, 7275c3813a7SJouni Malinen PROGRAM_IOTLP, 7285c3813a7SJouni Malinen PROGRAM_DPP, 729a2cb567bSAnkita Bajaj PROGRAM_OCE, 7300e209fccSpriyadharshini gowthaman PROGRAM_WPA3, 7318f9c8687SAmarnath Hullur Subramanyam PROGRAM_HE, 732ba630459SJouni Malinen PROGRAM_HS2_R3, 733cd4e3c3eSJouni Malinen } program; 734cd4e3c3eSJouni Malinen 735cd4e3c3eSJouni Malinen enum device_type { 736cd4e3c3eSJouni Malinen device_type_unknown, 737cd4e3c3eSJouni Malinen AP_unknown, 738cd4e3c3eSJouni Malinen AP_testbed, 739cd4e3c3eSJouni Malinen AP_dut, 740cd4e3c3eSJouni Malinen STA_unknown, 741cd4e3c3eSJouni Malinen STA_testbed, 742cd4e3c3eSJouni Malinen STA_dut 743cd4e3c3eSJouni Malinen } device_type; 744cd4e3c3eSJouni Malinen 745cd4e3c3eSJouni Malinen enum { 746cd4e3c3eSJouni Malinen DEVROLE_UNKNOWN = 0, 747cd4e3c3eSJouni Malinen DEVROLE_STA, 748cd4e3c3eSJouni Malinen DEVROLE_PCP, 7492712cc86SAlexei Avshalom Lazar DEVROLE_STA_CFON, 7502712cc86SAlexei Avshalom Lazar DEVROLE_AP, 751cd4e3c3eSJouni Malinen } dev_role; 752cd4e3c3eSJouni Malinen 75333f700cfSAlexei Avshalom Lazar enum wps_band { 75433f700cfSAlexei Avshalom Lazar WPS_BAND_NON_60G = 0, 75533f700cfSAlexei Avshalom Lazar WPS_BAND_60G, 75633f700cfSAlexei Avshalom Lazar } band; 75733f700cfSAlexei Avshalom Lazar 758eee9ab0aSAlexei Avshalom Lazar int wps_disable; /* Used for 60G to disable PCP from sending WPS IE */ 75933f700cfSAlexei Avshalom Lazar int wsc_fragment; /* simulate WSC IE fragmentation */ 7602eccf4d4SAlexei Avshalom Lazar int eap_fragment; /* simulate EAP fragmentation */ 761744ae8abSAlexei Avshalom Lazar int wps_forced_version; /* Used to force reported WPS version */ 762b094bf08SAlexei Avshalom Lazar enum { 763b094bf08SAlexei Avshalom Lazar /* no change */ 764b094bf08SAlexei Avshalom Lazar FORCE_RSN_IE_NONE = 0, 765b094bf08SAlexei Avshalom Lazar /* if exists, remove and clear privacy bit */ 766b094bf08SAlexei Avshalom Lazar FORCE_RSN_IE_REMOVE, 767b094bf08SAlexei Avshalom Lazar /* if not exists, add and set privacy bit */ 768b094bf08SAlexei Avshalom Lazar FORCE_RSN_IE_ADD, 769b094bf08SAlexei Avshalom Lazar } force_rsn_ie; /* override RSN IE in association request */ 77033f700cfSAlexei Avshalom Lazar 771cd4e3c3eSJouni Malinen const char *version; 772cd4e3c3eSJouni Malinen int no_ip_addr_set; 773cd4e3c3eSJouni Malinen int sta_channel; 774cd4e3c3eSJouni Malinen 775cd4e3c3eSJouni Malinen const char *summary_log; 776cd4e3c3eSJouni Malinen const char *hostapd_entropy_log; 777cd4e3c3eSJouni Malinen 778cd4e3c3eSJouni Malinen int iface_down_on_reset; 779cd4e3c3eSJouni Malinen int write_stats; /* traffic stream e2e*.txt files */ 78073d7af09SBala Krishna Bhamidipati int sim_no_username; /* do not set SIM username to use real SIM */ 7815db3b104SJouni Malinen 7825db3b104SJouni Malinen const char *vendor_name; /* device_get_info vendor override */ 7835db3b104SJouni Malinen const char *model_name; /* device_get_info model override */ 7845db3b104SJouni Malinen const char *version_name; /* device_get_info version override */ 7857d37f411SRakesh Sunki 78614cfcd25SRakesh Sunki int ndp_enable; /* Flag which is set once the NDP is setup */ 78714cfcd25SRakesh Sunki 7888863ec7cSPeng Xu int ndpe; /* Flag indicating NDPE is supported */ 7898863ec7cSPeng Xu u16 trans_port; /* transport port number for TCP/UDP connection */ 7908863ec7cSPeng Xu u8 trans_proto; /* transport protocol, 0x06: TCP, 0x11: UDP */ 7918863ec7cSPeng Xu 7927d37f411SRakesh Sunki /* Length of nan_pmk in octets */ 7937d37f411SRakesh Sunki u8 nan_pmk_len; 7947d37f411SRakesh Sunki 7957d37f411SRakesh Sunki /* 7967d37f411SRakesh Sunki * PMK: Info is optional in Discovery phase. PMK info can 7977d37f411SRakesh Sunki * be passed during the NDP session. 7987d37f411SRakesh Sunki */ 7997d37f411SRakesh Sunki u8 nan_pmk[32]; 80033ea287aSAdil Saeed Musthafa 80133ea287aSAdil Saeed Musthafa enum value_not_set_enabled_disabled wnm_bss_max_feature; 80233ea287aSAdil Saeed Musthafa int wnm_bss_max_idle_time; 80333ea287aSAdil Saeed Musthafa enum value_not_set_enabled_disabled wnm_bss_max_protection; 8040040258bSAshwini Patil 8050040258bSAshwini Patil char *non_pref_ch_list; /* MBO: non-preferred channel report */ 8065acd738cSAshwini Patil char *btm_query_cand_list; /* Candidate list for BTM Query */ 8073c367e8dSJouni Malinen 8086814313dSJouni Malinen char *sae_commit_override; 8093c367e8dSJouni Malinen char *rsne_override; 810d6bf1b4aSJouni Malinen const char *hostapd_bin; 811d6bf1b4aSJouni Malinen int use_hostapd_pid_file; 812d6bf1b4aSJouni Malinen const char *hostapd_ifname; 813d86e5828SJouni Malinen int hostapd_running; 814d86e5828SJouni Malinen 815b1dd21f8SJouni Malinen char *dpp_peer_uri; 816d86e5828SJouni Malinen int dpp_local_bootstrap; 817d86e5828SJouni Malinen int dpp_conf_id; 8181bde7947SAnkita Bajaj 8191bde7947SAnkita Bajaj u8 fils_hlp; 8201bde7947SAnkita Bajaj pthread_t hlp_thread; 821291d97daSPeng Xu 822291d97daSPeng Xu #ifdef NL80211_SUPPORT 823291d97daSPeng Xu struct nl80211_ctx *nl_ctx; 824076081f1SSunil Dutt int config_rsnie; 825291d97daSPeng Xu #endif /* NL80211_SUPPORT */ 826ac6c511cSArif Hussain 827ac6c511cSArif Hussain int sta_nss; 8282052daa2SAnurag Das 8292052daa2SAnurag Das #ifdef ANDROID 8302052daa2SAnurag Das int nanservicediscoveryinprogress; 8312052daa2SAnurag Das #endif /* ANDROID */ 832cd4e3c3eSJouni Malinen }; 833cd4e3c3eSJouni Malinen 834cd4e3c3eSJouni Malinen 835cd4e3c3eSJouni Malinen enum sigma_dut_print_level { 836cd4e3c3eSJouni Malinen DUT_MSG_DEBUG, DUT_MSG_INFO, DUT_MSG_ERROR 837cd4e3c3eSJouni Malinen }; 838cd4e3c3eSJouni Malinen 839cd4e3c3eSJouni Malinen void sigma_dut_print(struct sigma_dut *dut, int level, const char *fmt, ...) 840cd4e3c3eSJouni Malinen PRINTF_FORMAT(3, 4); 841cd4e3c3eSJouni Malinen 842cd4e3c3eSJouni Malinen void sigma_dut_summary(struct sigma_dut *dut, const char *fmt, ...) 843cd4e3c3eSJouni Malinen PRINTF_FORMAT(2, 3); 844cd4e3c3eSJouni Malinen 845cd4e3c3eSJouni Malinen 846cd4e3c3eSJouni Malinen enum sigma_status { 847cd4e3c3eSJouni Malinen SIGMA_RUNNING, SIGMA_INVALID, SIGMA_ERROR, SIGMA_COMPLETE 848cd4e3c3eSJouni Malinen }; 849cd4e3c3eSJouni Malinen 850cd4e3c3eSJouni Malinen void send_resp(struct sigma_dut *dut, struct sigma_conn *conn, 85176401f50SJouni Malinen enum sigma_status status, const char *buf); 852cd4e3c3eSJouni Malinen 853cd4e3c3eSJouni Malinen const char * get_param(struct sigma_cmd *cmd, const char *name); 854bc180dc5SAlexei Avshalom Lazar const char * get_param_indexed(struct sigma_cmd *cmd, const char *name, 855bc180dc5SAlexei Avshalom Lazar int index); 856cd4e3c3eSJouni Malinen 857cd4e3c3eSJouni Malinen int sigma_dut_reg_cmd(const char *cmd, 858cd4e3c3eSJouni Malinen int (*validate)(struct sigma_cmd *cmd), 85926a5b76dSJouni Malinen enum sigma_cmd_result (*process)(struct sigma_dut *dut, 860cd4e3c3eSJouni Malinen struct sigma_conn *conn, 861cd4e3c3eSJouni Malinen struct sigma_cmd *cmd)); 862cd4e3c3eSJouni Malinen 863cd4e3c3eSJouni Malinen void sigma_dut_register_cmds(void); 864cd4e3c3eSJouni Malinen 865cd4e3c3eSJouni Malinen int cmd_sta_send_frame(struct sigma_dut *dut, struct sigma_conn *conn, 866cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 867cd4e3c3eSJouni Malinen int cmd_sta_set_parameter(struct sigma_dut *dut, struct sigma_conn *conn, 868cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 869cd4e3c3eSJouni Malinen int cmd_ap_send_frame(struct sigma_dut *dut, struct sigma_conn *conn, 870cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 871cd4e3c3eSJouni Malinen int cmd_wlantest_send_frame(struct sigma_dut *dut, struct sigma_conn *conn, 872cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 8730d5825b5SAnkita Bajaj int sta_cfon_set_wireless(struct sigma_dut *dut, struct sigma_conn *conn, 8740d5825b5SAnkita Bajaj struct sigma_cmd *cmd); 8750d5825b5SAnkita Bajaj int sta_cfon_get_mac_address(struct sigma_dut *dut, struct sigma_conn *conn, 8760d5825b5SAnkita Bajaj struct sigma_cmd *cmd); 8770d5825b5SAnkita Bajaj int sta_cfon_reset_default(struct sigma_dut *dut, struct sigma_conn *conn, 8780d5825b5SAnkita Bajaj struct sigma_cmd *cmd); 879cd4e3c3eSJouni Malinen 880cd4e3c3eSJouni Malinen enum driver_type { 881cd4e3c3eSJouni Malinen DRIVER_NOT_SET, 882cd4e3c3eSJouni Malinen DRIVER_ATHEROS, 883cd4e3c3eSJouni Malinen DRIVER_WCN, 884cd4e3c3eSJouni Malinen DRIVER_MAC80211, 885cd4e3c3eSJouni Malinen DRIVER_AR6003, 886cd4e3c3eSJouni Malinen DRIVER_WIL6210, 887cd4e3c3eSJouni Malinen DRIVER_QNXNTO, 888b692f107SSreelakshmi Konamki DRIVER_OPENWRT, 889b692f107SSreelakshmi Konamki DRIVER_LINUX_WCN, 890cd4e3c3eSJouni Malinen }; 891cd4e3c3eSJouni Malinen 892cd4e3c3eSJouni Malinen enum openwrt_driver_type { 893cd4e3c3eSJouni Malinen OPENWRT_DRIVER_NOT_SET, 894cd4e3c3eSJouni Malinen OPENWRT_DRIVER_ATHEROS 895cd4e3c3eSJouni Malinen }; 896cd4e3c3eSJouni Malinen 897cd4e3c3eSJouni Malinen #define DRIVER_NAME_60G "wil6210" 898cd4e3c3eSJouni Malinen 899cd4e3c3eSJouni Malinen int set_wifi_chip(const char *chip_type); 900cd4e3c3eSJouni Malinen enum driver_type get_driver_type(void); 901cd4e3c3eSJouni Malinen enum openwrt_driver_type get_openwrt_driver_type(void); 902cd4e3c3eSJouni Malinen int file_exists(const char *fname); 903cd4e3c3eSJouni Malinen 904cd4e3c3eSJouni Malinen struct wpa_ctrl; 905cd4e3c3eSJouni Malinen 906cd4e3c3eSJouni Malinen int wps_connection_event(struct sigma_dut *dut, struct sigma_conn *conn, 907cd4e3c3eSJouni Malinen struct wpa_ctrl *ctrl, const char *intf, int p2p_resp); 908cd4e3c3eSJouni Malinen int ascii2hexstr(const char *str, char *hex); 909cd4e3c3eSJouni Malinen void disconnect_station(struct sigma_dut *dut); 910cd4e3c3eSJouni Malinen void nfc_status(struct sigma_dut *dut, const char *state, const char *oper); 911cd4e3c3eSJouni Malinen int get_ip_config(struct sigma_dut *dut, const char *ifname, char *buf, 912cd4e3c3eSJouni Malinen size_t buf_len); 913cd4e3c3eSJouni Malinen int ath6kl_client_uapsd(struct sigma_dut *dut, const char *intf, int uapsd); 914cd4e3c3eSJouni Malinen int is_ip_addr(const char *str); 915cd4e3c3eSJouni Malinen int run_system(struct sigma_dut *dut, const char *cmd); 9165f793f0dSAdil Saeed Musthafa int run_system_wrapper(struct sigma_dut *dut, const char *cmd, ...); 917cd4e3c3eSJouni Malinen int cmd_wlantest_set_channel(struct sigma_dut *dut, struct sigma_conn *conn, 918cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 919cd4e3c3eSJouni Malinen void sniffer_close(struct sigma_dut *dut); 920cd4e3c3eSJouni Malinen 921cd4e3c3eSJouni Malinen /* ap.c */ 922cd4e3c3eSJouni Malinen void ath_disable_txbf(struct sigma_dut *dut, const char *intf); 923818afef5SPriyadharshini Gowthaman void ath_config_dyn_bw_sig(struct sigma_dut *dut, const char *ifname, 924818afef5SPriyadharshini Gowthaman const char *val); 925e5e2517eSpriyadharshini gowthaman void novap_reset(struct sigma_dut *dut, const char *ifname); 9262e6ccc22SJouni Malinen int get_hwaddr(const char *ifname, unsigned char *hwaddr); 927a326d7b5SJouni Malinen int cmd_ap_config_commit(struct sigma_dut *dut, struct sigma_conn *conn, 928a326d7b5SJouni Malinen struct sigma_cmd *cmd); 929043230bdSAlexei Avshalom Lazar int ap_wps_registration(struct sigma_dut *dut, struct sigma_conn *conn, 930043230bdSAlexei Avshalom Lazar struct sigma_cmd *cmd); 931cd4e3c3eSJouni Malinen 932cd4e3c3eSJouni Malinen /* sta.c */ 933cd4e3c3eSJouni Malinen int set_ps(const char *intf, struct sigma_dut *dut, int enabled); 934cd4e3c3eSJouni Malinen void ath_set_zero_crc(struct sigma_dut *dut, const char *val); 935cd4e3c3eSJouni Malinen void ath_set_cts_width(struct sigma_dut *dut, const char *ifname, 936cd4e3c3eSJouni Malinen const char *val); 937cd4e3c3eSJouni Malinen int ath_set_width(struct sigma_dut *dut, struct sigma_conn *conn, 938cd4e3c3eSJouni Malinen const char *intf, const char *val); 93949498b8eSAlexei Avshalom Lazar int sta_set_60g_abft_len(struct sigma_dut *dut, struct sigma_conn *conn, 94049498b8eSAlexei Avshalom Lazar int abft_len); 9410fe101e9SLior David int wil6210_send_frame_60g(struct sigma_dut *dut, struct sigma_conn *conn, 9420fe101e9SLior David struct sigma_cmd *cmd); 9431bde7947SAnkita Bajaj int hwaddr_aton(const char *txt, unsigned char *addr); 9441bde7947SAnkita Bajaj int set_ipv4_addr(struct sigma_dut *dut, const char *ifname, 9451bde7947SAnkita Bajaj const char *ip, const char *mask); 9461bde7947SAnkita Bajaj int set_ipv4_gw(struct sigma_dut *dut, const char *gw); 94779fa3fedSAlexei Avshalom Lazar int send_addba_60g(struct sigma_dut *dut, struct sigma_conn *conn, 94879fa3fedSAlexei Avshalom Lazar struct sigma_cmd *cmd, const char *param); 949bc180dc5SAlexei Avshalom Lazar int wil6210_set_ese(struct sigma_dut *dut, int count, 950bc180dc5SAlexei Avshalom Lazar struct sigma_ese_alloc *allocs); 951bc180dc5SAlexei Avshalom Lazar int sta_extract_60g_ese(struct sigma_dut *dut, struct sigma_cmd *cmd, 952bc180dc5SAlexei Avshalom Lazar struct sigma_ese_alloc *allocs, int *allocs_size); 953aad97b04SAlexei Avshalom Lazar int wil6210_set_force_mcs(struct sigma_dut *dut, int force, int mcs); 954cd4e3c3eSJouni Malinen 955cd4e3c3eSJouni Malinen /* p2p.c */ 956cd4e3c3eSJouni Malinen int p2p_cmd_sta_get_parameter(struct sigma_dut *dut, struct sigma_conn *conn, 957cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 958091e253dSPurushottam Kushwaha void p2p_create_event_thread(struct sigma_dut *dut); 959091e253dSPurushottam Kushwaha void stop_event_thread(void); 96089b37cdcSAmarnath Hullur Subramanyam void start_dhcp(struct sigma_dut *dut, const char *group_ifname, int go); 96189b37cdcSAmarnath Hullur Subramanyam void stop_dhcp(struct sigma_dut *dut, const char *group_ifname, int go); 96289b37cdcSAmarnath Hullur Subramanyam int p2p_discover_peer(struct sigma_dut *dut, const char *ifname, 96389b37cdcSAmarnath Hullur Subramanyam const char *peer, int full); 964cd4e3c3eSJouni Malinen 965c54710deSJouni Malinen /* basic.c */ 966c54710deSJouni Malinen void get_ver(const char *cmd, char *buf, size_t buflen); 967c54710deSJouni Malinen 96872462ef3Spriyadharshini gowthaman /* utils.c */ 969cd4e3c3eSJouni Malinen enum sigma_program sigma_program_to_enum(const char *prog); 97008cf231dSJouni Malinen int parse_hexstr(const char *hex, unsigned char *buf, size_t buflen); 97172462ef3Spriyadharshini gowthaman int parse_mac_address(struct sigma_dut *dut, const char *arg, 97272462ef3Spriyadharshini gowthaman unsigned char *addr); 973093569ffSAlexei Avshalom Lazar int is_60g_sigma_dut(struct sigma_dut *dut); 974093569ffSAlexei Avshalom Lazar unsigned int channel_to_freq(struct sigma_dut *dut, unsigned int channel); 9757192dc42SRakesh Sunki unsigned int freq_to_channel(unsigned int freq); 976525965bbSPeng Xu int is_ipv6_addr(const char *str); 9778f8e74b5SRakesh Sunki void convert_mac_addr_to_ipv6_lladdr(u8 *mac_addr, char *ipv6_buf, 9788f8e74b5SRakesh Sunki size_t buf_len); 9798863ec7cSPeng Xu size_t convert_mac_addr_to_ipv6_linklocal(const u8 *mac_addr, u8 *ipv6); 980cd4e3c3eSJouni Malinen 981769731a2SPeng Xu #ifndef ANDROID 982769731a2SPeng Xu size_t strlcpy(char *dest, const char *src, size_t siz); 983769731a2SPeng Xu size_t strlcat(char *dst, const char *str, size_t size); 984769731a2SPeng Xu #endif /* ANDROID */ 9851bde7947SAnkita Bajaj void hex_dump(struct sigma_dut *dut, u8 *data, size_t len); 9860dae51c5SAlexei Avshalom Lazar int get_wps_pin_from_mac(struct sigma_dut *dut, const char *macaddr, 9870dae51c5SAlexei Avshalom Lazar char *pin, size_t len); 9886427969bSAlexei Avshalom Lazar void str_remove_chars(char *str, char ch); 989769731a2SPeng Xu 990744ae8abSAlexei Avshalom Lazar int get_wps_forced_version(struct sigma_dut *dut, const char *str); 991a37dc16cSAlexei Avshalom Lazar int base64_encode(const char *src, size_t len, char *out, size_t out_len); 992a37dc16cSAlexei Avshalom Lazar int random_get_bytes(char *buf, size_t len); 993769731a2SPeng Xu 994cd4e3c3eSJouni Malinen /* uapsd_stream.c */ 995cd4e3c3eSJouni Malinen void receive_uapsd(struct sigma_stream *s); 99679594049SPradeep Reddy POTTETI void send_uapsd_console(struct sigma_stream *s); 997cd4e3c3eSJouni Malinen 998cd4e3c3eSJouni Malinen /* nan.c */ 999cd4e3c3eSJouni Malinen int nan_preset_testparameters(struct sigma_dut *dut, struct sigma_conn *conn, 1000cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 1001cd4e3c3eSJouni Malinen int nan_cmd_sta_get_parameter(struct sigma_dut *dut, struct sigma_conn *conn, 1002cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 1003cd4e3c3eSJouni Malinen int nan_cmd_sta_exec_action(struct sigma_dut *dut, struct sigma_conn *conn, 1004cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 1005cd4e3c3eSJouni Malinen int nan_cmd_sta_get_events(struct sigma_dut *dut, struct sigma_conn *conn, 1006cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 1007cd4e3c3eSJouni Malinen int nan_cmd_sta_transmit_followup(struct sigma_dut *dut, 1008cd4e3c3eSJouni Malinen struct sigma_conn *conn, 1009cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 1010cd4e3c3eSJouni Malinen void nan_cmd_sta_reset_default(struct sigma_dut *dut, struct sigma_conn *conn, 1011cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 1012cd4e3c3eSJouni Malinen int nan_cmd_sta_preset_testparameters(struct sigma_dut *dut, 1013cd4e3c3eSJouni Malinen struct sigma_conn *conn, 1014cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 1015cd4e3c3eSJouni Malinen 1016d66913acSpriyadharshini gowthaman /* ftm.c */ 1017d66913acSpriyadharshini gowthaman int loc_cmd_sta_exec_action(struct sigma_dut *dut, struct sigma_conn *conn, 1018d66913acSpriyadharshini gowthaman struct sigma_cmd *cmd); 1019d66913acSpriyadharshini gowthaman int loc_cmd_sta_send_frame(struct sigma_dut *dut, struct sigma_conn *conn, 1020d66913acSpriyadharshini gowthaman struct sigma_cmd *cmd); 1021d66913acSpriyadharshini gowthaman int loc_cmd_sta_preset_testparameters(struct sigma_dut *dut, 1022d66913acSpriyadharshini gowthaman struct sigma_conn *conn, 1023d66913acSpriyadharshini gowthaman struct sigma_cmd *cmd); 1024d66913acSpriyadharshini gowthaman 1025d86e5828SJouni Malinen /* dpp.c */ 1026d86e5828SJouni Malinen int dpp_dev_exec_action(struct sigma_dut *dut, struct sigma_conn *conn, 1027d86e5828SJouni Malinen struct sigma_cmd *cmd); 1028d86e5828SJouni Malinen 10291bde7947SAnkita Bajaj /* dhcp.c */ 10301bde7947SAnkita Bajaj void process_fils_hlp(struct sigma_dut *dut); 10311bde7947SAnkita Bajaj void hlp_thread_cleanup(struct sigma_dut *dut); 1032d86e5828SJouni Malinen 1033291d97daSPeng Xu #ifdef NL80211_SUPPORT 1034291d97daSPeng Xu struct nl80211_ctx * nl80211_init(struct sigma_dut *dut); 1035291d97daSPeng Xu void nl80211_deinit(struct sigma_dut *dut, struct nl80211_ctx *ctx); 1036291d97daSPeng Xu struct nl_msg * nl80211_drv_msg(struct sigma_dut *dut, struct nl80211_ctx *ctx, 1037291d97daSPeng Xu int ifindex, int flags, 1038291d97daSPeng Xu uint8_t cmd); 1039291d97daSPeng Xu int send_and_recv_msgs(struct sigma_dut *dut, struct nl80211_ctx *ctx, 1040291d97daSPeng Xu struct nl_msg *nlmsg, 1041291d97daSPeng Xu int (*valid_handler)(struct nl_msg *, void *), 1042291d97daSPeng Xu void *valid_data); 1043291d97daSPeng Xu #endif /* NL80211_SUPPORT */ 1044291d97daSPeng Xu 1045cd4e3c3eSJouni Malinen #endif /* SIGMA_DUT_H */ 1046