]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Move connection information parsing into a helper function
authorJouni Malinen <jouni.malinen@oss.qualcomm.com>
Mon, 8 Dec 2025 10:15:29 +0000 (12:15 +0200)
committerJouni Malinen <j@w1.fi>
Tue, 9 Dec 2025 10:40:33 +0000 (12:40 +0200)
wpa_supplicant_event_associnfo() is already overly large, so split area
on determining connection information into a helper function that can be
extended more easily.

Signed-off-by: Jouni Malinen <jouni.malinen@oss.qualcomm.com>
wpa_supplicant/events.c

index 7ea1199cb7e2078119fbcca6fcdb2d8ef4380988..e2d57452d7b7a00a3b70a21b0bebab19b367ed6f 100644 (file)
@@ -3444,6 +3444,40 @@ static int wpa_supplicant_use_own_rsne_params(struct wpa_supplicant *wpa_s,
 }
 
 
+static void wpas_parse_connection_info(struct wpa_supplicant *wpa_s,
+                                      unsigned int freq,
+                                      const u8 *req_ies, size_t req_ies_len,
+                                      const u8 *resp_ies, size_t resp_ies_len)
+{
+       struct ieee802_11_elems req_elems, resp_elems;
+
+       wpa_s->connection_set = 0;
+
+       if (!req_ies || !resp_ies ||
+           ieee802_11_parse_elems(req_ies, req_ies_len, &req_elems, 0) ==
+           ParseFailed ||
+           ieee802_11_parse_elems(resp_ies, resp_ies_len, &resp_elems, 0) ==
+           ParseFailed)
+               return;
+
+       wpa_s->connection_set = 1;
+       wpa_s->connection_ht = req_elems.ht_capabilities &&
+               resp_elems.ht_capabilities;
+
+       /* Do not include subset of VHT on 2.4 GHz vendor extension in
+        * consideration for reporting VHT association. */
+       wpa_s->connection_vht = req_elems.vht_capabilities &&
+               resp_elems.vht_capabilities &&
+               (!freq || wpas_freq_to_band(freq) != BAND_2_4_GHZ);
+       wpa_s->connection_he = req_elems.he_capabilities &&
+               resp_elems.he_capabilities;
+       wpa_s->connection_eht = req_elems.eht_capabilities &&
+               resp_elems.eht_capabilities;
+       if (req_elems.rrm_enabled)
+               wpa_s->rrm.rrm_used = 1;
+}
+
+
 static int wpa_supplicant_event_associnfo(struct wpa_supplicant *wpa_s,
                                          union wpa_event_data *data)
 {
@@ -3500,35 +3534,11 @@ static int wpa_supplicant_event_associnfo(struct wpa_supplicant *wpa_s,
                wpa_dbg(wpa_s, MSG_DEBUG, "freq=%u MHz",
                        data->assoc_info.freq);
 
-       wpa_s->connection_set = 0;
-       if (data->assoc_info.req_ies && data->assoc_info.resp_ies) {
-               struct ieee802_11_elems req_elems, resp_elems;
-
-               if (ieee802_11_parse_elems(data->assoc_info.req_ies,
-                                          data->assoc_info.req_ies_len,
-                                          &req_elems, 0) != ParseFailed &&
-                   ieee802_11_parse_elems(data->assoc_info.resp_ies,
-                                          data->assoc_info.resp_ies_len,
-                                          &resp_elems, 0) != ParseFailed) {
-                       wpa_s->connection_set = 1;
-                       wpa_s->connection_ht = req_elems.ht_capabilities &&
-                               resp_elems.ht_capabilities;
-                       /* Do not include subset of VHT on 2.4 GHz vendor
-                        * extension in consideration for reporting VHT
-                        * association. */
-                       wpa_s->connection_vht = req_elems.vht_capabilities &&
-                               resp_elems.vht_capabilities &&
-                               (!data->assoc_info.freq ||
-                                wpas_freq_to_band(data->assoc_info.freq) !=
-                                BAND_2_4_GHZ);
-                       wpa_s->connection_he = req_elems.he_capabilities &&
-                               resp_elems.he_capabilities;
-                       wpa_s->connection_eht = req_elems.eht_capabilities &&
-                               resp_elems.eht_capabilities;
-                       if (req_elems.rrm_enabled)
-                               wpa_s->rrm.rrm_used = 1;
-               }
-       }
+       wpas_parse_connection_info(wpa_s, data->assoc_info.freq,
+                                  data->assoc_info.req_ies,
+                                  data->assoc_info.req_ies_len,
+                                  data->assoc_info.resp_ies,
+                                  data->assoc_info.resp_ies_len);
 
        p = data->assoc_info.req_ies;
        l = data->assoc_info.req_ies_len;