static void wnm_set_scan_freqs(struct wpa_supplicant *wpa_s)
{
- int *freqs;
- int num_freqs = 0;
unsigned int i;
if (!wpa_s->wnm_neighbor_report_elements)
os_free(wpa_s->next_scan_freqs);
wpa_s->next_scan_freqs = NULL;
- freqs = os_calloc(wpa_s->wnm_num_neighbor_report + 1, sizeof(int));
- if (freqs == NULL)
- return;
-
for (i = 0; i < wpa_s->wnm_num_neighbor_report; i++) {
struct neighbor_report *nei;
"WNM: Unknown neighbor operating frequency for "
MACSTR " - scan all channels",
MAC2STR(nei->bssid));
- os_free(freqs);
+ os_free(wpa_s->next_scan_freqs);
+ wpa_s->next_scan_freqs = NULL;
return;
}
if (chan_supported(wpa_s, nei->freq))
- add_freq(freqs, &num_freqs, nei->freq);
+ int_array_add_unique(&wpa_s->next_scan_freqs,
+ nei->freq);
}
- if (num_freqs == 0) {
- os_free(freqs);
+ if (!wpa_s->next_scan_freqs)
return;
- }
wpa_printf(MSG_DEBUG,
- "WNM: Scan %d frequencies based on transition candidate list",
- num_freqs);
- wpa_s->next_scan_freqs = freqs;
+ "WNM: Scan %zu frequencies based on transition candidate list",
+ int_array_len(wpa_s->next_scan_freqs));
}
}
-void add_freq(int *freqs, int *num_freqs, int freq)
-{
- int i;
-
- for (i = 0; i < *num_freqs; i++) {
- if (freqs[i] == freq)
- return;
- }
-
- freqs[*num_freqs] = freq;
- (*num_freqs)++;
-}
-
-
void wpas_connection_failed(struct wpa_supplicant *wpa_s, const u8 *bssid,
const u8 **link_bssids)
{
enum wpas_mac_addr_style style,
struct wpa_ssid *ssid);
int wpas_update_random_addr_disassoc(struct wpa_supplicant *wpa_s);
-void add_freq(int *freqs, int *num_freqs, int freq);
int wpas_get_op_chan_phy(int freq, const u8 *ies, size_t ies_len,
u8 *op_class, u8 *chan, u8 *phy_type);