?? wt_mac.c
字號:
for( i = 0; i < Adapter->Ndis80211Parameter.pWlanScanDb->NumberOfItems; i++ ) { if( WtWlan_is_mac_address_equal( hdr->a3.a3, Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.MacAddress)) break;//bssid ==掃描到的bssid } if ( i == Adapter->Ndis80211Parameter.pWlanScanDb->NumberOfItems ) { if( Adapter->Ndis80211Parameter.pWlanScanDb->NumberOfItems < Adapter->NdisScanDbNUM ) { Adapter->Ndis80211Parameter.pWlanScanDb->NumberOfItems++; memset( &Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i], 0, sizeof( WTWLAN_BSSID_DESC ) ); } else { i--; } }// common update WtWlan_copy_mac_address( Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.MacAddress, hdr->a3.a3); Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.Rssi = WtWlanGetRSSIFromPower( pWlanRxBuf->RXHwBuf.pHwRxBuf->RxStatus.RecvPower ); Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.NetworkTypeInUse = Ndis802_11DS; Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.Configuration.Length = sizeof(NDIS_802_11_CONFIGURATION); Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.Configuration.FHConfig.Length= sizeof(NDIS_802_11_CONFIGURATION_FH); if( type == WLAN_BEACON ) { frmbeacon = &pWlanRxBuf->ParseData.a.beacon; //fixed if( frmbeacon->ts ) { //NdisMoveMemory(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_fixed.Timestamp, frmbeacon->ts, 8); memmove(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_fixed.Timestamp, frmbeacon->ts, 8); } if( frmbeacon->bcn_int ) { //NdisMoveMemory(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_fixed.BeaconInterval, frmbeacon->bcn_int, 2); memmove(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_fixed.BeaconInterval, frmbeacon->bcn_int, 2); Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.Configuration.BeaconPeriod =*( frmbeacon->bcn_int ); } if( frmbeacon->cap_info ) { //NdisMoveMemory(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_fixed.Capabilities, frmbeacon->cap_info, 2); memmove(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_fixed.Capabilities, frmbeacon->cap_info, 2); Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.Privacy = WLAN_GET_MGMT_CAP_INFO_PRIVACY( *(frmbeacon->cap_info) ); if( ( WLAN_GET_MGMT_CAP_INFO_ESS( *(frmbeacon->cap_info) ) == TRUE ) && ( WLAN_GET_MGMT_CAP_INFO_IBSS( *(frmbeacon->cap_info) ) == FALSE ) ) { Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.InfrastructureMode = Ndis802_11Infrastructure; } else if( ( WLAN_GET_MGMT_CAP_INFO_ESS( *(frmbeacon->cap_info) ) == FALSE ) && ( WLAN_GET_MGMT_CAP_INFO_IBSS( *(frmbeacon->cap_info) ) == TRUE ) ) { Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.InfrastructureMode = Ndis802_11IBSS; } else { Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.InfrastructureMode = Ndis802_11AutoUnknown; } }//for ap conceal ssid,if not open if( frmbeacon->ssid ) { if(frmbeacon->ssid->len !=0) { Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.Ssid.SsidLength = frmbeacon->ssid->len; //NdisMoveMemory(Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.Ssid.Ssid, frmbeacon->ssid->ssid, NDIS_802_11_LENGTH_SSID); memmove(Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.Ssid.Ssid, frmbeacon->ssid->ssid, NDIS_802_11_LENGTH_SSID); //NdisMoveMemory(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_ssid, frmbeacon->ssid, sizeof(ssid_t) ); memmove(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_ssid, frmbeacon->ssid, sizeof(ssid_t) ); } } if( frmbeacon->ibss_parms ) { Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.Configuration.ATIMWindow = frmbeacon->ibss_parms->atim_win; //NdisMoveMemory(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_ibss_parms, frmbeacon->ibss_parms, sizeof( wlan_ie_ibss_parms_t ) ); memmove(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_ibss_parms, frmbeacon->ibss_parms, sizeof( wlan_ie_ibss_parms_t ) ); } if( frmbeacon->ds_parms ) { Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.Configuration.DSConfig = frmbeacon->ds_parms->curr_ch; //NdisMoveMemory(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_ds, frmbeacon->ds_parms, sizeof( wlan_ie_ds_parms_t ) ); memmove(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_ds, frmbeacon->ds_parms, sizeof( wlan_ie_ds_parms_t ) ); } if( frmbeacon->fh_parms ) { Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.Configuration.FHConfig.HopPattern= frmbeacon->fh_parms->hoppattern; Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.Configuration.FHConfig.HopSet= frmbeacon->fh_parms->hopset; Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.Configuration.FHConfig.DwellTime= frmbeacon->fh_parms->dwell; //NdisMoveMemory(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_fhps, frmbeacon->fh_parms, sizeof( wlan_ie_fh_parms_t ) ); memmove(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_fhps, frmbeacon->fh_parms, sizeof( wlan_ie_fh_parms_t ) ); } if( frmbeacon->supp_rates ) { if( ( frmbeacon->supp_rates->len > 0) &&( frmbeacon->supp_rates->len <= 8 ) ) { { Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.SupportedRates[j] = frmbeacon->supp_rates->rates[j]; } } //NdisMoveMemory(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_rates, //frmbeacon->supp_rates, sizeof( rates_t ) ); memmove(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_rates, frmbeacon->supp_rates, sizeof( rates_t ) ); if( frmbeacon->ext_rates ) { int k = 0; while( ( j < NDIS_802_11_LENGTH_RATES_EX ) && ( k < frmbeacon->ext_rates->len)) { Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.SupportedRates[j] = frmbeacon->ext_rates->extrates[k]; j++; k++; } //NdisMoveMemory(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_extendrates, frmbeacon->ext_rates, sizeof( wlan_extend_rates_t ) ); memmove(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_extendrates, frmbeacon->ext_rates, sizeof( wlan_extend_rates_t ) ); } } if( frmbeacon->tim ) { //NdisMoveMemory(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_tim, frmbeacon->tim, sizeof( tim_t ) ); memmove(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_tim, frmbeacon->tim, sizeof( tim_t ) ); } if( frmbeacon->contry_parms ) { //NdisMoveMemory(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_country, frmbeacon->contry_parms, sizeof( tim_t ) ); memmove(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_country, frmbeacon->contry_parms, sizeof( tim_t ) ); } if( frmbeacon->fh_pattern ) { memmove( &Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_fhparms, frmbeacon->fh_pattern, sizeof( wlan_fhparms_t ) ); } if( frmbeacon->fh_patterntable ) { memmove( &Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_fhpatterntable, frmbeacon->fh_patterntable, sizeof( wlan_fhpatterntable_t ) ); } if( frmbeacon->powerconstraint ) { memmove( &Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_powerconstraint, frmbeacon->powerconstraint, sizeof( wlan_powerconstraint_t ) ); } if( frmbeacon->channelswa ) { memmove( &Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_channelswa, frmbeacon->channelswa, sizeof( wlan_channelswa_t ) ); } if( frmbeacon->quiet_parms ) { memmove( &Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_quiet, frmbeacon->quiet_parms, sizeof( wlan_quiet_t ) ); } if( frmbeacon->ibbss_dfs ) { memmove( &Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_ibssdfs, frmbeacon->ibbss_dfs, sizeof( wlan_ibssdfs_t ) ); } if( frmbeacon->tpc_report ) { memmove( &Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_tpcreport, frmbeacon->tpc_report, sizeof( wlan_tpcreport_t ) ); } if( frmbeacon->erp_parms ) { memmove( &Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_erp, frmbeacon->erp_parms, sizeof( wlan_erp_t ) ); } //added by hk 2005.4.21 #if 0 if( frmbeacon->rsn ) { memmove( &Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_rsn, frmbeacon->rsn, sizeof( wlan_rsn_t ) ); } #endif } else { frmprobresp = &pWlanRxBuf->ParseData.a.proberesp; //fixed if( frmprobresp->ts ) { memmove(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_fixed.Timestamp, frmprobresp->ts, 8); } if( frmprobresp->bcn_int ) { memmove(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_fixed.BeaconInterval, frmprobresp->bcn_int, 2); Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.Configuration.BeaconPeriod =*( frmprobresp->bcn_int ); } if( frmprobresp->cap_info ) { memmove(&Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_fixed.Capabilities, frmprobresp->cap_info, 2); Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.Privacy = WLAN_GET_MGMT_CAP_INFO_PRIVACY( *(frmprobresp->cap_info) ); if( ( WLAN_GET_MGMT_CAP_INFO_ESS( *(frmprobresp->cap_info) ) == TRUE ) && ( WLAN_GET_MGMT_CAP_INFO_IBSS( *(frmprobresp->cap_info) ) == FALSE ) ) { Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.InfrastructureMode = Ndis802_11Infrastructure; } else if( ( WLAN_GET_MGMT_CAP_INFO_ESS( *(frmprobresp->cap_info) ) == FALSE ) && ( WLAN_GET_MGMT_CAP_INFO_IBSS( *(frmprobresp->cap_info) ) == TRUE ) ) { Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.InfrastructureMode = Ndis802_11IBSS; } else { Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.InfrastructureMode = Ndis802_11AutoUnknown; } } if( frmprobresp->ssid ) { Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.Ssid.SsidLength = frmprobresp->ssid->len; memmove( Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.Ssid.Ssid, frmprobresp->ssid->ssid, NDIS_802_11_LENGTH_SSID); memmove( &Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_ssid, frmprobresp->ssid, sizeof(ssid_t) ); } if( frmprobresp->ibss_parms ) { Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.Configuration.ATIMWindow = frmprobresp->ibss_parms->atim_win; memmove( &Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_ibss_parms, frmprobresp->ibss_parms, sizeof( wlan_ie_ibss_parms_t ) ); } if( frmprobresp->ds_parms ) { Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.Configuration.DSConfig = frmprobresp->ds_parms->curr_ch; memmove( &Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_ds, frmprobresp->ds_parms, sizeof( wlan_ie_ds_parms_t ) ); } if( frmprobresp->fh_parms ) { Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.Configuration.FHConfig.HopPattern= frmprobresp->fh_parms->hoppattern; Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.Configuration.FHConfig.HopSet= frmprobresp->fh_parms->hopset; Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.Configuration.FHConfig.DwellTime= frmprobresp->fh_parms->dwell; memmove( &Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_fhps, frmprobresp->fh_parms, sizeof( wlan_ie_fh_parms_t ) ); } if( frmprobresp->supp_rates ) { if( ( frmprobresp->supp_rates->len > 0) &&( frmprobresp->supp_rates->len <= 8 ) ) { for( j = 0; j < frmprobresp->supp_rates->len; j++ ) { Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.SupportedRates[j] = frmprobresp->supp_rates->rates[j]; } } memmove( &Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_rates, frmprobresp->supp_rates, sizeof( rates_t ) ); if( frmprobresp->ext_rates ) { int k = 0; while( ( j < NDIS_802_11_LENGTH_RATES_EX ) && ( k < frmprobresp->ext_rates->len)) { Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ndisbssidex.SupportedRates[j] = frmprobresp->ext_rates->extrates[k]; j++; k++; } memmove( &Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_extendrates, frmprobresp->ext_rates, sizeof( wlan_extend_rates_t ) ); } } if( frmprobresp->contry_parms ) { memmove( &Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_country, frmprobresp->contry_parms, sizeof( tim_t ) ); } if( frmprobresp->fh_pattern ) { memmove( &Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_fhparms, frmprobresp->fh_pattern, sizeof( wlan_fhparms_t ) ); } if( frmprobresp->fh_patterntable ) { memmove( &Adapter->Ndis80211Parameter.pWlanScanDb->wlandesc[i].ie_fhpatterntable, frmprobresp->fh_patterntable, sizeof( wlan_fhpatterntable_t ) ); } if( frmprobresp->powerconstraint ) {
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -