Skip to content

Commit

Permalink
QuickTrack R2.3 changes
Browse files Browse the repository at this point in the history
  • Loading branch information
kntseng committed Dec 9, 2024
1 parent bd803ba commit a8b8fc8
Show file tree
Hide file tree
Showing 16 changed files with 1,462 additions and 160 deletions.
15 changes: 11 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Type is laptop or openwrt
TYPE = laptop
# Role is dut or platform
# Role is dut or platform or sniffer
ROLE = dut
# Package Version
VERSION = "2.2.1.4"
VERSION = "2.3.0.238"

OBJS = main.o eloop.o indigo_api.o indigo_packet.o utils.o wpa_ctrl.o
CFLAGS += -g
Expand All @@ -18,16 +18,23 @@ else
#CC = /openwrt/QCA_Sniffer_11ax/qsdk/staging_dir/toolchain-arm_cortex-a7_gcc-5.2.0_musl-1.1.16_eabi/bin/arm-openwrt-linux-gcc
#LD = /openwrt/QCA_Sniffer_11ax/qsdk/staging_dir/toolchain-arm_cortex-a7_gcc-5.2.0_musl-1.1.16_eabi/bin/arm-openwrt-linux-ld
# 64 bit
CC = /openwrt/11305r3/qsdk/staging_dir/toolchain-aarch64_cortex-a53_gcc-5.2.0_musl-1.1.16/bin/aarch64-openwrt-linux-gcc
LD = /openwrt/11305r3/qsdk/staging_dir/toolchain-aarch64_cortex-a53_gcc-5.2.0_musl-1.1.16/bin/aarch64-openwrt-linux-ld
#CC = /openwrt/11305r3/qsdk/staging_dir/toolchain-aarch64_cortex-a53_gcc-5.2.0_musl-1.1.16/bin/aarch64-openwrt-linux-gcc
#LD = /openwrt/11305r3/qsdk/staging_dir/toolchain-aarch64_cortex-a53_gcc-5.2.0_musl-1.1.16/bin/aarch64-openwrt-linux-ld
# Wi-Fi 7
CC = /openwrt/qsdk/staging_dir/toolchain-aarch64/bin/aarch64-openwrt-linux-musl-gcc
LD = /openwrt/qsdk/staging_dir/toolchain-aarch64/bin/aarch64-openwrt-linux-ld
# _OPENWRT_: Use OPENWRT
CFLAGS += -D_OPENWRT_
CFLAGS += -DHOSTAPD_SUPPORT_MBSSID_WAR
endif

