From 55352be0cc9f221bcf8c8aac96b1383b7435c76c Mon Sep 17 00:00:00 2001 From: Carter Li Date: Sat, 23 Nov 2024 12:21:48 +0800 Subject: [PATCH] Wifi (FreeBSD): support channel & frequency detection --- src/detection/wifi/wifi_bsd.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/detection/wifi/wifi_bsd.c b/src/detection/wifi/wifi_bsd.c index 875bce1ad..fafc8f1c9 100644 --- a/src/detection/wifi/wifi_bsd.c +++ b/src/detection/wifi/wifi_bsd.c @@ -40,14 +40,21 @@ const char* ffDetectWifi(FFlist* result) ffParsePropLines(ifconfig.chars, "ssid ", &item->conn.ssid); if (item->conn.ssid.length) { - uint32_t ibssid = ffStrbufFirstIndexS(&item->conn.ssid, " bssid "); - if (ibssid < item->conn.ssid.length) + uint32_t idx = ffStrbufFirstIndexS(&item->conn.ssid, " bssid "); + if (idx < item->conn.ssid.length) { - ibssid += (uint32_t) strlen(" bssid "); - ffStrbufSetS(&item->conn.bssid, item->conn.ssid.chars + ibssid); + ffStrbufSetS(&item->conn.bssid, item->conn.ssid.chars + idx + (uint32_t) strlen(" bssid ")); + ffStrbufSubstrBefore(&item->conn.ssid, idx); } - ffStrbufSubstrBeforeFirstC(&item->conn.ssid, ' '); + idx = ffStrbufFirstIndexS(&item->conn.ssid, " channel "); + if (idx < item->conn.ssid.length) + { + const char* pchannel = item->conn.ssid.chars + idx + strlen(" channel "); + sscanf(pchannel, "%hu (%hu MHz %*s)", &item->conn.channel, &item->conn.frequency); + } + + ffStrbufSubstrBefore(&item->conn.ssid, idx); } ffParsePropLines(ifconfig.chars, "media: ", &item->conn.protocol);