#include "wlantest.h"
-struct wlantest_bss * bss_get(struct wlantest *wt, const u8 *bssid)
+struct wlantest_bss * bss_find(struct wlantest *wt, const u8 *bssid)
{
struct wlantest_bss *bss;
- if (bssid[0] & 0x01)
- return NULL; /* Skip group addressed frames */
-
dl_list_for_each(bss, &wt->bss, struct wlantest_bss, list) {
if (os_memcmp(bss->bssid, bssid, ETH_ALEN) == 0)
return bss;
}
+ return NULL;
+}
+
+
+struct wlantest_bss * bss_get(struct wlantest *wt, const u8 *bssid)
+{
+ struct wlantest_bss *bss;
+
+ if (bssid[0] & 0x01)
+ return NULL; /* Skip group addressed frames */
+
+ bss = bss_find(wt, bssid);
+ if (bss)
+ return bss;
+
bss = os_zalloc(sizeof(*bss));
if (bss == NULL)
return NULL;
return;
}
- bss = bss_get(wt, bssid);
+ bss = bss_find(wt, bssid);
if (bss == NULL) {
ctrl_send_simple(wt, sock, WLANTEST_CTRL_FAILURE);
return;
return;
}
- bss = bss_get(wt, addr);
+ bss = bss_find(wt, addr);
if (bss == NULL) {
ctrl_send_simple(wt, sock, WLANTEST_CTRL_FAILURE);
return;
return;
}
- sta = sta_get(bss, addr);
+ sta = sta_find(bss, addr);
if (sta == NULL) {
ctrl_send_simple(wt, sock, WLANTEST_CTRL_FAILURE);
return;
return;
}
- bss = bss_get(wt, addr);
+ bss = bss_find(wt, addr);
if (bss == NULL) {
ctrl_send_simple(wt, sock, WLANTEST_CTRL_FAILURE);
return;
return;
}
- bss = bss_get(wt, addr);
+ bss = bss_find(wt, addr);
if (bss == NULL) {
ctrl_send_simple(wt, sock, WLANTEST_CTRL_FAILURE);
return;
return;
}
- sta = sta_get(bss, addr);
+ sta = sta_find(bss, addr);
if (sta == NULL) {
ctrl_send_simple(wt, sock, WLANTEST_CTRL_FAILURE);
return;
return;
}
- bss = bss_get(wt, addr);
+ bss = bss_find(wt, addr);
if (bss == NULL) {
ctrl_send_simple(wt, sock, WLANTEST_CTRL_FAILURE);
return;
return;
}
- bss = bss_get(wt, bssid);
+ bss = bss_find(wt, bssid);
if (bss == NULL) {
wpa_printf(MSG_INFO, "BSS not found for inject command");
ctrl_send_simple(wt, sock, WLANTEST_CTRL_FAILURE);
return;
} sta = NULL;
} else {
- sta = sta_get(bss, sta_addr);
+ sta = sta_find(bss, sta_addr);
if (sta == NULL) {
wpa_printf(MSG_INFO, "Station not found for inject "
"command");
#include "wlantest.h"
-struct wlantest_sta * sta_get(struct wlantest_bss *bss, const u8 *addr)
+struct wlantest_sta * sta_find(struct wlantest_bss *bss, const u8 *addr)
{
struct wlantest_sta *sta;
- if (addr[0] & 0x01)
- return NULL; /* Skip group addressed frames */
-
dl_list_for_each(sta, &bss->sta, struct wlantest_sta, list) {
if (os_memcmp(sta->addr, addr, ETH_ALEN) == 0)
return sta;
}
+ return NULL;
+}
+
+
+struct wlantest_sta * sta_get(struct wlantest_bss *bss, const u8 *addr)
+{
+ struct wlantest_sta *sta;
+
+ if (addr[0] & 0x01)
+ return NULL; /* Skip group addressed frames */
+
+ sta = sta_find(bss, addr);
+ if (sta)
+ return sta;
+
sta = os_zalloc(sizeof(*sta));
if (sta == NULL)
return NULL;
void rx_mgmt(struct wlantest *wt, const u8 *data, size_t len);
void rx_data(struct wlantest *wt, const u8 *data, size_t len);
+struct wlantest_bss * bss_find(struct wlantest *wt, const u8 *bssid);
struct wlantest_bss * bss_get(struct wlantest *wt, const u8 *bssid);
void bss_deinit(struct wlantest_bss *bss);
void bss_update(struct wlantest *wt, struct wlantest_bss *bss,
void bss_flush(struct wlantest *wt);
void pmk_deinit(struct wlantest_pmk *pmk);
+struct wlantest_sta * sta_find(struct wlantest_bss *bss, const u8 *addr);
struct wlantest_sta * sta_get(struct wlantest_bss *bss, const u8 *addr);
void sta_deinit(struct wlantest_sta *sta);
void sta_update_assoc(struct wlantest_sta *sta,