}
-static int test_driver_set_ap_wps_ie(const char *ifname, void *priv,
- const struct wpabuf *beacon,
+static int test_driver_set_ap_wps_ie(void *priv, const struct wpabuf *beacon,
const struct wpabuf *proberesp)
{
struct test_driver_bss *bss = priv;
static int test_driver_if_add(void *priv, enum wpa_driver_if_type type,
const char *ifname, const u8 *addr,
- void *bss_ctx, void **drv_priv)
+ void *bss_ctx, void **drv_priv,
+ char *force_ifname, u8 *if_addr)
{
+ struct test_driver_bss *dbss = priv;
+ struct wpa_driver_test_data *drv = dbss->drv;
+
wpa_printf(MSG_DEBUG, "%s(type=%d ifname=%s bss_ctx=%p)",
__func__, type, ifname, bss_ctx);
+ if (addr)
+ os_memcpy(if_addr, addr, ETH_ALEN);
+ else {
+ drv->alloc_iface_idx++;
+ if_addr[0] = 0x02; /* locally administered */
+ sha1_prf(drv->own_addr, ETH_ALEN,
+ "hostapd test addr generation",
+ (const u8 *) &drv->alloc_iface_idx,
+ sizeof(drv->alloc_iface_idx),
+ if_addr + 1, ETH_ALEN - 1);
+ }
if (type == WPA_IF_AP_BSS)
- return test_driver_bss_add(priv, ifname, addr, bss_ctx,
+ return test_driver_bss_add(priv, ifname, if_addr, bss_ctx,
drv_priv);
return 0;
}
}
-static int test_driver_set_ssid(const char *ifname, void *priv, const u8 *buf,
- int len)
+static int test_driver_set_ssid(void *priv, const u8 *buf, int len)
{
struct test_driver_bss *bss = priv;
- wpa_printf(MSG_DEBUG, "%s(ifname=%s)", __func__, ifname);
+ wpa_printf(MSG_DEBUG, "%s(ifname=%s)", __func__, bss->ifname);
wpa_hexdump_ascii(MSG_DEBUG, "test_driver_set_ssid: SSID", buf, len);
if (len < 0 || (size_t) len > sizeof(bss->ssid))
}
-static int test_driver_sta_add(const char *ifname, void *priv,
+static int test_driver_sta_add(void *priv,
struct hostapd_sta_add_params *params)
{
struct test_driver_bss *bss = priv;
wpa_printf(MSG_DEBUG, "%s(ifname=%s addr=" MACSTR " aid=%d "
"capability=0x%x listen_interval=%d)",
- __func__, ifname, MAC2STR(params->addr), params->aid,
+ __func__, bss->ifname, MAC2STR(params->addr), params->aid,
params->capability, params->listen_interval);
wpa_hexdump(MSG_DEBUG, "test_driver_sta_add - supp_rates",
params->supp_rates, params->supp_rates_len);
capa->flags |= WPA_DRIVER_FLAGS_USER_SPACE_MLME;
capa->flags |= WPA_DRIVER_FLAGS_AP;
capa->max_scan_ssids = 2;
+ capa->max_remain_on_chan = 60000;
return 0;
}
}
-static int wpa_driver_test_alloc_interface_addr(void *priv, u8 *addr,
- char *ifname)
-{
- struct test_driver_bss *dbss = priv;
- struct wpa_driver_test_data *drv = dbss->drv;
-
- if (ifname)
- ifname[0] = '\0';
-
- drv->alloc_iface_idx++;
- addr[0] = 0x02; /* locally administered */
- sha1_prf(drv->own_addr, ETH_ALEN, "hostapd test addr generation",
- (const u8 *) &drv->alloc_iface_idx,
- sizeof(drv->alloc_iface_idx),
- addr + 1, ETH_ALEN - 1);
- return 0;
-}
-
-
-static void wpa_driver_test_release_interface_addr(void *priv, const u8 *addr)
-{
-}
-
-
static void test_remain_on_channel_timeout(void *eloop_ctx, void *timeout_ctx)
{
struct wpa_driver_test_data *drv = eloop_ctx;
.scan2 = wpa_driver_test_scan,
.set_freq = wpa_driver_test_set_freq,
.send_action = wpa_driver_test_send_action,
- .alloc_interface_addr = wpa_driver_test_alloc_interface_addr,
- .release_interface_addr = wpa_driver_test_release_interface_addr,
.remain_on_channel = wpa_driver_test_remain_on_channel,
.cancel_remain_on_channel = wpa_driver_test_cancel_remain_on_channel,
.probe_req_report = wpa_driver_test_probe_req_report,