📄 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
/*--------------------- Static Definitions -------------------------*/
/*--------------------- Static Classes ----------------------------*/
/*--------------------- Static Variables --------------------------*/
static int msglevel =MSG_LEVEL_INFO;
//static int msglevel =MSG_LEVEL_DEBUG;
/*--------------------- Static Functions --------------------------*/
// Association/diassociation functions
static
PSTxMgmtPacket
s_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
);
static
VOID
s_vMgrRxAssocRequest(
IN PSDevice pDevice,
IN PSMgmtObject pMgmt,
IN PSRxMgmtPacket pRxPacket,
IN UINT uNodeIndex
);
static
PSTxMgmtPacket
s_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
);
static
VOID
s_vMgrRxAssocResponse(
IN PSDevice pDevice,
IN PSMgmtObject pMgmt,
IN PSRxMgmtPacket pRxPacket,
IN BOOL bReAssocType
);
static
VOID
s_vMgrRxDisassociation(
IN PSDevice pDevice,
IN PSMgmtObject pMgmt,
IN PSRxMgmtPacket pRxPacket
);
// Authentication/deauthen functions
static
VOID
s_vMgrRxAuthenSequence_1(
IN PSDevice pDevice,
IN PSMgmtObject pMgmt,
IN PWLAN_FR_AUTHEN pFrame
);
static
VOID
s_vMgrRxAuthenSequence_2(
IN PSDevice pDevice,
IN PSMgmtObject pMgmt,
IN PWLAN_FR_AUTHEN pFrame
);
static
VOID
s_vMgrRxAuthenSequence_3(
IN PSDevice pDevice,
IN PSMgmtObject pMgmt,
IN PWLAN_FR_AUTHEN pFrame
);
static
VOID
s_vMgrRxAuthenSequence_4(
IN PSDevice pDevice,
IN PSMgmtObject pMgmt,
IN PWLAN_FR_AUTHEN pFrame
);
static
VOID
s_vMgrRxAuthentication(
IN PSDevice pDevice,
IN PSMgmtObject pMgmt,
IN PSRxMgmtPacket pRxPacket
);
static
VOID
s_vMgrRxDeauthentication(
IN PSDevice pDevice,
IN PSMgmtObject pMgmt,
IN PSRxMgmtPacket pRxPacket
);
// Scan functions
// probe request/response functions
static
VOID
s_vMgrRxProbeRequest(
IN PSDevice pDevice,
IN PSMgmtObject pMgmt,
IN PSRxMgmtPacket pRxPacket
);
static
VOID
s_vMgrRxProbeResponse(
IN PSDevice pDevice,
IN PSMgmtObject pMgmt,
IN PSRxMgmtPacket pRxPacket
);
// beacon functions
static
VOID
s_vMgrRxBeacon(
IN PSDevice pDevice,
IN PSMgmtObject pMgmt,
IN PSRxMgmtPacket pRxPacket,
IN BOOL bInScan
);
static
VOID
s_vMgrFormatTIM(
IN PSMgmtObject pMgmt,
IN PWLAN_IE_TIM pTIM
);
static
PSTxMgmtPacket
s_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
static
PSTxMgmtPacket
s_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
static
PSTxMgmtPacket
s_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 response
static
PSTxMgmtPacket
s_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 status
static
VOID
s_vMgrLogStatus(
IN PSMgmtObject pMgmt,
IN WORD wStatus
);
static
VOID
s_vMgrSynchBSS (
IN PSDevice pDevice,
IN UINT uBSSMode,
IN PKnownBSS pCurr,
OUT PCMD_STATUS pStatus
);
static BOOL
s_bCipherMatch (
IN PKnownBSS pBSSNode,
IN NDIS_802_11_ENCRYPTION_STATUS EncStatus,
OUT PBYTE pbyCCSPK,
OUT PBYTE pbyCCSGK
);
/*
static
VOID
s_vProbeChannel(
IN PSDevice pDevice
);
static
VOID
s_vListenChannel(
IN PSDevice pDevice
);
static
PSTxMgmtPacket
s_MgrMakeProbeRequest(
IN PSMgmtObject pMgmt,
IN PBYTE pScanBSSID,
IN PWLAN_IE_SSID pSSID,
IN PWLAN_IE_SUPP_RATES pCurrRates
);
*/
/*--------------------- Export Variables --------------------------*/
/*--------------------- Export Functions --------------------------*/
/*+
*
* Routine Description:
* Allocates and initializes the Management object.
*
* Return Value:
* Ndis_staus.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -