您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ wpa_auth_sm_event函数代码示例

51自学网 2021-06-03 10:01:48
  C++
这篇教程C++ wpa_auth_sm_event函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中wpa_auth_sm_event函数的典型用法代码示例。如果您正苦于以下问题:C++ wpa_auth_sm_event函数的具体用法?C++ wpa_auth_sm_event怎么用?C++ wpa_auth_sm_event使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了wpa_auth_sm_event函数的26个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: ibss_rsn_auth_init

static int ibss_rsn_auth_init(struct ibss_rsn *ibss_rsn,			      struct ibss_rsn_peer *peer){	peer->auth = wpa_auth_sta_init(ibss_rsn->auth_group, peer->addr);	if (peer->auth == NULL) {		wpa_printf(MSG_DEBUG, "AUTH: wpa_auth_sta_init() failed");		return -1;	}	/* TODO: get peer RSN IE with Probe Request */	if (wpa_validate_wpa_ie(ibss_rsn->auth_group, peer->auth,				(u8 *) "/x30/x14/x01/x00"				"/x00/x0f/xac/x04"				"/x01/x00/x00/x0f/xac/x04"				"/x01/x00/x00/x0f/xac/x02"				"/x00/x00", 22, NULL, 0) !=	    WPA_IE_OK) {		wpa_printf(MSG_DEBUG, "AUTH: wpa_validate_wpa_ie() failed");		return -1;	}	if (wpa_auth_sm_event(peer->auth, WPA_ASSOC))		return -1;	if (wpa_auth_sta_associated(ibss_rsn->auth_group, peer->auth))		return -1;	return 0;}
开发者ID:174high,项目名称:wpa_supplicant_8_ti,代码行数:29,


示例2: handle_deauth

static void handle_deauth(struct hostapd_data *hapd,			  const struct ieee80211_mgmt *mgmt, size_t len){	struct sta_info *sta;	if (len < IEEE80211_HDRLEN + sizeof(mgmt->u.deauth)) {		printf("handle_deauth - too short payload (len=%lu)/n",		       (unsigned long) len);		return;	}	wpa_printf(MSG_DEBUG, "deauthentication: STA=" MACSTR		   " reason_code=%d",		   MAC2STR(mgmt->sa),		   le_to_host16(mgmt->u.deauth.reason_code));	sta = ap_get_sta(hapd, mgmt->sa);	if (sta == NULL) {		printf("Station " MACSTR " trying to deauthenticate, but it "		       "is not authenticated./n", MAC2STR(mgmt->sa));		return;	}	sta->flags &= ~(WLAN_STA_AUTH | WLAN_STA_ASSOC);	wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_DISCONNECTED MACSTR,		MAC2STR(sta->addr));	wpa_auth_sm_event(sta->wpa_sm, WPA_DEAUTH);	hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,		       HOSTAPD_LEVEL_DEBUG, "deauthenticated");	mlme_deauthenticate_indication(		hapd, sta, le_to_host16(mgmt->u.deauth.reason_code));	sta->acct_terminate_cause = RADIUS_ACCT_TERMINATE_CAUSE_USER_REQUEST;	ieee802_1x_notify_port_enabled(sta->eapol_sm, 0);	ap_free_sta(hapd, sta);}
开发者ID:progloverfan,项目名称:mod-hostapd,代码行数:35,


示例3: ap_sta_disconnect

void ap_sta_disconnect(struct hostapd_data *hapd, struct sta_info *sta,		       const u8 *addr, u16 reason){	if (sta == NULL && addr)		sta = ap_get_sta(hapd, addr);	if (addr)		hostapd_drv_sta_deauth(hapd, addr, reason);	if (sta == NULL)		return;	ap_sta_set_authorized(hapd, sta, 0);	wpa_auth_sm_event(sta->wpa_sm, WPA_DEAUTH);	ieee802_1x_notify_port_enabled(sta->eapol_sm, 0);	sta->flags &= ~(WLAN_STA_AUTH | WLAN_STA_ASSOC);	wpa_printf(MSG_DEBUG, "%s: reschedule ap_handle_timer timeout "		   "for " MACSTR " (%d seconds - "		   "AP_MAX_INACTIVITY_AFTER_DEAUTH)",		   __func__, MAC2STR(sta->addr),		   AP_MAX_INACTIVITY_AFTER_DEAUTH);	eloop_cancel_timeout(ap_handle_timer, hapd, sta);	eloop_register_timeout(AP_MAX_INACTIVITY_AFTER_DEAUTH, 0,			       ap_handle_timer, hapd, sta);	sta->timeout_next = STA_REMOVE;	sta->deauth_reason = reason;	sta->flags |= WLAN_STA_PENDING_DEAUTH_CB;	eloop_cancel_timeout(ap_sta_deauth_cb_timeout, hapd, sta);	eloop_register_timeout(hapd->iface->drv_flags &			       WPA_DRIVER_FLAGS_DEAUTH_TX_STATUS ? 2 : 0, 0,			       ap_sta_deauth_cb_timeout, hapd, sta);}
开发者ID:MindShow,项目名称:amlogic_s905_kernel_merges,代码行数:33,


示例4: hostapd_notif_disassoc

void hostapd_notif_disassoc(struct hostapd_data *hapd, const u8 *addr){	struct sta_info *sta;	if (addr == NULL) {		/*		 * This could potentially happen with unexpected event from the		 * driver wrapper. This was seen at least in one case where the		 * driver ended up reporting a station mode event while hostapd		 * was running, so better make sure we stop processing such an		 * event here.		 */		wpa_printf(MSG_DEBUG, "hostapd_notif_disassoc: Skip event "			   "with no address");		return;	}	hostapd_logger(hapd, addr, HOSTAPD_MODULE_IEEE80211,		       HOSTAPD_LEVEL_INFO, "disassociated");	sta = ap_get_sta(hapd, addr);	if (sta == NULL) {		wpa_printf(MSG_DEBUG, "Disassociation notification for "			   "unknown STA " MACSTR, MAC2STR(addr));		return;	}	ap_sta_set_authorized(hapd, sta, 0);	sta->flags &= ~(WLAN_STA_AUTH | WLAN_STA_ASSOC);	wpa_auth_sm_event(sta->wpa_sm, WPA_DISASSOC);	sta->acct_terminate_cause = RADIUS_ACCT_TERMINATE_CAUSE_USER_REQUEST;	ieee802_1x_notify_port_enabled(sta->eapol_sm, 0);	ap_free_sta(hapd, sta);}
开发者ID:HangRuan,项目名称:wpa_supplicant_android,代码行数:34,


示例5: rtl871x_del_sta

