X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=src%2Fdrivers%2Fdriver_test.c;h=c630e4c2c932c5d88e4e49a79a9e63b2728cf599;hb=0e2e565a44ab7b073491cab00847f7bc62731483;hp=4a57b3039f33562edf4df27adcd210eaef4420d9;hpb=0ebdf62735f183538674fe9f06f0b3940f34b654;p=libeap.git diff --git a/src/drivers/driver_test.c b/src/drivers/driver_test.c index 4a57b30..c630e4c 100644 --- a/src/drivers/driver_test.c +++ b/src/drivers/driver_test.c @@ -841,7 +841,8 @@ static int test_driver_set_generic_elem(void *priv, static int test_driver_set_ap_wps_ie(void *priv, const struct wpabuf *beacon, - const struct wpabuf *proberesp) + const struct wpabuf *proberesp, + const struct wpabuf *assocresp) { struct test_driver_bss *bss = priv; @@ -1014,12 +1015,28 @@ 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 (type == WPA_IF_AP_BSS) - return test_driver_bss_add(priv, ifname, addr, 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 || type == WPA_IF_P2P_GO || + type == WPA_IF_P2P_CLIENT || type == WPA_IF_P2P_GROUP) + return test_driver_bss_add(priv, ifname, if_addr, bss_ctx, drv_priv); return 0; } @@ -1029,7 +1046,8 @@ static int test_driver_if_remove(void *priv, enum wpa_driver_if_type type, const char *ifname) { wpa_printf(MSG_DEBUG, "%s(type=%d ifname=%s)", __func__, type, ifname); - if (type == WPA_IF_AP_BSS) + if (type == WPA_IF_AP_BSS || type == WPA_IF_P2P_GO || + type == WPA_IF_P2P_CLIENT || type == WPA_IF_P2P_GROUP) return test_driver_bss_remove(priv, ifname); return 0; } @@ -1472,6 +1490,7 @@ static int wpa_driver_test_associate( __func__, priv, params->freq, params->pairwise_suite, params->group_suite, params->key_mgmt_suite, params->auth_alg, params->mode); + wpa_driver_update_mode(drv, params->mode == IEEE80211_MODE_AP); if (params->bssid) { wpa_printf(MSG_DEBUG, " bssid=" MACSTR, MAC2STR(params->bssid)); @@ -2370,7 +2389,11 @@ static int wpa_driver_test_get_capa(void *priv, struct wpa_driver_capa *capa) if (drv->use_mlme) capa->flags |= WPA_DRIVER_FLAGS_USER_SPACE_MLME; capa->flags |= WPA_DRIVER_FLAGS_AP; + capa->flags |= WPA_DRIVER_FLAGS_P2P_CONCURRENT; + capa->flags |= WPA_DRIVER_FLAGS_P2P_DEDICATED_INTERFACE; + capa->flags |= WPA_DRIVER_FLAGS_P2P_CAPABLE; capa->max_scan_ssids = 2; + capa->max_remain_on_chan = 60000; return 0; } @@ -2616,30 +2639,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; @@ -2755,8 +2754,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,