📄 wmgr.c
字号:
/* * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc. * All rights reserved. * * This software is copyrighted by and is the sole property of * VIA Networking Technologies, Inc. This software may only be used * in accordance with the corresponding license agreement. Any unauthorized * use, duplication, transmission, distribution, or disclosure of this * software is expressly forbidden. * * This software is provided by VIA Networking Technologies, Inc. "as is" * and any express or implied warranties, including, but not limited to, the * implied warranties of merchantability and fitness for a particular purpose * are disclaimed. In no event shall VIA Networking Technologies, Inc. * be liable for any direct, indirect, incidental, special, exemplary, or * consequential damages. * * * File: wmgr.c * * Purpose: Handles the 802.11 management functions * * Author: Lyndon Chen * * Date: May 8, 2002 * * Functions: * nsMgrObjectInitial - Initialize Management Objet data structure * vMgrObjectReset - Reset Management Objet data structure * vMgrAssocBeginSta - Start associate function * vMgrReAssocBeginSta - Start reassociate function * vMgrDisassocBeginSta - Start disassociate function * s_vMgrRxAssocRequest - Handle Rcv associate_request * s_vMgrRxAssocResponse - Handle Rcv associate_response * vMrgAuthenBeginSta - Start authentication function * vMgrDeAuthenDeginSta - Start deauthentication function * s_vMgrRxAuthentication - Handle Rcv authentication * s_vMgrRxAuthenSequence_1 - Handle Rcv authentication sequence 1 * s_vMgrRxAuthenSequence_2 - Handle Rcv authentication sequence 2 * s_vMgrRxAuthenSequence_3 - Handle Rcv authentication sequence 3 * s_vMgrRxAuthenSequence_4 - Handle Rcv authentication sequence 4 * s_vMgrRxDisassociation - Handle Rcv disassociation * s_vMgrRxBeacon - Handle Rcv Beacon * vMgrCreateOwnIBSS - Create ad_hoc IBSS or AP BSS * vMgrJoinBSSBegin - Join BSS function * s_vMgrSynchBSS - Synch & adopt BSS parameters * s_MgrMakeBeacon - Create Baecon frame * s_MgrMakeProbeResponse - Create Probe Response frame * s_MgrMakeAssocRequest - Create Associate Request frame * s_MgrMakeReAssocRequest - Create ReAssociate Request frame * s_vMgrRxProbeResponse - Handle Rcv probe_response * s_vMrgRxProbeRequest - Handle Rcv probe_request * bMgrPrepareBeaconToSend - Prepare Beacon frame * s_vMgrLogStatus - Log 802.11 Status * vMgrRxManagePacket - Rcv management frame dispatch function * s_vMgrFormatTIM- Assember TIM field of beacon * vMgrTimerInit- Initial 1-sec and command call back funtions * * Revision History: * */#if !defined(__TMACRO_H__)#include "tmacro.h"#endif#if !defined(__TBIT_H__)#include "tbit.h"#endif#if !defined(__DESC_H__)#include "desc.h"#endif#if !defined(__DEVICE_H__)#include "device.h"#endif#if !defined(__CARD_H__)#include "card.h"#endif#if !defined(__80211HDR_H__)#include "80211hdr.h"#endif#if !defined(__80211MGR_H__)#include "80211mgr.h"#endif#if !defined(__WMGR_H__)#include "wmgr.h"#endif#if !defined(__WCMD_H__)#include "wcmd.h"#endif#if !defined(__MAC_H__)#include "mac.h"#endif#if !defined(__BSSDB_H__)#include "bssdb.h"#endif#if !defined(__POWER_H__)#include "power.h"#endif#if !defined(__DATARATE_H__)#include "datarate.h"#endif#if !defined(__BASEBAND_H__)#include "baseband.h"#endif #if !defined(__RXTX_H__)#include "rxtx.h"#endif#if !defined(__WPA_H__)#include "wpa.h"#endif#if !defined(__RF_H__)#include "rf.h"#endif#if !defined(__UMEM_H__)#include "umem.h"#endif#if !defined(__IOWPA_H__)#include "iowpa.h"#endif#if !defined(__CONTROL_H__)#include "control.h"#endif#if !defined(__RNDIS_H__)#include "rndis.h"#endif/*--------------------- Static Definitions -------------------------*//*--------------------- Static Classes ----------------------------*//*--------------------- Static Variables --------------------------*/static int msglevel =MSG_LEVEL_INFO;//static int msglevel =MSG_LEVEL_DEBUG;/*--------------------- Static Functions --------------------------*/// Association/diassociation functionsstaticPSTxMgmtPackets_MgrMakeAssocRequest( IN PSDevice pDevice, IN PSMgmtObject pMgmt, IN PBYTE pDAddr, IN WORD wCurrCapInfo, IN WORD wListenInterval, IN PWLAN_IE_SSID pCurrSSID, IN PWLAN_IE_SUPP_RATES pCurrRates, IN PWLAN_IE_SUPP_RATES pCurrExtSuppRates ); staticVOIDs_vMgrRxAssocRequest( IN PSDevice pDevice, IN PSMgmtObject pMgmt, IN PSRxMgmtPacket pRxPacket, IN UINT uNodeIndex ); staticPSTxMgmtPackets_MgrMakeReAssocRequest( IN PSDevice pDevice, IN PSMgmtObject pMgmt, IN PBYTE pDAddr, IN WORD wCurrCapInfo, IN WORD wListenInterval, IN PWLAN_IE_SSID pCurrSSID, IN PWLAN_IE_SUPP_RATES pCurrRates, IN PWLAN_IE_SUPP_RATES pCurrExtSuppRates ); staticVOIDs_vMgrRxAssocResponse( IN PSDevice pDevice, IN PSMgmtObject pMgmt, IN PSRxMgmtPacket pRxPacket, IN BOOL bReAssocType ); staticVOIDs_vMgrRxDisassociation( IN PSDevice pDevice, IN PSMgmtObject pMgmt, IN PSRxMgmtPacket pRxPacket ); // Authentication/deauthen functionsstaticVOIDs_vMgrRxAuthenSequence_1( IN PSDevice pDevice, IN PSMgmtObject pMgmt, IN PWLAN_FR_AUTHEN pFrame );staticVOIDs_vMgrRxAuthenSequence_2( IN PSDevice pDevice, IN PSMgmtObject pMgmt, IN PWLAN_FR_AUTHEN pFrame ); staticVOIDs_vMgrRxAuthenSequence_3( IN PSDevice pDevice, IN PSMgmtObject pMgmt, IN PWLAN_FR_AUTHEN pFrame ); staticVOIDs_vMgrRxAuthenSequence_4( IN PSDevice pDevice, IN PSMgmtObject pMgmt, IN PWLAN_FR_AUTHEN pFrame ); staticVOIDs_vMgrRxAuthentication( IN PSDevice pDevice, IN PSMgmtObject pMgmt, IN PSRxMgmtPacket pRxPacket ); staticVOID s_vMgrRxDeauthentication( IN PSDevice pDevice, IN PSMgmtObject pMgmt, IN PSRxMgmtPacket pRxPacket );// Scan functions// probe request/response functionsstaticVOIDs_vMgrRxProbeRequest( IN PSDevice pDevice, IN PSMgmtObject pMgmt, IN PSRxMgmtPacket pRxPacket ); staticVOIDs_vMgrRxProbeResponse( IN PSDevice pDevice, IN PSMgmtObject pMgmt, IN PSRxMgmtPacket pRxPacket ); // beacon functions staticVOIDs_vMgrRxBeacon( IN PSDevice pDevice, IN PSMgmtObject pMgmt, IN PSRxMgmtPacket pRxPacket, IN BOOL bInScan ); staticVOIDs_vMgrFormatTIM( IN PSMgmtObject pMgmt, IN PWLAN_IE_TIM pTIM ); static PSTxMgmtPackets_MgrMakeBeacon( IN PSDevice pDevice, IN PSMgmtObject pMgmt, IN WORD wCurrCapInfo, IN WORD wCurrBeaconPeriod, IN UINT uCurrChannel, IN WORD wCurrATIMWinodw, IN PWLAN_IE_SSID pCurrSSID, IN PBYTE pCurrBSSID, IN PWLAN_IE_SUPP_RATES pCurrSuppRates, IN PWLAN_IE_SUPP_RATES pCurrExtSuppRates ); // Association response staticPSTxMgmtPackets_MgrMakeAssocResponse( IN PSDevice pDevice, IN PSMgmtObject pMgmt, IN WORD wCurrCapInfo, IN WORD wAssocStatus, IN WORD wAssocAID, IN PBYTE pDstAddr, IN PWLAN_IE_SUPP_RATES pCurrSuppRates, IN PWLAN_IE_SUPP_RATES pCurrExtSuppRates ); // ReAssociation response staticPSTxMgmtPackets_MgrMakeReAssocResponse( IN PSDevice pDevice, IN PSMgmtObject pMgmt, IN WORD wCurrCapInfo, IN WORD wAssocStatus, IN WORD wAssocAID, IN PBYTE pDstAddr, IN PWLAN_IE_SUPP_RATES pCurrSuppRates, IN PWLAN_IE_SUPP_RATES pCurrExtSuppRates ); // Probe responsestaticPSTxMgmtPackets_MgrMakeProbeResponse( IN PSDevice pDevice, IN PSMgmtObject pMgmt, IN WORD wCurrCapInfo, IN WORD wCurrBeaconPeriod, IN UINT uCurrChannel, IN WORD wCurrATIMWinodw, IN PBYTE pDstAddr, IN PWLAN_IE_SSID pCurrSSID, IN PBYTE pCurrBSSID, IN PWLAN_IE_SUPP_RATES pCurrSuppRates, IN PWLAN_IE_SUPP_RATES pCurrExtSuppRates, IN BYTE byPHYType ); // received statusstaticVOIDs_vMgrLogStatus( IN PSMgmtObject pMgmt, IN WORD wStatus ); staticVOIDs_vMgrSynchBSS ( IN PSDevice pDevice, IN UINT uBSSMode, IN PKnownBSS pCurr, OUT PCMD_STATUS pStatus ); static BOOLs_bCipherMatch ( IN PKnownBSS pBSSNode, IN NDIS_802_11_ENCRYPTION_STATUS EncStatus, OUT PBYTE pbyCCSPK, OUT PBYTE pbyCCSGK ); /*--------------------- Export Variables --------------------------*//*--------------------- Export Functions --------------------------*//*+ * * Routine Description: * Allocates and initializes the Management object. * * Return Value: * Ndis_staus. *-*/VOIDvMgrObjectInit( IN HANDLE hDeviceContext ){ PSDevice pDevice = (PSDevice)hDeviceContext; PSMgmtObject pMgmt = &(pDevice->sMgmtObj); int ii; pMgmt->pbyPSPacketPool = &pMgmt->byPSPacketPool[0]; pMgmt->pbyMgmtPacketPool = &pMgmt->byMgmtPacketPool[0]; pMgmt->uCurrChannel = pDevice->uChannel; for(ii=0;ii<WLAN_BSSID_LEN;ii++) { pMgmt->abyDesireBSSID[ii] = 0xFF; } pMgmt->sAssocInfo.AssocInfo.Length = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION); //memset(pMgmt->abyDesireSSID, 0, WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN +1); pMgmt->byCSSPK = KEY_CTL_NONE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -