int Domain_query_Process()
{

	int i;
	int Operation_Mode=0;
	int WLAN_Mode=0;
	unsigned char LAN_Mac[12];
	char cmdBuffer[100];
	int lan_dhcp=0;
	char lan_domain_name[	MAX_NAME_LEN]={0};
	unsigned char Confirm_Threshold=0;
	int Type=0;
	int Check_status=0;
	
	apmib_get( MIB_DOMAIN_NAME, (void *)lan_domain_name);
	
	if(Start_Domain_Query_Process==0 ||isFileExist("/var/system/start_init") || !lan_domain_name[0]){//during init procedure 
		//printf("web init return directly\n");
		return 0;
	}
	apmib_get( MIB_OP_MODE, (void *)&Operation_Mode);
	apmib_get( MIB_WLAN_MODE, (void *)&WLAN_Mode);
	apmib_get( MIB_DHCP, (void *)&lan_dhcp);
	if(Operation_Mode==1 && ((WLAN_Mode == 1 && lan_dhcp==15)|| (WLAN_Mode == 0 && lan_dhcp==15))){ //in bridge mode and wlan ap/client mode 
		if(CurrentTime < WAIT_TIME){ //it time to check wlan connected or not
			/*if wlan is connected will not start dhcp server*/
			Check_status = Check_Wlan_isConnected(WLAN_Mode);
			if( Check_status==1 && DHCPD_State==1){ //wlan connetced
				//printf("wlan connected within WAIT_TIME and start dhcpc\n");
				system("killall -9 udhcpd 2> /dev/null");
				system("killall -9 udhcpc 2> /dev/null");
				system("echo 1 > /proc/pocket/en_filter"); //start to filter dhcp discover in bridge 
				if(getLan_MacAddress(LAN_Mac)){
					sprintf(cmdBuffer, "echo \"00000000 %s 0\" > /proc/pocket/filter_conf", LAN_Mac);
					system(cmdBuffer);
				}else{
					system("echo \"00000000 000000000000 0\" > /proc/pocket/filter_conf");
				}
				system("rm -f /var/run/udhcpd.pid 2> /dev/null");
				system("rm -f /etc/udhcpc/udhcpc-br0.pid 2> /dev/null");
				
				#if defined(LOGDEBUG_ENABLED)
				if(WLAN_Mode == 1){
					syslog(LOG_INFO, "klogd: DNQP: Connected within WAIT_TIME, Start DHCP Client\n");
					printf("DNQP: Connected within WAIT_TIME, Start DHCP Client\n");
				}
				#endif		
				set_lan_dhcpc("br0");
				DHCPC_State=2; // start DHCP client
				DHCPD_State=0;

				WLAN_State=1; 
				if(WLAN_Mode == 0){
				#if defined(LOGDEBUG_ENABLED)
						syslog(LOG_INFO, "klogd: DNQP: AP mode, within WAIT_TIME, Start DHCP Client, shutdown wlan first\n");
						printf("DNQP: AP mode, within WAIT_TIME, Start DHCP Client, shutdown wlan first\n");
				#endif	
					system("ifconfig wlan0 down");
					#if defined (CONFIG_RTL_92D_SUPPORT)
					system("ifconfig wlan1 down");
					#endif
					Kill_Wlan_Applications();
				}
				wlan_iface_state=1;
				
			}else if(Check_status ==0 && DHCPD_State==1){
	
				if(isFileExist(DHCPD_PID_FILE)==0){
		
					system("killall -9 udhcpd 2> /dev/null");
					system("rm -f /var/run/udhcpd.pid 2> /dev/null");
					system("echo 1 > /proc/pocket/en_filter"); //start to filter dhcp discover in bridge 
					if(getLan_MacAddress(LAN_Mac)){
						sprintf(cmdBuffer, "echo \"00000000 %s 2\" > /proc/pocket/filter_conf", LAN_Mac);
						system(cmdBuffer);
					}else{
						system("echo \"00000000 000000000000 2\" > /proc/pocket/filter_conf");
					}
					#if defined(LOGDEBUG_ENABLED)
					if(WLAN_Mode == 1){
						syslog(LOG_INFO, "klogd: DNQP: Disconnected within WAIT_TIME, Start DHCP Server\n");
						printf("DNQP: Disconnected within WAIT_TIME, Start DHCP Server\n");
					}
					#endif	
					set_lan_dhcpd("br0", 2);
					
					for(i=0;i<3;i++){
						 if(isFileExist(DHCPD_PID_FILE)){
						 	break;
						 }else{
						 	sleep(1);
						}
					}
					if(WLAN_Mode == 1){
					system("ifconfig eth0 down");
					//system("ifconfig eth1 down");
					sleep(5);
					system("ifconfig eth0 up");
					//system("ifconfig eth1 up");
					}
					else if(WLAN_Mode == 0)
					{
						#if defined(LOGDEBUG_ENABLED)
							syslog(LOG_INFO, "klogd: DNQP: AP mode, within WAIT_TIME, Start DHCP Server, shutdown wlan first\n");
							printf("DNQP: AP mode, within WAIT_TIME, Start DHCP Server, shutdown wlan first\n");
						#endif	
						system("ifconfig wlan0 down");
						#if defined (CONFIG_RTL_92D_SUPPORT)
						system("ifconfig wlan1 down");
						#endif
						Kill_Wlan_Applications();
					}
					start_dnrd();
					wlan_iface_state=1;
					system("iptables -F INPUT");
					WLAN_State=0;					
				}
			}
	
		}else if(CurrentTime >= WAIT_TIME){ //it's time to check wlan connect or not
			   Check_status = Check_Wlan_isConnected(WLAN_Mode);
			if(Check_status ==0){ //wlan/eth1  is not connetced

				//disconnect state
				if(isFileExist(DHCPD_PID_FILE)==0){ //dhcp server is not running

					if(WLAN_Mode==0)
						Confirm_Threshold=0;
					if(WLAN_Mode==1)
						Confirm_Threshold=20;
					if(WLAN_State==1 && Confirm_Time < Confirm_Threshold){
						Confirm_Time++;
						goto ToNext;
					}
					Confirm_Time=0;
					if(isFileExist("/etc/udhcpc/udhcpc-br0.pid")){
						system("killall -9 udhcpc 2> /dev/null");
						system("rm -f /etc/udhcpc/udhcpc-br0.pid 2> /dev/null");	
					}
					sleep(1);
					system("killall -9 udhcpd 2> /dev/null");
					system("rm -f /var/run/udhcpd.pid 2> /dev/null");
					#if defined(LOGDEBUG_ENABLED)
					if(WLAN_Mode == 1){
						syslog(LOG_INFO, "klogd: DNQP: Disconnected after WAIT_TIME, Start DHCP Server\n");
						printf("DNQP: Disconnected after WAIT_TIME, Start DHCP Server\n");
					}
					#endif
					set_lan_dhcpd("br0", 2);
					
					for(i=0;i<3;i++){
						 if(isFileExist(DHCPD_PID_FILE)){
						 	break;
						 }else{
						 	sleep(1);
						}
					}

					system("echo 1 > /proc/pocket/en_filter"); //start to filter dhcp discover in bridge 
					if(getLan_MacAddress(LAN_Mac)){
						sprintf(cmdBuffer, "echo \"00000000 %s 2\" > /proc/pocket/filter_conf", LAN_Mac);
						system(cmdBuffer);
					}else{
						system("echo \"00000000 000000000000 2\" > /proc/pocket/filter_conf");
					}
					if(WLAN_Mode == 1){
					system("ifconfig eth0 down");
					//system("ifconfig eth1 down");
					sleep(5);
					system("ifconfig eth0 up");
					//system("ifconfig eth1 up");
					}
					else if(WLAN_Mode == 0)
					{
						#if defined(LOGDEBUG_ENABLED)
							syslog(LOG_INFO, "klogd: DNQP: AP mode, after WAIT_TIME, Start DHCP Server, shutdown wlan first\n");
							printf("DNQP: AP mode, after WAIT_TIME, Start DHCP Server, shutdown wlan first\n");
						#endif
						system("ifconfig wlan0 down");
						#if defined (CONFIG_RTL_92D_SUPPORT)
						system("ifconfig wlan1 down");
						#endif
						Kill_Wlan_Applications();
					}
					start_dnrd();
					wlan_iface_state=1;	
					system("iptables -F INPUT");
					if(WLAN_Mode == 0){
					WLAN_State=0;					
					}					
				}else{
					//dhcp server is running, and not connected
						if(isFileExist("/etc/udhcpc/udhcpc-br0.pid")){
							system("killall -9 udhcpc 2> /dev/null");
							system("rm -f /etc/udhcpc/udhcpc-br0.pid 2> /dev/null");							
							if(getLan_MacAddress(LAN_Mac)){
								sprintf(cmdBuffer, "echo \"00000000 %s 2\" > /proc/pocket/filter_conf", LAN_Mac);
								system(cmdBuffer);
							}else{
								system("echo \"00000000 000000000000 2\" > /proc/pocket/filter_conf");
							}
						}else{
							Type = getFilter_Type();
							if(Type==0){
								#if defined(LOGDEBUG_ENABLED)
									syslog(LOG_INFO, "klogd: DNQP: Disconnected after WAIT_TIME, Filter state is 0, reset to 2 in DHCP server state\n");
									printf("DNQP: AP mode, Disconnected after WAIT_TIME, Filter state is 0, reset to 2 in DHCP server state\n");
								#endif
								system("echo \"00000000 000000000000 2\" > /proc/pocket/filter_conf");
							}else if(Type==2 && WLAN_State==1){
								Renew_State++;
							}
							if(WLAN_Mode == 0 && Renew_State >= 1 && WLAN_State==1){
									WLAN_State=0;
									Renew_State=0;
								#if defined(LOGDEBUG_ENABLED)
									syslog(LOG_INFO, "klogd: DNQP: AP mode, Disconnected after WAIT_TIME, LastState is Connected, clean WLAN_State to cause start DHCP client when Connect again\n");
									printf("DNQP: AP mode, Disconnected after WAIT_TIME, LastState is Connected, clean WLAN_State to cause start DHCP client when Connect again\n");
								#endif
							}							
						}
				}
			}else{
                               //connected state
				if(WLAN_State ==0){
					system("killall -9 udhcpd 2> /dev/null");
					system("killall -9 udhcpc 2> /dev/null");
					system("rm -f /var/run/udhcpd.pid 2> /dev/null");
					system("rm -f /etc/udhcpc/udhcpc-br0.pid 2> /dev/null");
					system("echo 1 > /proc/pocket/en_filter"); //start to filter dhcp discover in bridge 
					if(getLan_MacAddress(LAN_Mac)){
						sprintf(cmdBuffer, "echo \"00000000 %s 0\" > /proc/pocket/filter_conf", LAN_Mac);
						system(cmdBuffer);
					}else{
						system("echo \"00000000 000000000000 0\" > /proc/pocket/filter_conf");
					}
					
					#if defined(LOGDEBUG_ENABLED)
					if(WLAN_Mode == 1){
						syslog(LOG_INFO, "klogd: DNQP: Connected after WAIT_TIME, Start DHCP Client\n");
						printf("DNQP: Connected after WAIT_TIME, Start DHCP Client\n");
					}
					#endif	
					set_lan_dhcpc("br0");
					DHCPC_State=2; // start DHCP client					
					
					
					system("iptables -A INPUT -p icmp --icmp-type echo-request -i br0 -j DROP");
//					sleep(1);
					WLAN_State=1;
					Restore_IptablesRule=1;
					check_count=0;
					if(WLAN_Mode == 0){
						#if defined(LOGDEBUG_ENABLED)
							syslog(LOG_INFO, "klogd: DNQP: AP mode, after WAIT_TIME, Start DHCP Client, shutdown wlan first\n");
							printf("DNQP: AP mode, after WAIT_TIME, Start DHCP Client, shutdown wlan first\n");
						#endif
						system("ifconfig wlan0 down");
						#if defined (CONFIG_RTL_92D_SUPPORT)
						system("ifconfig wlan1 down");
						#endif

						Kill_Wlan_Applications();
					}
						wlan_iface_state=1;
				}else{
					if(Restore_IptablesRule==1){
						if(isFileExist(DHCPD_PID_FILE)){
							unlink(DHCPD_PID_FILE);
						}
						if(check_count > 5){
							system("iptables -F INPUT");
							Restore_IptablesRule=0;
						}else{
							check_count++;
						}
					}
					
					if(getFilter_Type()==0){
						if(Confirm_DHCP_Time >= DHCPC_WAIT_TIME && (DHCPC_State==1 || DHCPC_State==2)){
							system("killall -9 udhcpd 2> /dev/null");
							system("killall -9 udhcpc 2> /dev/null");
							sleep(1);
							system("rm -f /var/run/udhcpd.pid 2> /dev/null");
							system("rm -f /etc/udhcpc/udhcpc-br0.pid 2> /dev/null");
							
							
						#if defined(LOGDEBUG_ENABLED)
						if(WLAN_Mode == 1){
							syslog(LOG_INFO, "klogd: DNQP: Connected after WAIT_TIME,  DHCP Client start, and CanNOT get ip after 20 seconds, Start DHCP Server\n");
							printf("DNQP: Connected after WAIT_TIME,  DHCP Client start, and CanNOT get ip after 20 seconds, Start DHCP Server\n");
						}
						#endif	
							
							set_lan_dhcpd("br0", 2);
					
							for(i=0;i<3;i++){
							 if(isFileExist(DHCPD_PID_FILE)){
						 		break;
							 }else{
						 		sleep(1);
								}
							}
							system("echo 1 > /proc/pocket/en_filter"); //start to filter dhcp discover in bridge 
							if(getLan_MacAddress(LAN_Mac)){
							sprintf(cmdBuffer, "echo \"00000000 %s 2\" > /proc/pocket/filter_conf", LAN_Mac);
							system(cmdBuffer);
							}else{
								system("echo \"00000000 000000000000 2\" > /proc/pocket/filter_conf");
							}
							if(WLAN_Mode == 1){
							system("ifconfig eth0 down");
							//system("ifconfig eth1 down");
							sleep(5);
							system("ifconfig eth0 up");
							//system("ifconfig eth1 up");
							}
							else if(WLAN_Mode == 0)
							{
						#if defined(LOGDEBUG_ENABLED)
							syslog(LOG_INFO, "klogd: DNQP: AP mode, Connected after WAIT_TIME,  DHCP Client start, and CanNOT get ip after 20 seconds, Start DHCP Server, shutdown wlan first\n");
							printf("DNQP: AP mode, Connected after WAIT_TIME,  DHCP Client start, and CanNOT get ip after 20 seconds, Start DHCP Server, shutdown wlan first\n");
						#endif	
								system("ifconfig wlan0 down");
								#if defined (CONFIG_RTL_92D_SUPPORT)
								system("ifconfig wlan1 down");
								#endif

								Kill_Wlan_Applications();
							}
							start_dnrd();
							wlan_iface_state=1;	
							system("iptables -F INPUT");
							if(WLAN_State==0)
								WLAN_State=1;
							DHCPC_State=0;
						}else
							Confirm_DHCP_Time++;
					}else{
						Confirm_DHCP_Time=0;
						if (DHCPC_State == 2) {
							if(WLAN_Mode == 1){
							system("ifconfig eth0 down");
							//system("ifconfig eth1 down");
							sleep(5);
							system("ifconfig eth0 up");
							//system("ifconfig eth1 up");
							}
							
							if(WLAN_Mode == 0){
								system("ifconfig wlan0 down");
								#if defined (CONFIG_RTL_92D_SUPPORT)
								system("ifconfig wlan1 down");
								#endif
								Kill_Wlan_Applications();
							}
							wlan_iface_state=1;
							system("iptables -F INPUT");		
							
						}						
						DHCPC_State=1;
					}
						
				}
				
				if(WLAN_Mode ==1){
					if(WLAN_State==1 && (Confirm_Time >= 3 && Confirm_Time < 20) &&getFilter_Type()==1){
						//printf("client ever disconnect for 3~20 seconds, we should update our ip address\n");
						#if defined(LOGDEBUG_ENABLED)
							syslog(LOG_INFO, "klogd: DNQP: Client mode, client ever disconnect for 3~20 seconds, we should update our ip address\n");
							printf("DNQP: Client mode, client ever disconnect for 3~20 seconds, we should update our ip address\n");
						#endif
						WLAN_State=0;
						Confirm_Time=0;
					}
				}
			}
		}
ToNext:		
		if(CurrentTime > WAIT_TIME+5)
			CurrentTime=WAIT_TIME;
		else
			CurrentTime++;
			
			if(wlan_iface_state==1){
				Type = getFilter_Type();
				if(Type==2 ||Type==1 ){ //dhcp server state, we wait 8 seconds, type=2:server state, type=1:dhcp client and got ip address
				confirm_wlan_iface_state++;
				if(confirm_wlan_iface_state >=8){
					if(WLAN_Mode == 0){
						#if defined(LOGDEBUG_ENABLED)
							if(Type==2){
								syslog(LOG_INFO, "klogd: DNQP: AP mode, Up wlan interface when dhcp server started\n");
								printf("DNQP: AP mode, Up wlan interface when dhcp server started\n");
							}else if (Type==1){
								syslog(LOG_INFO, "klogd: DNQP: AP mode, Up wlan interface when dhcp client got ip\n");
								printf("DNQP: AP mode, Up wlan interface when dhcp client got ip\n");
							}
						#endif
						system("ifconfig wlan0 up");
						#if defined (CONFIG_RTL_92D_SUPPORT)
						if(isBandModeBoth())
						{
							system("ifconfig wlan1 up");
						}
						#endif

							sleep(1);
						Start_Wlan_Applications();
					}
						wlan_iface_state=0;
						confirm_wlan_iface_state=0;
				}
			}
			}
			
		#if 0
			if(WLAN_State==1 && check_ssid() && CurrentTime >= WAIT_TIME){
				WLAN_State=0;//restart all procedure
				system("iptables -F INPUT");//to avoid add iptables rule duplicate
			}
		#endif
	}else{
		system("echo 0 > /proc/pocket/en_filter");
	}

	return 0;
}
Beispiel #2
0
static u16 check_assoc_ies(struct hostapd_data *hapd, struct sta_info *sta,
			   const u8 *ies, size_t ies_len, int reassoc)
{
	struct ieee802_11_elems elems;
	u16 resp;
	const u8 *wpa_ie;
	size_t wpa_ie_len;

	if (ieee802_11_parse_elems(ies, ies_len, &elems, 1) == ParseFailed) {
		hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
			       HOSTAPD_LEVEL_INFO, "Station sent an invalid "
			       "association request");
		return WLAN_STATUS_UNSPECIFIED_FAILURE;
	}

	resp = check_ssid(hapd, sta, elems.ssid, elems.ssid_len);
	if (resp != WLAN_STATUS_SUCCESS)
		return resp;
	resp = check_wmm(hapd, sta, elems.wmm, elems.wmm_len);
	if (resp != WLAN_STATUS_SUCCESS)
		return resp;
	resp = copy_supp_rates(hapd, sta, &elems);
	if (resp != WLAN_STATUS_SUCCESS)
		return resp;
#ifdef CONFIG_IEEE80211N
	resp = copy_sta_ht_capab(sta, elems.ht_capabilities,
				 elems.ht_capabilities_len);
	if (resp != WLAN_STATUS_SUCCESS)
		return resp;
#endif /* CONFIG_IEEE80211N */

	if ((hapd->conf->wpa & WPA_PROTO_RSN) && elems.rsn_ie) {
		wpa_ie = elems.rsn_ie;
		wpa_ie_len = elems.rsn_ie_len;
	} else if ((hapd->conf->wpa & WPA_PROTO_WPA) &&
		   elems.wpa_ie) {
		wpa_ie = elems.wpa_ie;
		wpa_ie_len = elems.wpa_ie_len;
	} else {
		wpa_ie = NULL;
		wpa_ie_len = 0;
	}

#ifdef CONFIG_WPS
	sta->flags &= ~(WLAN_STA_WPS | WLAN_STA_MAYBE_WPS);
	if (hapd->conf->wps_state && elems.wps_ie) {
		wpa_printf(MSG_DEBUG, "STA included WPS IE in (Re)Association "
			   "Request - assume WPS is used");
		sta->flags |= WLAN_STA_WPS;
		wpabuf_free(sta->wps_ie);
		sta->wps_ie = ieee802_11_vendor_ie_concat(ies, ies_len,
							  WPS_IE_VENDOR_TYPE);
		wpa_ie = NULL;
		wpa_ie_len = 0;
	} else if (hapd->conf->wps_state && wpa_ie == NULL) {
		wpa_printf(MSG_DEBUG, "STA did not include WPA/RSN IE in "
			   "(Re)Association Request - possible WPS use");
		sta->flags |= WLAN_STA_MAYBE_WPS;
	} else
#endif /* CONFIG_WPS */
	if (hapd->conf->wpa && wpa_ie == NULL) {
		hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
			       HOSTAPD_LEVEL_INFO,
			       "No WPA/RSN IE in association request");
		return WLAN_STATUS_INVALID_IE;
	}

	if (hapd->conf->wpa && wpa_ie) {
		int res;
		wpa_ie -= 2;
		wpa_ie_len += 2;
		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_WARNING, "Failed to initialize WPA "
				   "state machine");
			return WLAN_STATUS_UNSPECIFIED_FAILURE;
		}
		res = wpa_validate_wpa_ie(hapd->wpa_auth, sta->wpa_sm,
					  wpa_ie, wpa_ie_len,
					  elems.mdie, elems.mdie_len);
		if (res == WPA_INVALID_GROUP)
			resp = WLAN_STATUS_GROUP_CIPHER_NOT_VALID;
		else if (res == WPA_INVALID_PAIRWISE)
			resp = WLAN_STATUS_PAIRWISE_CIPHER_NOT_VALID;
		else if (res == WPA_INVALID_AKMP)
			resp = WLAN_STATUS_AKMP_NOT_VALID;
		else if (res == WPA_ALLOC_FAIL)
			resp = WLAN_STATUS_UNSPECIFIED_FAILURE;
#ifdef CONFIG_IEEE80211W
		else if (res == WPA_MGMT_FRAME_PROTECTION_VIOLATION)
			resp = WLAN_STATUS_ROBUST_MGMT_FRAME_POLICY_VIOLATION;
		else if (res == WPA_INVALID_MGMT_GROUP_CIPHER)
			resp = WLAN_STATUS_ROBUST_MGMT_FRAME_POLICY_VIOLATION;
#endif /* CONFIG_IEEE80211W */
		else if (res == WPA_INVALID_MDIE)
			resp = WLAN_STATUS_INVALID_MDIE;
		else if (res != WPA_IE_OK)
			resp = WLAN_STATUS_INVALID_IE;
		if (resp != WLAN_STATUS_SUCCESS)
			return resp;
#ifdef CONFIG_IEEE80211W
		if ((sta->flags & WLAN_STA_MFP) && !sta->sa_query_timed_out &&
		    sta->sa_query_count > 0)
			ap_check_sa_query_timeout(hapd, sta);
		if ((sta->flags & WLAN_STA_MFP) && !sta->sa_query_timed_out &&
		    (!reassoc || sta->auth_alg != WLAN_AUTH_FT)) {
			/*
			 * STA has already been associated with MFP and SA
			 * Query timeout has not been reached. Reject the
			 * association attempt temporarily and start SA Query,
			 * if one is not pending.
			 */

			if (sta->sa_query_count == 0)
				ap_sta_start_sa_query(hapd, sta);

			return WLAN_STATUS_ASSOC_REJECTED_TEMPORARILY;
		}

		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) {
			if (!reassoc) {
				wpa_printf(MSG_DEBUG, "FT: " MACSTR " tried "
					   "to use association (not "
					   "re-association) with FT auth_alg",
					   MAC2STR(sta->addr));
				return WLAN_STATUS_UNSPECIFIED_FAILURE;
			}

			resp = wpa_ft_validate_reassoc(sta->wpa_sm, ies,
						       ies_len);
			if (resp != WLAN_STATUS_SUCCESS)
				return resp;
		}
#endif /* CONFIG_IEEE80211R */

#ifdef CONFIG_IEEE80211N
		if ((sta->flags & WLAN_STA_HT) &&
		    wpa_auth_get_pairwise(sta->wpa_sm) == WPA_CIPHER_TKIP) {
			hostapd_logger(hapd, sta->addr,
				       HOSTAPD_MODULE_IEEE80211,
				       HOSTAPD_LEVEL_INFO,
				       "Station tried to use TKIP with HT "
				       "association");
			return WLAN_STATUS_CIPHER_REJECTED_PER_POLICY;
		}
#endif /* CONFIG_IEEE80211N */
	} else
		wpa_auth_sta_no_wpa(sta->wpa_sm);

	return WLAN_STATUS_SUCCESS;
}