static int rtl871x_del_sta(struct rtl871x_driver_data *drv, u8 *addr){	struct hostapd_data *hapd = drv->hapd;	#if 1	drv_event_disassoc(hapd, addr);	#else	struct sta_info *sta;	sta = ap_get_sta(hapd, addr);	if (sta != NULL) 	{		sta->flags &= ~(WLAN_STA_AUTH | WLAN_STA_ASSOC);		wpa_auth_sm_event(sta->wpa_sm, WPA_DISASSOC);		sta->acct_terminate_cause = RADIUS_ACCT_TERMINATE_CAUSE_USER_REQUEST;		ieee802_1x_notify_port_enabled(sta->eapol_sm, 0);		ap_free_sta(hapd, sta);	}	else	{		wpa_printf(MSG_DEBUG, "Disassociation notification for "			   "unknown STA " MACSTR, MAC2STR(addr));	}#endif	return 0;	}
开发者ID:robertalks,项目名称:hostap,代码行数:30,


示例6: bsd_new_sta

static intbsd_new_sta(struct bsd_driver_data *drv, u8 addr[IEEE80211_ADDR_LEN]){	struct hostapd_data *hapd = drv->hapd;	struct hostapd_bss_config *conf = hapd->conf;	struct sta_info *sta;	struct ieee80211req_wpaie ie;	int new_assoc, ielen, res;	hostapd_logger(hapd, addr, HOSTAPD_MODULE_IEEE80211,		HOSTAPD_LEVEL_INFO, "associated");	sta = ap_sta_add(hapd, addr);	if (sta == NULL)		return -1;	/*	 * Fetch and validate any negotiated WPA/RSN parameters.	 */	if (conf->wpa) {		memset(&ie, 0, sizeof(ie));		memcpy(ie.wpa_macaddr, addr, IEEE80211_ADDR_LEN);		if (get80211var(drv, IEEE80211_IOC_WPAIE, &ie, sizeof(ie)) < 0) {			printf("Failed to get WPA/RSN information element./n");			return -1;		/* XXX not right */		}		ielen = ie.wpa_ie[1];		if (ielen == 0) {			printf("No WPA/RSN information element for station!/n");			return -1;		/* XXX not right */		}		ielen += 2;		if (sta->wpa_sm == NULL)			sta->wpa_sm = wpa_auth_sta_init(hapd->wpa_auth,							sta->addr);		if (sta->wpa_sm == NULL) {			printf("Failed to initialize WPA state machine/n");			return -1;		}		res = wpa_validate_wpa_ie(hapd->wpa_auth, sta->wpa_sm,					  ie.wpa_ie, ielen, NULL, 0);		if (res != WPA_IE_OK) {			printf("WPA/RSN information element rejected? "				"(res %u)/n", res);			return -1;		}	}	/*	 * Now that the internal station state is setup	 * kick the authenticator into action.	 */	new_assoc = (sta->flags & WLAN_STA_ASSOC) == 0;	sta->flags |= WLAN_STA_AUTH | WLAN_STA_ASSOC;	wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC);	hostapd_new_assoc_sta(hapd, sta, !new_assoc);	ieee802_1x_notify_port_enabled(sta->eapol_sm, 1);	return 0;}
开发者ID:Rajeev-Sirasanagandla,项目名称:t80_platform_external,代码行数:58,


示例7: test_driver_new_sta

static int test_driver_new_sta(struct test_driver_data *drv,			       struct test_driver_bss *bss, const u8 *addr,			       const u8 *ie, size_t ielen){	struct hostapd_data *hapd;	struct sta_info *sta;	int new_assoc, res;	hapd = test_driver_get_hapd(drv, bss);	if (hapd == NULL)		return -1;	hostapd_logger(hapd, addr, HOSTAPD_MODULE_IEEE80211,		HOSTAPD_LEVEL_INFO, "associated");	sta = ap_get_sta(hapd, addr);	if (sta) {		accounting_sta_stop(hapd, sta);	} else {		sta = ap_sta_add(hapd, addr);		if (sta == NULL)			return -1;	}	accounting_sta_get_id(hapd, sta);	if (hapd->conf->wpa) {		if (ie == NULL || ielen == 0) {			printf("test_driver: no IE from STA/n");			return -1;		}		if (sta->wpa_sm == NULL)			sta->wpa_sm = wpa_auth_sta_init(hapd->wpa_auth,							sta->addr);		if (sta->wpa_sm == NULL) {			printf("test_driver: Failed to initialize WPA state "			       "machine/n");			return -1;		}		res = wpa_validate_wpa_ie(hapd->wpa_auth, sta->wpa_sm,					  ie, ielen);		if (res != WPA_IE_OK) {			printf("WPA/RSN information element rejected? "			       "(res %u)/n", res);			return -1;		}	}	new_assoc = (sta->flags & WLAN_STA_ASSOC) == 0;	sta->flags |= WLAN_STA_AUTH | WLAN_STA_ASSOC;	wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC);	hostapd_new_assoc_sta(hapd, sta, !new_assoc);	ieee802_1x_notify_port_enabled(sta->eapol_sm, 1);	return 0;}
开发者ID:KHATEEBNSIT,项目名称:AP,代码行数:57,


示例8: hostapd_notify_assoc_fils_finish

void hostapd_notify_assoc_fils_finish(struct hostapd_data *hapd,				      struct sta_info *sta){	u16 reply_res = WLAN_STATUS_SUCCESS;	struct ieee802_11_elems elems;	u8 buf[IEEE80211_MAX_MMPDU_SIZE], *p = buf;	int new_assoc;	wpa_printf(MSG_DEBUG, "%s FILS: Finish association with " MACSTR,		   __func__, MAC2STR(sta->addr));	eloop_cancel_timeout(fils_hlp_timeout, hapd, sta);	if (!sta->fils_pending_assoc_req)		return;	ieee802_11_parse_elems(sta->fils_pending_assoc_req,			       sta->fils_pending_assoc_req_len, &elems, 0);	if (!elems.fils_session) {		wpa_printf(MSG_DEBUG, "%s failed to find FILS Session element",			   __func__);		return;	}	p = hostapd_eid_assoc_fils_session(sta->wpa_sm, p,					   elems.fils_session,					   sta->fils_hlp_resp);	reply_res = hostapd_sta_assoc(hapd, sta->addr,				      sta->fils_pending_assoc_is_reassoc,				      WLAN_STATUS_SUCCESS,				      buf, p - buf);	ap_sta_set_authorized(hapd, sta, 1);	new_assoc = (sta->flags & WLAN_STA_ASSOC) == 0;	sta->flags |= WLAN_STA_AUTH | WLAN_STA_ASSOC;	sta->flags &= ~WLAN_STA_WNM_SLEEP_MODE;	hostapd_set_sta_flags(hapd, sta);	wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC_FILS);	ieee802_1x_notify_port_enabled(sta->eapol_sm, 1);	hostapd_new_assoc_sta(hapd, sta, !new_assoc);	os_free(sta->fils_pending_assoc_req);	sta->fils_pending_assoc_req = NULL;	sta->fils_pending_assoc_req_len = 0;	wpabuf_free(sta->fils_hlp_resp);	sta->fils_hlp_resp = NULL;	wpabuf_free(sta->hlp_dhcp_discover);	sta->hlp_dhcp_discover = NULL;	fils_hlp_deinit(hapd);	/*	 * Remove the station in case transmission of a success response fails	 * (the STA was added associated to the driver) or if the station was	 * previously added unassociated.	 */	if (reply_res != WLAN_STATUS_SUCCESS || sta->added_unassoc) {		hostapd_drv_sta_remove(hapd, sta->addr);		sta->added_unassoc = 0;	}}
开发者ID:FreeBSDFoundation,项目名称:freebsd,代码行数:57,


示例9: auth_shared_key

static u16 auth_shared_key(struct hostapd_data *hapd, struct sta_info *sta,			   u16 auth_transaction, const u8 *challenge,			   int iswep){	hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,		       HOSTAPD_LEVEL_DEBUG,		       "authentication (shared key, transaction %d)",		       auth_transaction);	if (auth_transaction == 1) {		if (!sta->challenge) {			/* Generate a pseudo-random challenge */			u8 key[8];			time_t now;			int r;			sta->challenge = os_zalloc(WLAN_AUTH_CHALLENGE_LEN);			if (sta->challenge == NULL)				return WLAN_STATUS_UNSPECIFIED_FAILURE;			now = time(NULL);			r = random();			os_memcpy(key, &now, 4);			os_memcpy(key + 4, &r, 4);			rc4_skip(key, sizeof(key), 0,				 sta->challenge, WLAN_AUTH_CHALLENGE_LEN);		}		return 0;	}	if (auth_transaction != 3)		return WLAN_STATUS_UNSPECIFIED_FAILURE;	/* Transaction 3 */	if (!iswep || !sta->challenge || !challenge ||	    os_memcmp(sta->challenge, challenge, WLAN_AUTH_CHALLENGE_LEN)) {		hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,			       HOSTAPD_LEVEL_INFO,			       "shared key authentication - invalid "			       "challenge-response");		return WLAN_STATUS_CHALLENGE_FAIL;	}	hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,		       HOSTAPD_LEVEL_DEBUG,		       "authentication OK (shared key)");#ifdef IEEE80211_REQUIRE_AUTH_ACK	/* Station will be marked authenticated if it ACKs the	 * authentication reply. */#else	sta->flags |= WLAN_STA_AUTH;	wpa_auth_sm_event(sta->wpa_sm, WPA_AUTH);#endif	os_free(sta->challenge);	sta->challenge = NULL;	return 0;}
开发者ID:progloverfan,项目名称:mod-hostapd,代码行数:57,


示例10: hostapd_notif_disassoc

void hostapd_notif_disassoc(struct hostapd_data *hapd, const u8 *addr){	struct sta_info *sta;	if (addr == NULL) {		/*		 * This could potentially happen with unexpected event from the		 * driver wrapper. This was seen at least in one case where the		 * driver ended up reporting a station mode event while hostapd		 * was running, so better make sure we stop processing such an		 * event here.		 */		wpa_printf(MSG_DEBUG, "hostapd_notif_disassoc: Skip event "			   "with no address");		return;	}	hostapd_logger(hapd, addr, HOSTAPD_MODULE_IEEE80211,		       HOSTAPD_LEVEL_INFO, "disassociated");	sta = ap_get_sta(hapd, addr);	if (sta == NULL) {		wpa_printf(MSG_DEBUG, "Disassociation notification for "			   "unknown STA " MACSTR, MAC2STR(addr));		return;	}/*[ALPS00326459][6575JB][BSP Package][6577JB][CTS Verifier 4.1_r2][MT6577_PHONE][changelist 996001]GROUP JOIN 2 cases fail in Wi-Fi Direct Test*/	#if defined(CONFIG_MTK_P2P) || defined(CONFIG_HOTSPOT_MGR_SUPPORT)	if ((!hapd->conf->ieee802_1x && !hapd->conf->wpa) ||		sta->auth_alg == WLAN_AUTH_FT) {		/*		 * Open, static WEP, or FT protocol; no separate authorization		 * step.		 */		wpa_msg(hapd->msg_ctx, MSG_INFO,		AP_STA_DISCONNECTED MACSTR, MAC2STR(sta->addr));	}#endif /* CONFIG_MTK_P2P || CONFIG_HOTSPOT_MGR_SUPPORT */	ap_sta_set_authorized(hapd, sta, 0);	sta->flags &= ~(WLAN_STA_AUTH | WLAN_STA_ASSOC);	wpa_auth_sm_event(sta->wpa_sm, WPA_DISASSOC);	sta->acct_terminate_cause = RADIUS_ACCT_TERMINATE_CAUSE_USER_REQUEST;	ieee802_1x_notify_port_enabled(sta->eapol_sm, 0);	ap_free_sta(hapd, sta);}
开发者ID:Bebooo43,项目名称:android_hardware_mediatek,代码行数:49,


示例11: handle_disassoc

static void handle_disassoc(struct hostapd_data *hapd,			    const struct ieee80211_mgmt *mgmt, size_t len){	struct sta_info *sta;	if (len < IEEE80211_HDRLEN + sizeof(mgmt->u.disassoc)) {		printf("handle_disassoc - too short payload (len=%lu)/n",		       (unsigned long) len);		return;	}	wpa_printf(MSG_DEBUG, "disassocation: STA=" MACSTR " reason_code=%d",		   MAC2STR(mgmt->sa),		   le_to_host16(mgmt->u.disassoc.reason_code));	sta = ap_get_sta(hapd, mgmt->sa);	if (sta == NULL) {		printf("Station " MACSTR " trying to disassociate, but it "		       "is not associated./n", MAC2STR(mgmt->sa));		return;	}	sta->flags &= ~WLAN_STA_ASSOC;	wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_DISCONNECTED MACSTR,		MAC2STR(sta->addr));	wpa_auth_sm_event(sta->wpa_sm, WPA_DISASSOC);	hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,		       HOSTAPD_LEVEL_INFO, "disassociated");	sta->acct_terminate_cause = RADIUS_ACCT_TERMINATE_CAUSE_USER_REQUEST;	ieee802_1x_notify_port_enabled(sta->eapol_sm, 0);	/* Stop Accounting and IEEE 802.1X sessions, but leave the STA	 * authenticated. */	accounting_sta_stop(hapd, sta);	ieee802_1x_free_station(sta);	hapd->drv.sta_remove(hapd, sta->addr);	if (sta->timeout_next == STA_NULLFUNC ||	    sta->timeout_next == STA_DISASSOC) {		sta->timeout_next = STA_DEAUTH;		eloop_cancel_timeout(ap_handle_timer, hapd, sta);		eloop_register_timeout(AP_DEAUTH_DELAY, 0, ap_handle_timer,				       hapd, sta);	}	mlme_disassociate_indication(		hapd, sta, le_to_host16(mgmt->u.disassoc.reason_code));}
开发者ID:progloverfan,项目名称:mod-hostapd,代码行数:47,


示例12: madwifi_del_sta

static intmadwifi_del_sta(struct madwifi_driver_data *drv, u8 addr[IEEE80211_ADDR_LEN]){	struct hostapd_data *hapd = drv->hapd;	struct sta_info *sta;	hostapd_logger(hapd, addr, HOSTAPD_MODULE_IEEE80211,		HOSTAPD_LEVEL_INFO, "disassociated");	sta = ap_get_sta(hapd, addr);	if (sta != NULL) {		sta->flags &= ~(WLAN_STA_AUTH | WLAN_STA_ASSOC);		wpa_auth_sm_event(sta->wpa_sm, WPA_DISASSOC);		sta->acct_terminate_cause = RADIUS_ACCT_TERMINATE_CAUSE_USER_REQUEST;		ieee802_1x_notify_port_enabled(sta->eapol_sm, 0);		ap_free_sta(hapd, sta);	}	return 0;}
开发者ID:Rajeev-Sirasanagandla,项目名称:t80_platform_external,代码行数:19,


示例13: madwifi_new_sta

static intmadwifi_new_sta(struct madwifi_driver_data *drv, u8 addr[IEEE80211_ADDR_LEN]){	struct hostapd_data *hapd = drv->hapd;	struct sta_info *sta;	int new_assoc;	hostapd_logger(hapd, addr, HOSTAPD_MODULE_IEEE80211,		HOSTAPD_LEVEL_INFO, "associated");	sta = ap_get_sta(hapd, addr);	if (sta) {		accounting_sta_stop(hapd, sta);	} else {		sta = ap_sta_add(hapd, addr);		if (sta == NULL)			return -1;	}	if (memcmp(addr, drv->acct_mac, ETH_ALEN) == 0) {		/* Cached accounting data is not valid anymore. */		memset(drv->acct_mac, 0, ETH_ALEN);		memset(&drv->acct_data, 0, sizeof(drv->acct_data));	}	accounting_sta_get_id(hapd, sta);	if (hapd->conf->wpa) {		if (madwifi_process_wpa_ie(drv, sta))			return -1;	}	/*	 * Now that the internal station state is setup	 * kick the authenticator into action.	 */	new_assoc = (sta->flags & WLAN_STA_ASSOC) == 0;	sta->flags |= WLAN_STA_AUTH | WLAN_STA_ASSOC;	wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC);	hostapd_new_assoc_sta(hapd, sta, !new_assoc);	ieee802_1x_notify_port_enabled(sta->eapol_sm, 1);	return 0;}
开发者ID:smithlei,项目名称:lw_hostap,代码行数:42,