# Define the app is for DUT or platform
ifeq ($(ROLE),dut)
OBJS += indigo_api_callback_dut.o vendor_specific_dut.o
CFLAGS += -D_DUT_
else ifeq ($(ROLE), sniffer)
OBJS += indigo_api_callback_sniffer.o vendor_specific_sniffer.o
CFLAGS += -D_TEST_SNIFFER_
else
OBJS += indigo_api_callback_tp.o vendor_specific_tp.o
CFLAGS += -DCONFIG_CTRL_IFACE_UDP
Expand Down
5 changes: 5 additions & 0 deletions build_deb.sh
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,11 @@ create_postinst() {
echo "cp app ../app_tp" >>"$postinst_file"
echo "make clean >/dev/null" >>"$postinst_file"

echo "sed -i 's/ROLE = tp/ROLE = sniffer/' Makefile" >>"$postinst_file"
echo "make >/dev/null" >>"$postinst_file"
echo "cp app ../app_sniffer" >>"$postinst_file"
echo "make clean >/dev/null" >>"$postinst_file"

echo "cp QT_dhcpd.conf ../QT_dhcpd.conf" >>"$postinst_file"

echo "echo \"Test application version\"" >>"$postinst_file"
Expand Down
33 changes: 32 additions & 1 deletion indigo_api.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ struct indigo_api indigo_api_list[] = {
{ API_AP_SEND_ARP_MSGS, "API_AP_SEND_ARP_MSGS", NULL, NULL },
{ API_AP_START_WPS, "AP_START_WPS", NULL, NULL },
{ API_AP_CONFIGURE_WSC, "AP_CONFIGURE_WSC", NULL, NULL },
{ API_AP_REKEY_GTK, "AP_REKEY_GTK", NULL, NULL },
/* Station specific */
{ API_STA_START_UP, "STA_START_UP", NULL, NULL },
{ API_STA_ASSOCIATE, "STA_ASSOCIATE", NULL, NULL },
Expand Down Expand Up @@ -69,6 +70,13 @@ struct indigo_api indigo_api_list[] = {
{ API_STA_SEND_ICON_REQ, "STA_SEND_ICON_REQ", NULL, NULL },
{ API_P2P_SET_EXT_LISTEN, "P2P_SET_EXT_LISTEN", NULL, NULL },
{ API_STA_ENABLE_WSC, "STA_ENABLE_WSC", NULL, NULL },
{ API_STA_INJECT_START, "STA_INJECT_START", NULL, NULL },
{ API_STA_INJECT_FRAME, "STA_INJECT_FRAME", NULL, NULL },
{ API_STA_INJECT_STOP, "STA_INJECT_STOP", NULL, NULL },
{ API_SNIFFER_START, "SNIFFER_START", NULL, NULL },
{ API_SNIFFER_STOP, "SNIFFER_STOP", NULL, NULL },
{ API_SNIFFER_UPLOAD_FILE, "SNIFFER_UPLOAD_FILE", NULL, NULL },
{ API_SNIFFER_FILTER, "SNIFFER_FILTER", NULL, NULL },
/* Network operation. E.g., get/set IP address, get MAC address, send the UDP data and reset */
{ API_GET_IP_ADDR, "GET_IP_ADDR", NULL, NULL },
{ API_GET_MAC_ADDR, "GET_MAC_ADDR", NULL, NULL },
Expand Down Expand Up @@ -146,6 +154,8 @@ struct indigo_tlv indigo_tlv_list[] = {
{ TLV_PHASE1, "PHASE1" },
{ TLV_CLIENT_CERT, "CLIENT_CERT" },
{ TLV_PRIVATE_KEY, "PRIVATE_KEY" },
{ TLV_EAPOL_M3_ELEMENTS, "EAPOL_M3_ELEMENTS" },
{ TLV_GTK_KDE_RANDOM_RESERVED_BITS, "GTK_KDE_RANDOM_RESERVED_BITS" },
{ TLV_STA_POWER_SAVE, "STA_POWER_SAVE" },
{ TLV_STATIC_IP, "STATIC_IP" },
{ TLV_DEBUG_LEVEL, "DEBUG_LEVEL" },
Expand All @@ -157,6 +167,9 @@ struct indigo_tlv indigo_tlv_list[] = {
{ TLV_ARP_TRANSMISSION_RATE, "ARP_TRANSMISSION_RATE" },
{ TLV_ARP_TARGET_IP, "ARP_TARGET_IP" },
{ TLV_ARP_FRAME_COUNT, "ARP_FRAME_COUNT" },
{ TLV_FRAME_TYPE, "FRAME_TYPE" },
{ TLV_ACTION_CATEGORY, "ACTION_CATEGORY" },
{ TLV_ACTION_CODE, "ACTION_CODE" },
{ TLV_PACKET_COUNT, "PACKET_COUNT" },
{ TLV_PACKET_TYPE, "PACKET_TYPE" },
{ TLV_PACKET_RATE, "PACKET_RATE" },
Expand Down Expand Up @@ -193,6 +206,7 @@ struct indigo_tlv indigo_tlv_list[] = {
{ TLV_OWE_GROUPS, "TLV_OWE_GROUPS" },
{ TLV_STA_OWE_GROUP, "TLV_STA_OWE_GROUP" },
{ TLV_HE_MU_EDCA, "TLV_HE_MU_EDCA" },
{ TLV_PROTECTION_TYPE, "PROTECTION_TYPE" },
{ TLV_RSNXE_OVERRIDE_EAPOL, "TLV_RSNXE_OVERRIDE_EAPOL" },
{ TLV_TRANSITION_DISABLE, "TLV_TRANSITION_DISABLE" },
{ TLV_SAE_CONFIRM_IMMEDIATE, "SAE_CONFIRM_IMMEDIATE" },
Expand Down Expand Up @@ -272,7 +286,24 @@ struct indigo_tlv indigo_tlv_list[] = {
{ TLV_CAPTURE_OUTFILE, "CAPTURE_OUTFILE" },
{ TLV_TP_IP_ADDRESS, "TP_IP_ADDRESS" },
{ TLV_WPS_ER_SUPPORT, "WPS_ER_SUPPORT" },
{ TLV_ADDITIONAL_TEST_PLATFORM_ID, "ADDITIONAL_TEST_PLATFORM_ID" },
{ TLV_TEST_PLATFORM_ID, "TEST_PLATFORM_ID" },
{ TLV_PMK, "PMK" },
{ TLV_GROUP_MGMT_CIPHER, "GROUP_MGMT_CIPHER" },
{ TLV_GROUP_MGMT, "GROUP_MGMT" },
{ TLV_OPENSSL_CIPHERS, "OPENSSL_CIPHERS" },
{ TLV_BEACON_PROT, "BEACON_PROTECTION" },
{ TLV_IEEE80211_BE, "IEEE80211_BE" },
{ TLV_MLD_AP, "MLD_AP" },
{ TLV_EHT_OPER_CHWIDTH, "EHT_OPER_CHWIDTH" },
{ TLV_EHT_OPER_CENTR_FREQ, "EHT_OPER_CENTR_FREQ" },
{ TLV_SAE_PASSWORD, "SAE_PASSWORD" },
{ TLV_SAE_PK_MODIFIER, "SAE_PK_MODIFIER" },
{ TLV_SAE_PK_FILE, "SAE_PK_FILE" },
{ TLV_WPA_GROUP_REKEY, "WPA_GROUP_REKEY" },
{ TLV_WPA_STRICT_REKEY, "WPA_STRICT_REKEY" },
{ TLV_OCV, "OCV" },
{ TLV_MLD_FORCE_SINGLE_LINK, "MLD_FORCE_SINGLE_LINK" },
{ TLV_MLD_CONNECT_BAND_PREF, "MLD_CONNECT_BAND_PREF" },
};

/* Find the type of the API stucture by the ID from the list */
Expand Down
38 changes: 37 additions & 1 deletion indigo_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ struct indigo_api {
#define API_AP_SEND_ARP_MSGS 0x1007
#define API_AP_START_WPS 0x1008
#define API_AP_CONFIGURE_WSC 0x1009
#define API_AP_REKEY_GTK 0x100a

#define API_STA_ASSOCIATE 0x2000
#define API_STA_CONFIGURE 0x2001
Expand Down Expand Up @@ -82,6 +83,14 @@ struct indigo_api {
#define API_STA_SEND_ICON_REQ 0x201b
#define API_P2P_SET_EXT_LISTEN 0x201c
#define API_STA_ENABLE_WSC 0x201d
#define API_STA_INJECT_START 0x201e
#define API_STA_INJECT_FRAME 0x201f
#define API_STA_INJECT_STOP 0x2020

#define API_SNIFFER_START 0x3000
#define API_SNIFFER_STOP 0x3001
#define API_SNIFFER_UPLOAD_FILE 0x3002
#define API_SNIFFER_FILTER 0x3003

#define API_GET_IP_ADDR 0x5000
#define API_GET_MAC_ADDR 0x5001
Expand Down Expand Up @@ -158,6 +167,8 @@ struct indigo_api {
#define TLV_PHASE1 0x0043
#define TLV_CLIENT_CERT 0x0044
#define TLV_PRIVATE_KEY 0x0045
#define TLV_EAPOL_M3_ELEMENTS 0x0046
#define TLV_GTK_KDE_RANDOM_RESERVED_BITS 0x0047
#define TLV_STA_POWER_SAVE 0x0052
#define TLV_STATIC_IP 0x0055
#define TLV_DEBUG_LEVEL 0x0057
Expand All @@ -169,6 +180,9 @@ struct indigo_api {
#define TLV_ARP_TRANSMISSION_RATE 0x005f
#define TLV_ARP_TARGET_IP 0x0060
#define TLV_ARP_FRAME_COUNT 0x0062
#define TLV_FRAME_TYPE 0x0063
#define TLV_ACTION_CATEGORY 0x0064
#define TLV_ACTION_CODE 0x0065
#define TLV_PACKET_COUNT 0x0067
#define TLV_PACKET_TYPE 0x0068
#define TLV_PACKET_RATE 0x0069
Expand Down Expand Up @@ -205,6 +219,7 @@ struct indigo_api {
#define TLV_OWE_GROUPS 0x008e
#define TLV_STA_OWE_GROUP 0x008f
#define TLV_HE_MU_EDCA 0x0090
#define TLV_PROTECTION_TYPE 0x0091
#define TLV_RSNXE_OVERRIDE_EAPOL 0x0092
#define TLV_TRANSITION_DISABLE 0x0093
#define TLV_SAE_CONFIRM_IMMEDIATE 0x0094
Expand Down Expand Up @@ -281,7 +296,25 @@ struct indigo_api {
#define TLV_CAPTURE_OUTFILE 0x00de
#define TLV_TP_IP_ADDRESS 0x00df
#define TLV_WPS_ER_SUPPORT 0x00e0
#define TLV_ADDITIONAL_TEST_PLATFORM_ID 0x00e1
#define TLV_TEST_PLATFORM_ID 0x00e1
// 00e2 - 00e5: used by sniffer agent
#define TLV_PMK 0x00e6
#define TLV_GROUP_MGMT_CIPHER 0x00e7
#define TLV_GROUP_MGMT 0x00e8
#define TLV_OPENSSL_CIPHERS 0x00e9
#define TLV_BEACON_PROT 0x00ea
#define TLV_IEEE80211_BE 0x00eb
#define TLV_MLD_AP 0x00ec
#define TLV_EHT_OPER_CHWIDTH 0x00ed
#define TLV_EHT_OPER_CENTR_FREQ 0x00ee
#define TLV_SAE_PASSWORD 0x00ef
#define TLV_SAE_PK_MODIFIER 0x00f0
#define TLV_SAE_PK_FILE 0x00f1
#define TLV_WPA_GROUP_REKEY 0x00f2
#define TLV_WPA_STRICT_REKEY 0x00f3
#define TLV_OCV 0x00f4
#define TLV_MLD_FORCE_SINGLE_LINK 0x00f5
#define TLV_MLD_CONNECT_BAND_PREF 0x00f6

// class ResponseTLV
// List of TLV used in the QuickTrack API response and ACK messages from the DUT
Expand All @@ -301,6 +334,9 @@ struct indigo_api {
#define TLV_WSC_WPA_KEY_MGMT 0xa00d
#define TLV_WSC_WPA_PASSPHRASE 0xa00e
#define TLV_PASSPOINT_ICON_CHECKSUM 0xa00f
#define TLV_TEST_SNIFFER_APP_VERSION 0xa010
// a011 - a013: used by sniffer agent
#define TLV_TEST_PLATFORM_WLAN_IP_ADDR 0xa014

/* TLV Value */
#define DUT_TYPE_STAUT 0x01
Expand Down
42 changes: 42 additions & 0 deletions indigo_api_callback.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ struct tlv_to_config_name maps[] = {
{ TLV_IE_OVERRIDE, "own_ie_override", 0 }, // HostAPD Python Interface
{ TLV_SAE_ANTI_CLOGGING_THRESHOLD, "sae_anti_clogging_threshold", 0 }, // HostAPD Python Interface
{ TLV_DISABLE_PMKSA_CACHING, "disable_pmksa_caching", 0 }, // HostAPD Python Interface
{ TLV_EAPOL_M3_ELEMENTS, "eapol_m3_elements", 0 },
{ TLV_GTK_KDE_RANDOM_RESERVED_BITS, "gtk_kde_random_reserved_bits", 0 },
{ TLV_SAE_GROUPS, "sae_groups", 0 },
{ TLV_IEEE80211_AX, "ieee80211ax", 0 },
{ TLV_HE_OPER_CHWIDTH, "he_oper_chwidth", 0 },
Expand Down Expand Up @@ -106,6 +108,13 @@ struct tlv_to_config_name maps[] = {
{ TLV_WPS_INDEPENDENT, "wps_independent", 0 },
{ TLV_LOCAL_PWR_CONST, "local_pwr_constraint", 0 },
{ TLV_SPECTRUM_MGMT_REQ, "spectrum_mgmt_required", 0 },
{ TLV_GROUP_MGMT_CIPHER, "group_mgmt_cipher", 0 },
{ TLV_IEEE80211_BE, "ieee80211be", 0 },
{ TLV_MLD_AP, "mld_ap", 0 },
{ TLV_EHT_OPER_CHWIDTH, "eht_oper_chwidth", 0 },
{ TLV_EHT_OPER_CENTR_FREQ, "eht_oper_centr_freq_seg0_idx", 0 },
{ TLV_WPA_GROUP_REKEY, "wpa_group_rekey", 0 },
{ TLV_WPA_STRICT_REKEY, "wpa_strict_rekey", 0 },

/* wpas, seperate? */
{ TLV_STA_SSID, "ssid", 1 },
Expand Down Expand Up @@ -138,9 +147,14 @@ struct tlv_to_config_name maps[] = {
{ TLV_USERNAME, "username", 1 },
{ TLV_HOME_FQDN, "domain", 1 },
{ TLV_PREFER, "priority", 0 },
{ TLV_GROUP_MGMT, "group_mgmt", 0 },
{ TLV_SAE_PASSWORD, "sae_password", 1 },

/* hapd + wpas */
{ TLV_EAP_FRAG_SIZE, "fragment_size", 0 },
{ TLV_OPENSSL_CIPHERS, "openssl_ciphers", 1 },
{ TLV_BEACON_PROT, "beacon_prot", 0 },
{ TLV_OCV, "ocv", 0},
};

struct tlv_to_config_name semicolon_list[] = {
Expand Down Expand Up @@ -173,6 +187,13 @@ struct anqp_tlv_to_config_name anqp_maps[] = {
{ "OSUProvidersNaiList", "hs20:13" },
};

struct tlv_to_config_name wifi7_maps[] = {
{ TLV_IEEE80211_BE, "ieee80211be", 0 },
{ TLV_MLD_AP, "mld_ap", 0 },
{ TLV_EHT_OPER_CHWIDTH, "eht_oper_chwidth", 0 },
{ TLV_EHT_OPER_CENTR_FREQ, "eht_oper_centr_freq_seg0_idx", 0 },
};

char* find_tlv_config_name(int tlv_id) {
int i;
for (i = 0; i < sizeof(maps)/sizeof(struct tlv_to_config_name); i++) {
Expand All @@ -193,6 +214,16 @@ struct tlv_to_config_name* find_tlv_config(int tlv_id) {
return NULL;
}

struct tlv_to_config_name* find_tlv_11be_config(int tlv_id) {
int i;
for (i = 0; i < sizeof(wifi7_maps)/sizeof(struct tlv_to_config_name); i++) {
if (tlv_id == wifi7_maps[i].tlv_id) {
return &wifi7_maps[i];
}
}
return NULL;
}

struct tlv_to_config_name wpas_global_maps[] = {
{ TLV_STA_SAE_GROUPS, "sae_groups", 0 },
{ TLV_MBO_CELL_CAPA, "mbo_cell_capa", 0 },
Expand All @@ -208,6 +239,8 @@ struct tlv_to_config_name wpas_global_maps[] = {
{ TLV_FREQ_LIST, "freq_list", 0 },
{ TLV_UPDATE_CONFIG, "update_config", 0 },
{ TLV_P2P_DISABLED, "p2p_disabled", 0 },
{ TLV_MLD_FORCE_SINGLE_LINK, "mld_force_single_link", 0 },
{ TLV_MLD_CONNECT_BAND_PREF, "mld_connect_band_pref", 0 },
};

struct tlv_to_config_name* find_wpas_global_config_name(int tlv_id) {
Expand Down Expand Up @@ -256,6 +289,7 @@ static int trigger_ap_channel_switch(struct packet_wrapper *req, struct packet_w
static int send_ap_arp_handler(struct packet_wrapper *req, struct packet_wrapper *resp);
static int start_wps_ap_handler(struct packet_wrapper *req, struct packet_wrapper *resp);
static int configure_ap_wsc_handler(struct packet_wrapper *req, struct packet_wrapper *resp);
static int rekey_ap_gtk_handler(struct packet_wrapper *req, struct packet_wrapper *resp);
/* STA */
static int stop_sta_handler(struct packet_wrapper *req, struct packet_wrapper *resp);
static int configure_sta_handler(struct packet_wrapper *req, struct packet_wrapper *resp);
Expand All @@ -276,6 +310,9 @@ static int set_sta_power_save_handler(struct packet_wrapper *req, struct packet_
static int start_wps_sta_handler(struct packet_wrapper *req, struct packet_wrapper *resp);
static int send_sta_icon_req_handler(struct packet_wrapper *req, struct packet_wrapper *resp);
static int enable_wsc_sta_handler(struct packet_wrapper *req, struct packet_wrapper *resp);
static int set_sta_inject_start_handler(struct packet_wrapper *req, struct packet_wrapper *resp);
static int set_sta_inject_frame_handler(struct packet_wrapper *req, struct packet_wrapper *resp);
static int set_sta_inject_stop_handler(struct packet_wrapper *req, struct packet_wrapper *resp);
/* P2P */
static int start_up_p2p_handler(struct packet_wrapper *req, struct packet_wrapper *resp);
static int p2p_find_handler(struct packet_wrapper *req, struct packet_wrapper *resp);
Expand All @@ -288,4 +325,9 @@ static int get_p2p_intent_value_handler(struct packet_wrapper *req, struct packe
static int p2p_invite_handler(struct packet_wrapper *req, struct packet_wrapper *resp);
static int set_p2p_serv_disc_handler(struct packet_wrapper *req, struct packet_wrapper *resp);
static int set_p2p_ext_listen_handler(struct packet_wrapper *req, struct packet_wrapper *resp);
/* Sniffer */
static int sniffer_start_handler(struct packet_wrapper *req, struct packet_wrapper *resp);
static int sniffer_stop_handler(struct packet_wrapper *req, struct packet_wrapper *resp);
static int sniffer_filter_handler(struct packet_wrapper *req, struct packet_wrapper *resp);
static int sniffer_upload_file_handler(struct packet_wrapper *req, struct packet_wrapper *resp);
#endif // __INDIGO_API_CALLBACK
Loading

0 comments on commit a8b8fc8

Please sign in to comment.