From 0980d5f0ad5335d573b98745c890379b0f034f44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Tue, 29 Apr 2025 13:50:53 +0800 Subject: [PATCH] Wifi (BSD): correctly prioritize Wi-Fi protocol detection by using an `if-else if` chain --- src/detection/wifi/wifi_bsd.c | 25 +++++++++++++------------ src/detection/wifi/wifi_nbsd.c | 28 ++++++++++++++-------------- 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/src/detection/wifi/wifi_bsd.c b/src/detection/wifi/wifi_bsd.c index a77aa7fab..458957b6d 100644 --- a/src/detection/wifi/wifi_bsd.c +++ b/src/detection/wifi/wifi_bsd.c @@ -83,22 +83,23 @@ const char* ffDetectWifi(FFlist* result) item->conn.channel = curchan.ic_ieee; item->conn.frequency = curchan.ic_freq; - if (IEEE80211_IS_CHAN_FHSS(&curchan)) - ffStrbufSetStatic(&item->conn.protocol, "802.11 (FHSS)"); - if (IEEE80211_IS_CHAN_A(&curchan)) - ffStrbufSetStatic(&item->conn.protocol, "802.11a"); - if (IEEE80211_IS_CHAN_B(&curchan)) - ffStrbufSetStatic(&item->conn.protocol, "802.11b"); - if (IEEE80211_IS_CHAN_ANYG(&curchan)) - ffStrbufSetStatic(&item->conn.protocol, "802.11g"); - if (IEEE80211_IS_CHAN_HT(&curchan)) - ffStrbufSetStatic(&item->conn.protocol, "802.11n (Wi-Fi 4)"); - if (IEEE80211_IS_CHAN_VHT(&curchan)) - ffStrbufSetStatic(&item->conn.protocol, "802.11ac (Wi-Fi 5)"); #ifdef IEEE80211_IS_CHAN_HE // for future use if (IEEE80211_IS_CHAN_HE(&curchan)) ffStrbufSetStatic(&item->conn.protocol, "802.11ax (Wi-Fi 6)"); + else #endif + if (IEEE80211_IS_CHAN_VHT(&curchan)) + ffStrbufSetStatic(&item->conn.protocol, "802.11ac (Wi-Fi 5)"); + else if (IEEE80211_IS_CHAN_HT(&curchan)) + ffStrbufSetStatic(&item->conn.protocol, "802.11n (Wi-Fi 4)"); + else if (IEEE80211_IS_CHAN_ANYG(&curchan)) + ffStrbufSetStatic(&item->conn.protocol, "802.11g"); + else if (IEEE80211_IS_CHAN_B(&curchan)) + ffStrbufSetStatic(&item->conn.protocol, "802.11b"); + else if (IEEE80211_IS_CHAN_A(&curchan)) + ffStrbufSetStatic(&item->conn.protocol, "802.11a"); + else if (IEEE80211_IS_CHAN_FHSS(&curchan)) + ffStrbufSetStatic(&item->conn.protocol, "802.11 (FHSS)"); } union { diff --git a/src/detection/wifi/wifi_nbsd.c b/src/detection/wifi/wifi_nbsd.c index 153af6dd5..25325031d 100644 --- a/src/detection/wifi/wifi_nbsd.c +++ b/src/detection/wifi/wifi_nbsd.c @@ -94,23 +94,23 @@ const char* ffDetectWifi(FFlist* result) item->conn.channel = ffWifiFreqToChannel(curchan.ic_freq); item->conn.frequency = curchan.ic_freq; - if (IEEE80211_IS_CHAN_FHSS(&curchan)) - ffStrbufSetStatic(&item->conn.protocol, "802.11 (FHSS)"); - if (IEEE80211_IS_CHAN_A(&curchan)) - ffStrbufSetStatic(&item->conn.protocol, "802.11a"); - if (IEEE80211_IS_CHAN_B(&curchan)) - ffStrbufSetStatic(&item->conn.protocol, "802.11b"); - if (IEEE80211_IS_CHAN_ANYG(&curchan)) - ffStrbufSetStatic(&item->conn.protocol, "802.11g"); - - if (IEEE80211_IS_CHAN_HT(&curchan)) - ffStrbufSetStatic(&item->conn.protocol, "802.11n (Wi-Fi 4)"); - if (IEEE80211_IS_CHAN_VHT(&curchan)) - ffStrbufSetStatic(&item->conn.protocol, "802.11ac (Wi-Fi 5)"); - #ifdef IEEE80211_IS_CHAN_HE + #ifdef IEEE80211_IS_CHAN_HE // for future use if (IEEE80211_IS_CHAN_HE(&curchan)) ffStrbufSetStatic(&item->conn.protocol, "802.11ax (Wi-Fi 6)"); + else #endif + if (IEEE80211_IS_CHAN_VHT(&curchan)) + ffStrbufSetStatic(&item->conn.protocol, "802.11ac (Wi-Fi 5)"); + else if (IEEE80211_IS_CHAN_HT(&curchan)) + ffStrbufSetStatic(&item->conn.protocol, "802.11n (Wi-Fi 4)"); + else if (IEEE80211_IS_CHAN_ANYG(&curchan)) + ffStrbufSetStatic(&item->conn.protocol, "802.11g"); + else if (IEEE80211_IS_CHAN_B(&curchan)) + ffStrbufSetStatic(&item->conn.protocol, "802.11b"); + else if (IEEE80211_IS_CHAN_A(&curchan)) + ffStrbufSetStatic(&item->conn.protocol, "802.11a"); + else if (IEEE80211_IS_CHAN_FHSS(&curchan)) + ffStrbufSetStatic(&item->conn.protocol, "802.11 (FHSS)"); } union {