示例14: hostapd_notif_disassoc

void hostapd_notif_disassoc(struct hostapd_data *hapd, const u8 *addr){	struct sta_info *sta;	hostapd_logger(hapd, addr, HOSTAPD_MODULE_IEEE80211,		       HOSTAPD_LEVEL_INFO, "disassociated");	sta = ap_get_sta(hapd, addr);	if (sta == NULL) {		wpa_printf(MSG_DEBUG, "Disassociation notification for "			   "unknown STA " MACSTR, MAC2STR(addr));		return;	}	sta->flags &= ~(WLAN_STA_AUTH | WLAN_STA_ASSOC);	wpa_auth_sm_event(sta->wpa_sm, WPA_DISASSOC);	sta->acct_terminate_cause = RADIUS_ACCT_TERMINATE_CAUSE_USER_REQUEST;	ieee802_1x_notify_port_enabled(sta->eapol_sm, 0);	ap_free_sta(hapd, sta);}
开发者ID:fgoncalves,项目名称:Ralink-Driver-Hack,代码行数:20,


示例15: auth_init

static int auth_init(struct wpa *wpa){	wpa->auth = wpa_auth_sta_init(wpa->auth_group, wpa->supp_addr, NULL);	if (wpa->auth == NULL) {		wpa_printf(MSG_DEBUG, "AUTH: wpa_auth_sta_init() failed");		return -1;	}	if (wpa_validate_wpa_ie(wpa->auth_group, wpa->auth, wpa->supp_ie,				wpa->supp_ie_len, NULL, 0) != WPA_IE_OK) {		wpa_printf(MSG_DEBUG, "AUTH: wpa_validate_wpa_ie() failed");		return -1;	}	wpa_auth_sm_event(wpa->auth, WPA_ASSOC);	wpa_auth_sta_associated(wpa->auth_group, wpa->auth);	return 0;}
开发者ID:2asoft,项目名称:freebsd,代码行数:20,


示例16: hostapd_notify_auth_fils_finish

static void hostapd_notify_auth_fils_finish(struct hostapd_data *hapd,					    struct sta_info *sta, u16 resp,					    struct wpabuf *data, int pub){	if (resp == WLAN_STATUS_SUCCESS) {		hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,			       HOSTAPD_LEVEL_DEBUG, "authentication OK (FILS)");		sta->flags |= WLAN_STA_AUTH;		wpa_auth_sm_event(sta->wpa_sm, WPA_AUTH);		sta->auth_alg = WLAN_AUTH_FILS_SK;		mlme_authenticate_indication(hapd, sta);	} else {		hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,			       HOSTAPD_LEVEL_DEBUG,			       "authentication failed (FILS)");	}	hostapd_sta_auth(hapd, sta->addr, 2, resp,			 data ? wpabuf_head(data) : NULL,			 data ? wpabuf_len(data) : 0);	wpabuf_free(data);}
开发者ID:FreeBSDFoundation,项目名称:freebsd,代码行数:22,


示例17: test_driver_disassoc

static void test_driver_disassoc(struct test_driver_data *drv,				 struct sockaddr_un *from, socklen_t fromlen){	struct test_client_socket *cli;	struct sta_info *sta;	cli = test_driver_get_cli(drv, from, fromlen);	if (!cli)		return;	hostapd_logger(drv->hapd, cli->addr, HOSTAPD_MODULE_IEEE80211,		       HOSTAPD_LEVEL_INFO, "disassociated");	sta = ap_get_sta(drv->hapd, cli->addr);	if (sta != NULL) {		sta->flags &= ~WLAN_STA_ASSOC;		wpa_auth_sm_event(sta->wpa_sm, WPA_DISASSOC);		sta->acct_terminate_cause =			RADIUS_ACCT_TERMINATE_CAUSE_USER_REQUEST;		ieee802_1x_notify_port_enabled(sta->eapol_sm, 0);		ap_free_sta(drv->hapd, sta);	}}
开发者ID:AhmadTux,项目名称:DragonFlyBSD,代码行数:23,


示例18: hostapd_notif_assoc

//.........这里部分代码省略.........		if (wps) {			sta->flags |= WLAN_STA_WPS;			if (wps_is_20(wps)) {				wpa_printf(MSG_DEBUG, "WPS: STA supports "					   "WPS 2.0");				sta->flags |= WLAN_STA_WPS2;			}		} else			sta->flags |= WLAN_STA_MAYBE_WPS;		wpabuf_free(wps);#endif /* CONFIG_WPS */#ifdef CONFIG_HS20	} else if (hapd->conf->osen) {		if (elems.osen == NULL) {			hostapd_logger(				hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,				HOSTAPD_LEVEL_INFO,				"No HS 2.0 OSEN element in association request");			return WLAN_STATUS_INVALID_IE;		}		wpa_printf(MSG_DEBUG, "HS 2.0: OSEN association");		if (sta->wpa_sm == NULL)			sta->wpa_sm = wpa_auth_sta_init(hapd->wpa_auth,							sta->addr, NULL);		if (sta->wpa_sm == NULL) {			wpa_printf(MSG_WARNING, "Failed to initialize WPA "				   "state machine");			return WLAN_STATUS_UNSPECIFIED_FAILURE;		}		if (wpa_validate_osen(hapd->wpa_auth, sta->wpa_sm,				      elems.osen - 2, elems.osen_len + 2) < 0)			return WLAN_STATUS_INVALID_IE;#endif /* CONFIG_HS20 */	}#ifdef CONFIG_WPSskip_wpa_check:#endif /* CONFIG_WPS */#ifdef CONFIG_IEEE80211R	p = wpa_sm_write_assoc_resp_ies(sta->wpa_sm, buf, sizeof(buf),					sta->auth_alg, req_ies, req_ies_len);	hostapd_sta_assoc(hapd, addr, reassoc, status, buf, p - buf);	if (sta->auth_alg == WLAN_AUTH_FT)		ap_sta_set_authorized(hapd, sta, 1);#else /* CONFIG_IEEE80211R */	/* Keep compiler silent about unused variables */	if (status) {	}#endif /* CONFIG_IEEE80211R */	new_assoc = (sta->flags & WLAN_STA_ASSOC) == 0;	sta->flags |= WLAN_STA_AUTH | WLAN_STA_ASSOC;	sta->flags &= ~WLAN_STA_WNM_SLEEP_MODE;	hostapd_set_sta_flags(hapd, sta);	if (reassoc && (sta->auth_alg == WLAN_AUTH_FT))		wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC_FT);	else		wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC);	hostapd_new_assoc_sta(hapd, sta, !new_assoc);/*[ALPS00326459][6575JB][BSP Package][6577JB][CTS Verifier 4.1_r2][MT6577_PHONE][changelist 996001]GROUP JOIN 2 cases fail in Wi-Fi Direct Test*/#if defined(CONFIG_MTK_P2P) || defined(CONFIG_HOTSPOT_MGR_SUPPORT)	if ((!hapd->conf->ieee802_1x && !hapd->conf->wpa) ||		sta->auth_alg == WLAN_AUTH_FT) {		/*		 * Open, static WEP, or FT protocol; no separate authorization		 * step.		 */		wpa_msg(hapd->msg_ctx, MSG_INFO,		AP_STA_CONNECTED MACSTR, MAC2STR(sta->addr));	}#endif /* CONFIG_MTK_P2P || CONFIG_HOTSPOT_MGR_SUPPORT */	ieee802_1x_notify_port_enabled(sta->eapol_sm, 1);#ifdef CONFIG_P2P	if (req_ies) {		p2p_group_notif_assoc(hapd->p2p_group, sta->addr,				      req_ies, req_ies_len);	}#endif /* CONFIG_P2P */	return 0;fail:#ifdef CONFIG_IEEE80211R	hostapd_sta_assoc(hapd, addr, reassoc, status, buf, p - buf);#endif /* CONFIG_IEEE80211R */	hostapd_drv_sta_disassoc(hapd, sta->addr, reason);	ap_free_sta(hapd, sta);	return -1;}
开发者ID:Bebooo43,项目名称:android_hardware_mediatek,代码行数:101,


