Allow driver wrappers to indicate maximum remain-on-channel duration
[libeap.git] / src / drivers / driver_test.c
index e6b1f1f..fb24673 100644 (file)
@@ -840,8 +840,7 @@ static int test_driver_set_generic_elem(void *priv,
 }
 
 
-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;
@@ -1015,12 +1014,27 @@ static int test_driver_bss_remove(void *priv, const char *ifname)
 
 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;
 }
@@ -1080,7 +1094,7 @@ static int test_driver_set_sta_vlan(void *priv, const u8 *addr,
 }
 
 
-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;
@@ -1089,7 +1103,7 @@ static int test_driver_sta_add(const char *ifname, void *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);
@@ -2372,6 +2386,7 @@ static int wpa_driver_test_get_capa(void *priv, struct wpa_driver_capa *capa)
                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;
 }
@@ -2617,30 +2632,6 @@ static int wpa_driver_test_send_action(void *priv, unsigned int freq,
 }
 
 
-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;
@@ -2756,8 +2747,6 @@ const struct wpa_driver_ops wpa_driver_test_ops = {
        .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,