示例19: handle_assoc_cb

//.........这里部分代码省略.........	if (reassoc)		status = le_to_host16(mgmt->u.reassoc_resp.status_code);	else		status = le_to_host16(mgmt->u.assoc_resp.status_code);	sta = ap_get_sta(hapd, mgmt->da);	if (!sta) {		printf("handle_assoc_cb: STA " MACSTR " not found/n",		       MAC2STR(mgmt->da));		return;	}	if (status != WLAN_STATUS_SUCCESS)		goto fail;	/* Stop previous accounting session, if one is started, and allocate	 * new session id for the new session. */	accounting_sta_stop(hapd, sta);	hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,		       HOSTAPD_LEVEL_INFO,		       "associated (aid %d)",		       sta->aid);	if (sta->flags & WLAN_STA_ASSOC)		new_assoc = 0;	sta->flags |= WLAN_STA_ASSOC;	if ((!hapd->conf->ieee802_1x && !hapd->conf->wpa) ||	    sta->auth_alg == WLAN_AUTH_FT) {		/*		 * Open, static WEP, or FT protocol; no separate authorization		 * step.		 */		sta->flags |= WLAN_STA_AUTHORIZED;		wpa_msg(hapd->msg_ctx, MSG_INFO,			AP_STA_CONNECTED MACSTR, MAC2STR(sta->addr));	}	if (reassoc)		mlme_reassociate_indication(hapd, sta);	else		mlme_associate_indication(hapd, sta);#ifdef CONFIG_IEEE80211W	sta->sa_query_timed_out = 0;#endif /* CONFIG_IEEE80211W */	/*	 * Remove the STA entry in order to make sure the STA PS state gets	 * cleared and configuration gets updated in case of reassociation back	 * to the same AP.	 */	hapd->drv.sta_remove(hapd, sta->addr);#ifdef CONFIG_IEEE80211N	if (sta->flags & WLAN_STA_HT)		hostapd_get_ht_capab(hapd, sta->ht_capabilities, &ht_cap);#endif /* CONFIG_IEEE80211N */	if (hapd->drv.sta_add(hapd, sta->addr, sta->aid, sta->capability,			      sta->supported_rates, sta->supported_rates_len,			      sta->listen_interval,			      sta->flags & WLAN_STA_HT ? &ht_cap : NULL)) {		hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,			       HOSTAPD_LEVEL_NOTICE,			       "Could not add STA to kernel driver");	}	if (sta->eapol_sm == NULL) {		/*		 * This STA does not use RADIUS server for EAP authentication,		 * so bind it to the selected VLAN interface now, since the		 * interface selection is not going to change anymore.		 */		if (ap_sta_bind_vlan(hapd, sta, 0) < 0)			goto fail;	} else if (sta->vlan_id) {		/* VLAN ID already set (e.g., by PMKSA caching), so bind STA */		if (ap_sta_bind_vlan(hapd, sta, 0) < 0)			goto fail;	}	hapd->drv.set_sta_flags(hapd, sta);	if (sta->auth_alg == WLAN_AUTH_FT)		wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC_FT);	else		wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC);	hapd->new_assoc_sta_cb(hapd, sta, !new_assoc);	ieee802_1x_notify_port_enabled(sta->eapol_sm, 1); fail:	/* Copy of the association request is not needed anymore */	if (sta->last_assoc_req) {		os_free(sta->last_assoc_req);		sta->last_assoc_req = NULL;	}}
开发者ID:progloverfan,项目名称:mod-hostapd,代码行数:101,


示例20: handle_auth

//.........这里部分代码省略.........		printf("Station " MACSTR " not allowed to authenticate./n",		       MAC2STR(mgmt->sa));		resp = WLAN_STATUS_UNSPECIFIED_FAILURE;		goto fail;	}	if (res == HOSTAPD_ACL_PENDING) {		wpa_printf(MSG_DEBUG, "Authentication frame from " MACSTR			   " waiting for an external authentication",			   MAC2STR(mgmt->sa));		/* Authentication code will re-send the authentication frame		 * after it has received (and cached) information from the		 * external source. */		return;	}	sta = ap_sta_add(hapd, mgmt->sa);	if (!sta) {		resp = WLAN_STATUS_UNSPECIFIED_FAILURE;		goto fail;	}	if (vlan_id > 0) {		if (hostapd_get_vlan_id_ifname(hapd->conf->vlan,					       vlan_id) == NULL) {			hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_RADIUS,				       HOSTAPD_LEVEL_INFO, "Invalid VLAN ID "				       "%d received from RADIUS server",				       vlan_id);			resp = WLAN_STATUS_UNSPECIFIED_FAILURE;			goto fail;		}		sta->vlan_id = vlan_id;		hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_RADIUS,			       HOSTAPD_LEVEL_INFO, "VLAN ID %d", sta->vlan_id);	}	sta->flags &= ~WLAN_STA_PREAUTH;	ieee802_1x_notify_pre_auth(sta->eapol_sm, 0);	if (hapd->conf->acct_interim_interval == 0 && acct_interim_interval)		sta->acct_interim_interval = acct_interim_interval;	if (res == HOSTAPD_ACL_ACCEPT_TIMEOUT)		ap_sta_session_timeout(hapd, sta, session_timeout);	else		ap_sta_no_session_timeout(hapd, sta);	switch (auth_alg) {	case WLAN_AUTH_OPEN:		hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,			       HOSTAPD_LEVEL_DEBUG,			       "authentication OK (open system)");#ifdef IEEE80211_REQUIRE_AUTH_ACK		/* Station will be marked authenticated if it ACKs the		 * authentication reply. */#else		sta->flags |= WLAN_STA_AUTH;		wpa_auth_sm_event(sta->wpa_sm, WPA_AUTH);		sta->auth_alg = WLAN_AUTH_OPEN;		mlme_authenticate_indication(hapd, sta);#endif		break;	case WLAN_AUTH_SHARED_KEY:		resp = auth_shared_key(hapd, sta, auth_transaction, challenge,				       fc & WLAN_FC_ISWEP);		sta->auth_alg = WLAN_AUTH_SHARED_KEY;		mlme_authenticate_indication(hapd, sta);		if (sta->challenge && auth_transaction == 1) {			resp_ies[0] = WLAN_EID_CHALLENGE;			resp_ies[1] = WLAN_AUTH_CHALLENGE_LEN;			os_memcpy(resp_ies + 2, sta->challenge,				  WLAN_AUTH_CHALLENGE_LEN);			resp_ies_len = 2 + WLAN_AUTH_CHALLENGE_LEN;		}		break;#ifdef CONFIG_IEEE80211R	case WLAN_AUTH_FT:		sta->auth_alg = WLAN_AUTH_FT;		if (sta->wpa_sm == NULL)			sta->wpa_sm = wpa_auth_sta_init(hapd->wpa_auth,							sta->addr);		if (sta->wpa_sm == NULL) {			wpa_printf(MSG_DEBUG, "FT: Failed to initialize WPA "				   "state machine");			resp = WLAN_STATUS_UNSPECIFIED_FAILURE;			goto fail;		}		wpa_ft_process_auth(sta->wpa_sm, mgmt->bssid,				    auth_transaction, mgmt->u.auth.variable,				    len - IEEE80211_HDRLEN -				    sizeof(mgmt->u.auth),				    handle_auth_ft_finish, hapd);		/* handle_auth_ft_finish() callback will complete auth. */		return;#endif /* CONFIG_IEEE80211R */	} fail:	send_auth_reply(hapd, mgmt->sa, mgmt->bssid, auth_alg,			auth_transaction + 1, resp, resp_ies, resp_ies_len);}
开发者ID:progloverfan,项目名称:mod-hostapd,代码行数:101,


示例21: hostapd_notif_assoc

//.........这里部分代码省略.........			sta->wpa_sm = wpa_auth_sta_init(hapd->wpa_auth,							sta->addr);		if (sta->wpa_sm == NULL) {			wpa_printf(MSG_ERROR, "Failed to initialize WPA state "				   "machine");			return -1;		}		res = wpa_validate_wpa_ie(hapd->wpa_auth, sta->wpa_sm,					  ie, ielen,					  elems.mdie, elems.mdie_len);		if (res != WPA_IE_OK) {			wpa_printf(MSG_DEBUG, "WPA/RSN information element "				   "rejected? (res %u)", res);			wpa_hexdump(MSG_DEBUG, "IE", ie, ielen);			if (res == WPA_INVALID_GROUP)				resp = WLAN_REASON_GROUP_CIPHER_NOT_VALID;			else if (res == WPA_INVALID_PAIRWISE)				resp = WLAN_REASON_PAIRWISE_CIPHER_NOT_VALID;			else if (res == WPA_INVALID_AKMP)				resp = WLAN_REASON_AKMP_NOT_VALID;#ifdef CONFIG_IEEE80211W			else if (res == WPA_MGMT_FRAME_PROTECTION_VIOLATION)				resp = WLAN_REASON_INVALID_IE;			else if (res == WPA_INVALID_MGMT_GROUP_CIPHER)				resp = WLAN_REASON_GROUP_CIPHER_NOT_VALID;#endif /* CONFIG_IEEE80211W */			else				resp = WLAN_REASON_INVALID_IE;			goto fail;		}#ifdef CONFIG_IEEE80211R		if (sta->auth_alg == WLAN_AUTH_FT) {			resp = wpa_ft_validate_reassoc(sta->wpa_sm, req_ies,						       req_ies_len);			if (resp != WLAN_STATUS_SUCCESS)				goto fail;		}#endif /* CONFIG_IEEE80211R */	} else if (hapd->conf->wps_state) {			struct wpabuf *wps;			wps = ieee802_11_vendor_ie_concat(ie, ielen,							  WPS_IE_VENDOR_TYPE);#ifdef CONFIG_WPS_STRICT		if (ie) {			if (wps && wps_validate_assoc_req(wps) < 0) {				resp = WLAN_REASON_INVALID_IE;				wpabuf_free(wps);				goto fail;			}		}#endif /* CONFIG_WPS_STRICT */		if (ie && ielen > 4 && ie[0] == 0xdd && ie[1] >= 4 &&		    os_memcmp(ie + 2, "/x00/x50/xf2/x04", 4) == 0) {			sta->flags |= WLAN_STA_WPS;			if (wps && wps_is_20(wps)) {				wpa_printf(MSG_DEBUG, "WPS: STA supports "					    "WPS 2.0");				sta->flags |= WLAN_STA_WPS2;			}		} else			sta->flags |= WLAN_STA_MAYBE_WPS;			wpabuf_free(wps);	}skip_wpa_check:#ifdef CONFIG_IEEE80211R	p = wpa_sm_write_assoc_resp_ies(sta->wpa_sm, buf, sizeof(buf),					sta->auth_alg, req_ies, req_ies_len);	len = p - buf;	hostapd_sta_assoc(hapd, addr, reassoc, 0, buf, len);#endif /* CONFIG_IEEE80211R */	new_assoc = (sta->flags & WLAN_STA_ASSOC) == 0;	sta->flags |= WLAN_STA_AUTH | WLAN_STA_ASSOC;	if (reassoc && (sta->auth_alg == WLAN_AUTH_FT))		wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC_FT);	else		wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC);	hostapd_new_assoc_sta(hapd, sta, !new_assoc);	ieee802_1x_notify_port_enabled(sta->eapol_sm, 1);#ifdef CONFIG_P2P	p2p_group_notif_assoc(hapd->p2p_group, sta->addr,			      req_ies, req_ies_len);#endif /* CONFIG_P2P */	return 0;fail:#ifdef CONFIG_IEEE80211R	hostapd_sta_assoc(hapd, addr, reassoc, resp, buf, len);#endif /* CONFIG_IEEE80211R */	hostapd_drv_sta_disassoc(hapd, sta->addr, resp);	ap_free_sta(hapd, sta);	return -1;}
开发者ID:springware,项目名称:92u10,代码行数:101,


示例22: test_driver_new_sta

static int test_driver_new_sta(struct test_driver_data *drv,			       struct test_driver_bss *bss, const u8 *addr,			       const u8 *ie, size_t ielen){	struct hostapd_data *hapd;	struct sta_info *sta;	int new_assoc, res;	hapd = test_driver_get_hapd(drv, bss);	if (hapd == NULL)		return -1;	hostapd_logger(hapd, addr, HOSTAPD_MODULE_IEEE80211,		HOSTAPD_LEVEL_INFO, "associated");	sta = ap_get_sta(hapd, addr);	if (sta) {		accounting_sta_stop(hapd, sta);	} else {		sta = ap_sta_add(hapd, addr);		if (sta == NULL)			return -1;	}	sta->flags &= ~(WLAN_STA_WPS | WLAN_STA_MAYBE_WPS);	if (hapd->conf->wpa) {		if (ie == NULL || ielen == 0) {			if (hapd->conf->wps_state) {				sta->flags |= WLAN_STA_WPS;				goto skip_wpa_check;			}			printf("test_driver: no IE from STA/n");			return -1;		}		if (hapd->conf->wps_state && ie[0] == 0xdd && ie[1] >= 4 &&		    os_memcmp(ie + 2, "/x00/x50/xf2/x04", 4) == 0) {			sta->flags |= WLAN_STA_WPS;			goto skip_wpa_check;		}		if (sta->wpa_sm == NULL)			sta->wpa_sm = wpa_auth_sta_init(hapd->wpa_auth,							sta->addr);		if (sta->wpa_sm == NULL) {			printf("test_driver: Failed to initialize WPA state "			       "machine/n");			return -1;		}		res = wpa_validate_wpa_ie(hapd->wpa_auth, sta->wpa_sm,					  ie, ielen, NULL, 0);		if (res != WPA_IE_OK) {			printf("WPA/RSN information element rejected? "			       "(res %u)/n", res);			wpa_hexdump(MSG_DEBUG, "IE", ie, ielen);			return -1;		}	}skip_wpa_check:	new_assoc = (sta->flags & WLAN_STA_ASSOC) == 0;	sta->flags |= WLAN_STA_AUTH | WLAN_STA_ASSOC;	wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC);	hostapd_new_assoc_sta(hapd, sta, !new_assoc);	ieee802_1x_notify_port_enabled(sta->eapol_sm, 1);	return 0;}
开发者ID:AhmadTux,项目名称:DragonFlyBSD,代码行数:70,


示例23: hostapd_notif_assoc

//.........这里部分代码省略.........            hostapd_sta_assoc(hapd, addr, reassoc, status, buf,                              p - buf);#endif /* CONFIG_IEEE80211R */            return 0;        }        if (wpa_auth_uses_mfp(sta->wpa_sm))            sta->flags |= WLAN_STA_MFP;        else            sta->flags &= ~WLAN_STA_MFP;#endif /* CONFIG_IEEE80211W */#ifdef CONFIG_IEEE80211R        if (sta->auth_alg == WLAN_AUTH_FT) {            status = wpa_ft_validate_reassoc(sta->wpa_sm, req_ies,                                             req_ies_len);            if (status != WLAN_STATUS_SUCCESS) {                if (status == WLAN_STATUS_INVALID_PMKID)                    reason = WLAN_REASON_INVALID_IE;                if (status == WLAN_STATUS_INVALID_MDIE)                    reason = WLAN_REASON_INVALID_IE;                if (status == WLAN_STATUS_INVALID_FTIE)                    reason = WLAN_REASON_INVALID_IE;                goto fail;            }        }#endif /* CONFIG_IEEE80211R */    } else if (hapd->conf->wps_state) {#ifdef CONFIG_WPS        struct wpabuf *wps;        if (req_ies)            wps = ieee802_11_vendor_ie_concat(req_ies, req_ies_len,                                              WPS_IE_VENDOR_TYPE);        else            wps = NULL;#ifdef CONFIG_WPS_STRICT        if (wps && wps_validate_assoc_req(wps) < 0) {            reason = WLAN_REASON_INVALID_IE;            status = WLAN_STATUS_INVALID_IE;            wpabuf_free(wps);            goto fail;        }#endif /* CONFIG_WPS_STRICT */        if (wps) {            sta->flags |= WLAN_STA_WPS;            if (wps_is_20(wps)) {                wpa_printf(MSG_DEBUG, "WPS: STA supports "                           "WPS 2.0");                sta->flags |= WLAN_STA_WPS2;            }        } else            sta->flags |= WLAN_STA_MAYBE_WPS;        wpabuf_free(wps);#endif /* CONFIG_WPS */    }#ifdef CONFIG_WPSskip_wpa_check:#endif /* CONFIG_WPS */#ifdef CONFIG_IEEE80211R    p = wpa_sm_write_assoc_resp_ies(sta->wpa_sm, buf, sizeof(buf),                                    sta->auth_alg, req_ies, req_ies_len);    hostapd_sta_assoc(hapd, addr, reassoc, status, buf, p - buf);#else /* CONFIG_IEEE80211R */    /* Keep compiler silent about unused variables */    if (status) {    }#endif /* CONFIG_IEEE80211R */    new_assoc = (sta->flags & WLAN_STA_ASSOC) == 0;    sta->flags |= WLAN_STA_AUTH | WLAN_STA_ASSOC;    if (reassoc && (sta->auth_alg == WLAN_AUTH_FT))        wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC_FT);    else        wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC);    hostapd_new_assoc_sta(hapd, sta, !new_assoc);    ieee802_1x_notify_port_enabled(sta->eapol_sm, 1);#ifdef CONFIG_P2P    if (req_ies) {        p2p_group_notif_assoc(hapd->p2p_group, sta->addr,                              req_ies, req_ies_len);    }#endif /* CONFIG_P2P */    return 0;fail:#ifdef CONFIG_IEEE80211R    hostapd_sta_assoc(hapd, addr, reassoc, status, buf, p - buf);#endif /* CONFIG_IEEE80211R */    hostapd_drv_sta_disassoc(hapd, sta->addr, reason);    ap_free_sta(hapd, sta);    return -1;}
开发者ID:Nomad280279,项目名称:vendor_intel_hardware_wlan_hostap_wcs,代码行数:101,


示例24: hostapd_notif_assoc

//.........这里部分代码省略.........	if (elems.wps_ie) {		ie = elems.wps_ie - 2;		ielen = elems.wps_ie_len + 2;		wpa_printf(MSG_DEBUG, "STA included WPS IE in (Re)AssocReq");	} else if (elems.rsn_ie) {		ie = elems.rsn_ie - 2;		ielen = elems.rsn_ie_len + 2;		wpa_printf(MSG_DEBUG, "STA included RSN IE in (Re)AssocReq");	} else if (elems.wpa_ie) {		ie = elems.wpa_ie - 2;		ielen = elems.wpa_ie_len + 2;		wpa_printf(MSG_DEBUG, "STA included WPA IE in (Re)AssocReq");	} else {		ie = NULL;		ielen = 0;		wpa_printf(MSG_DEBUG, "STA did not include WPS/RSN/WPA IE in "			   "(Re)AssocReq");	}	sta = ap_get_sta(hapd, addr);	if (sta) {		accounting_sta_stop(hapd, sta);	} else {		sta = ap_sta_add(hapd, addr);		if (sta == NULL)			return -1;	}	sta->flags &= ~(WLAN_STA_WPS | WLAN_STA_MAYBE_WPS);	if (hapd->conf->wpa) {		if (ie == NULL || ielen == 0) {			if (hapd->conf->wps_state) {				wpa_printf(MSG_DEBUG, "STA did not include "					   "WPA/RSN IE in (Re)Association "					   "Request - possible WPS use");				sta->flags |= WLAN_STA_MAYBE_WPS;				goto skip_wpa_check;			}			wpa_printf(MSG_DEBUG, "No WPA/RSN IE from STA");			return -1;		}		if (hapd->conf->wps_state && ie[0] == 0xdd && ie[1] >= 4 &&		    os_memcmp(ie + 2, "/x00/x50/xf2/x04", 4) == 0) {			sta->flags |= WLAN_STA_WPS;			goto skip_wpa_check;		}		if (sta->wpa_sm == NULL)			sta->wpa_sm = wpa_auth_sta_init(hapd->wpa_auth,							sta->addr);		if (sta->wpa_sm == NULL) {			wpa_printf(MSG_ERROR, "Failed to initialize WPA state "				   "machine");			return -1;		}		res = wpa_validate_wpa_ie(hapd->wpa_auth, sta->wpa_sm,					  ie, ielen, NULL, 0);		if (res != WPA_IE_OK) {			int resp;			wpa_printf(MSG_DEBUG, "WPA/RSN information element "				   "rejected? (res %u)", res);			wpa_hexdump(MSG_DEBUG, "IE", ie, ielen);			if (res == WPA_INVALID_GROUP)				resp = WLAN_REASON_GROUP_CIPHER_NOT_VALID;			else if (res == WPA_INVALID_PAIRWISE)				resp = WLAN_REASON_PAIRWISE_CIPHER_NOT_VALID;			else if (res == WPA_INVALID_AKMP)				resp = WLAN_REASON_AKMP_NOT_VALID;#ifdef CONFIG_IEEE80211W			else if (res == WPA_MGMT_FRAME_PROTECTION_VIOLATION)				resp = WLAN_REASON_INVALID_IE;			else if (res == WPA_INVALID_MGMT_GROUP_CIPHER)				resp = WLAN_REASON_GROUP_CIPHER_NOT_VALID;#endif /* CONFIG_IEEE80211W */			else				resp = WLAN_REASON_INVALID_IE;			hapd->drv.sta_disassoc(hapd, sta->addr, resp);			ap_free_sta(hapd, sta);			return -1;		}	} else if (hapd->conf->wps_state) {		if (ie && ielen > 4 && ie[0] == 0xdd && ie[1] >= 4 &&		    os_memcmp(ie + 2, "/x00/x50/xf2/x04", 4) == 0) {			sta->flags |= WLAN_STA_WPS;		} else			sta->flags |= WLAN_STA_MAYBE_WPS;	}skip_wpa_check:	new_assoc = (sta->flags & WLAN_STA_ASSOC) == 0;	sta->flags |= WLAN_STA_AUTH | WLAN_STA_ASSOC;	wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC);	hostapd_new_assoc_sta(hapd, sta, !new_assoc);	ieee802_1x_notify_port_enabled(sta->eapol_sm, 1);	return 0;}
开发者ID:2014-class,项目名称:freerouter,代码行数:101,


示例25: hostapd_notif_assoc

int hostapd_notif_assoc(struct hostapd_data *hapd, const u8 *addr,			const u8 *ie, size_t ielen){	struct sta_info *sta;	int new_assoc, res;	hostapd_logger(hapd, addr, HOSTAPD_MODULE_IEEE80211,		       HOSTAPD_LEVEL_INFO, "associated");	sta = ap_get_sta(hapd, addr);	if (sta) {		accounting_sta_stop(hapd, sta);	} else {		sta = ap_sta_add(hapd, addr);		if (sta == NULL)			return -1;	}	sta->flags &= ~(WLAN_STA_WPS | WLAN_STA_MAYBE_WPS);	if (hapd->conf->wpa) {		if (ie == NULL || ielen == 0) {			if (hapd->conf->wps_state) {				wpa_printf(MSG_DEBUG, "STA did not include "					   "WPA/RSN IE in (Re)Association "					   "Request - possible WPS use");				sta->flags |= WLAN_STA_MAYBE_WPS;				goto skip_wpa_check;			}			wpa_printf(MSG_DEBUG, "No WPA/RSN IE from STA");			return -1;		}		if (hapd->conf->wps_state && ie[0] == 0xdd && ie[1] >= 4 &&		    os_memcmp(ie + 2, "/x00/x50/xf2/x04", 4) == 0) {			sta->flags |= WLAN_STA_WPS;			goto skip_wpa_check;		}		if (sta->wpa_sm == NULL)			sta->wpa_sm = wpa_auth_sta_init(hapd->wpa_auth,							sta->addr);		if (sta->wpa_sm == NULL) {			wpa_printf(MSG_ERROR, "Failed to initialize WPA state "				   "machine");			return -1;		}		res = wpa_validate_wpa_ie(hapd->wpa_auth, sta->wpa_sm,					  ie, ielen, NULL, 0);		if (res != WPA_IE_OK) {			int resp;			wpa_printf(MSG_DEBUG, "WPA/RSN information element "				   "rejected? (res %u)", res);			wpa_hexdump(MSG_DEBUG, "IE", ie, ielen);			if (res == WPA_INVALID_GROUP)				resp = WLAN_REASON_GROUP_CIPHER_NOT_VALID;			else if (res == WPA_INVALID_PAIRWISE)				resp = WLAN_REASON_PAIRWISE_CIPHER_NOT_VALID;			else if (res == WPA_INVALID_AKMP)				resp = WLAN_REASON_AKMP_NOT_VALID;#ifdef CONFIG_IEEE80211W			else if (res == WPA_MGMT_FRAME_PROTECTION_VIOLATION)				resp = WLAN_REASON_INVALID_IE;			else if (res == WPA_INVALID_MGMT_GROUP_CIPHER)				resp = WLAN_REASON_GROUP_CIPHER_NOT_VALID;#endif /* CONFIG_IEEE80211W */			else				resp = WLAN_REASON_INVALID_IE;			hapd->drv.sta_disassoc(hapd, sta->addr, resp);			ap_free_sta(hapd, sta);			return -1;		}	} else if (hapd->conf->wps_state) {		if (ie && ielen > 4 && ie[0] == 0xdd && ie[1] >= 4 &&		    os_memcmp(ie + 2, "/x00/x50/xf2/x04", 4) == 0) {			sta->flags |= WLAN_STA_WPS;		} else			sta->flags |= WLAN_STA_MAYBE_WPS;	}skip_wpa_check:	new_assoc = (sta->flags & WLAN_STA_ASSOC) == 0;	sta->flags |= WLAN_STA_AUTH | WLAN_STA_ASSOC;	wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC);	hostapd_new_assoc_sta(hapd, sta, !new_assoc);	ieee802_1x_notify_port_enabled(sta->eapol_sm, 1);	return 0;}
开发者ID:fgoncalves,项目名称:Ralink-Driver-Hack,代码行数:90,


示例26: hostapd_notif_assoc

//.........这里部分代码省略.........			wpabuf_free(wps);			goto fail;		}#endif /* CONFIG_WPS_STRICT */		if (wps) {			sta->flags |= WLAN_STA_WPS;			if (wps_is_20(wps)) {				wpa_printf(MSG_DEBUG,					   "WPS: STA supports WPS 2.0");				sta->flags |= WLAN_STA_WPS2;			}		} else			sta->flags |= WLAN_STA_MAYBE_WPS;		wpabuf_free(wps);#endif /* CONFIG_WPS */#ifdef CONFIG_HS20	} else if (hapd->conf->osen) {		if (elems.osen == NULL) {			hostapd_logger(				hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,				HOSTAPD_LEVEL_INFO,				"No HS 2.0 OSEN element in association request");			return WLAN_STATUS_INVALID_IE;		}		wpa_printf(MSG_DEBUG, "HS 2.0: OSEN association");		if (sta->wpa_sm == NULL)			sta->wpa_sm = wpa_auth_sta_init(hapd->wpa_auth,							sta->addr, NULL);		if (sta->wpa_sm == NULL) {			wpa_printf(MSG_WARNING,				   "Failed to initialize WPA state machine");			return WLAN_STATUS_UNSPECIFIED_FAILURE;		}		if (wpa_validate_osen(hapd->wpa_auth, sta->wpa_sm,				      elems.osen - 2, elems.osen_len + 2) < 0)			return WLAN_STATUS_INVALID_IE;#endif /* CONFIG_HS20 */	}#ifdef CONFIG_MBO	if (hapd->conf->mbo_enabled && (hapd->conf->wpa & 2) &&	    elems.mbo && sta->cell_capa && !(sta->flags & WLAN_STA_MFP) &&	    hapd->conf->ieee80211w != NO_MGMT_FRAME_PROTECTION) {		wpa_printf(MSG_INFO,			   "MBO: Reject WPA2 association without PMF");		return WLAN_STATUS_UNSPECIFIED_FAILURE;	}#endif /* CONFIG_MBO */#ifdef CONFIG_WPSskip_wpa_check:#endif /* CONFIG_WPS */#ifdef CONFIG_IEEE80211R	p = wpa_sm_write_assoc_resp_ies(sta->wpa_sm, buf, sizeof(buf),					sta->auth_alg, req_ies, req_ies_len);	hostapd_sta_assoc(hapd, addr, reassoc, status, buf, p - buf);	if (sta->auth_alg == WLAN_AUTH_FT)		ap_sta_set_authorized(hapd, sta, 1);#else /* CONFIG_IEEE80211R */	/* Keep compiler silent about unused variables */	if (status) {	}#endif /* CONFIG_IEEE80211R */	new_assoc = (sta->flags & WLAN_STA_ASSOC) == 0;	sta->flags |= WLAN_STA_AUTH | WLAN_STA_ASSOC;	sta->flags &= ~WLAN_STA_WNM_SLEEP_MODE;	hostapd_set_sta_flags(hapd, sta);	if (reassoc && (sta->auth_alg == WLAN_AUTH_FT))		wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC_FT);	else		wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC);	hostapd_new_assoc_sta(hapd, sta, !new_assoc);	ieee802_1x_notify_port_enabled(sta->eapol_sm, 1);#ifdef CONFIG_P2P	if (req_ies) {		p2p_group_notif_assoc(hapd->p2p_group, sta->addr,				      req_ies, req_ies_len);	}#endif /* CONFIG_P2P */	return 0;fail:#ifdef CONFIG_IEEE80211R	hostapd_sta_assoc(hapd, addr, reassoc, status, buf, p - buf);#endif /* CONFIG_IEEE80211R */	hostapd_drv_sta_disassoc(hapd, sta->addr, reason);	ap_free_sta(hapd, sta);	return -1;}
开发者ID:cococorp,项目名称:hostap-upstream,代码行数:101,



注:本文中的wpa_auth_sm_event函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ wpa_config_write_reg_string函数代码示例
C++ wp函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。