📄 mlme.h
字号:
MACADDR Addr2;
MACADDR Addr3;
USHORT Frag:4;
USHORT Seq:12;
} MACHDR, *PMACHDR;
typedef struct _MACFRAME {
MACHDR Hdr;
CHAR Octet[1];
} MACFRAME, *PMACFRAME;
typedef struct _PSPOLL_FRAME {
USHORT Ver:2;
USHORT Type:2;
USHORT SubType:4;
USHORT Tods:1;
USHORT Frds:1;
USHORT MoreFrag:1;
USHORT Retry:1;
USHORT PwrMgmt:1;
USHORT MoreData:1;
USHORT Wep:1;
USHORT Order:1;
USHORT Aid;
MACADDR Bssid;
MACADDR Ta;
} PSPOLL_FRAME;
//
// Contention-free parameter (without ID and Length)
//
typedef struct _CF_PARM {
UCHAR CfpCount;
UCHAR CfpPeriod;
USHORT CfpMaxDuration;
USHORT CfpDurRemaining;
} CF_PARM, *PCF_PARM;
typedef struct _CIPHER_SUITE {
NDIS_802_11_ENCRYPTION_STATUS PairCipher; // Unicast cipher 1, this one has more secured cipher suite
NDIS_802_11_ENCRYPTION_STATUS PairCipherAux; // Unicast cipher 2 if AP announce two unicast cipher suite
NDIS_802_11_ENCRYPTION_STATUS GroupCipher; // Group cipher
USHORT RsnCapability; // RSN capability from beacon
BOOLEAN bMixMode; // Indicate Pair & Group cipher might be different
} CIPHER_SUITE, *PCIPHER_SUITE;
typedef struct {
MACADDR Bssid;
UCHAR Channel;
UCHAR BssType;
USHORT AtimWin;
USHORT BeaconPeriod;
UCHAR Rates[MAX_LEN_OF_SUPPORTED_RATES];
UCHAR RatesLen;
BOOLEAN ExtendedRateIeExist; // records if this AP use EXTENDED_SUPPORTED_RATES IE
UCHAR Rssi;
UCHAR Privacy; // Indicate security function ON/OFF. Don't mess up with auth mode.
UCHAR Hidden;
USHORT DtimPeriod;
USHORT CapabilityInfo;
USHORT CfpCount;
USHORT CfpPeriod;
USHORT CfpMaxDuration;
USHORT CfpDurRemaining;
UCHAR SsidLen;
CHAR Ssid[MAX_LEN_OF_SSID];
ULONG LastBeaconRxTime; // OS's timestamp
// New for WPA2
CIPHER_SUITE WPA; // AP announced WPA cipher suite
CIPHER_SUITE WPA2; // AP announced WPA2 cipher suite
// New for microsoft WPA support
NDIS_802_11_FIXED_IEs FixIEs;
NDIS_802_11_AUTHENTICATION_MODE AuthModeAux; // Addition mode for WPA2 / WPA capable AP
NDIS_802_11_AUTHENTICATION_MODE AuthMode;
NDIS_802_11_WEP_STATUS WepStatus; // Unicast Encryption Algorithm extract from VAR_IE
UCHAR VarIELen; // Length of next VIE include EID & Length
UCHAR VarIEs[MAX_VIE_LEN];
} BSS_ENTRY, *PBSS_ENTRY;
typedef struct {
UCHAR BssNr;
BSS_ENTRY BssEntry[MAX_LEN_OF_BSS_TABLE];
} BSS_TABLE, *PBSS_TABLE;
typedef struct _MLME_QUEUE_ELEM {
ULONG Machine;
ULONG MsgType;
ULONG MsgLen;
UCHAR Rssi;
BOOLEAN Occupied;
UCHAR Msg[MAX_LEN_OF_MLME_BUFFER];
} MLME_QUEUE_ELEM, *PMLME_QUEUE_ELEM;
typedef struct _MLME_QUEUE {
ULONG Num;
ULONG Head;
ULONG Tail;
spinlock_t Lock;
MLME_QUEUE_ELEM Entry[MAX_LEN_OF_MLME_QUEUE];
} MLME_QUEUE, *PMLME_QUEUE;
typedef VOID (*STATE_MACHINE_FUNC)(VOID *Adaptor, MLME_QUEUE_ELEM *Elem);
typedef struct _STATE_MACHINE {
ULONG Base;
ULONG NrState;
ULONG NrMsg;
ULONG CurrState;
STATE_MACHINE_FUNC *TransFunc;
} STATE_MACHINE, *PSTATE_MACHINE;
// CNTL State Machine Aux data structure
typedef struct _CNTL_AUX {
UCHAR Ssid[MAX_LEN_OF_SSID];
UCHAR SsidLen;
MACADDR Bssid;
BSS_TABLE SsidBssTab; // AP list for the same SSID
BSS_TABLE RoamTab; // AP list eligible for roaming
ULONG BssIdx;
ULONG RoamIdx;
BOOLEAN CurrReqIsFromNdis; // TRUE - then we should call NdisMSetInformationComplete()
// FALSE - req is from driver itself.
// no NdisMSetInformationComplete() is required
} CNTL_AUX, *PCNTL_AUX;
// ASSOC State Machine Aux data structure
typedef struct _ASSOC_AUX {
MACADDR Addr;
USHORT CapabilityInfo;
USHORT ListenIntv;
CHAR Ssid[MAX_LEN_OF_SSID];
UCHAR SsidLen;
RALINK_TIMER_STRUCT AssocTimer, ReassocTimer, DisassocTimer;
} ASSOC_AUX, *PASSOC_AUX;
// AUTH State Machine Aux data structure
typedef struct _AUTH_AUX {
MACADDR Addr;
USHORT Alg;
RALINK_TIMER_STRUCT AuthTimer;
} AUTH_AUX, *PAUTH_AUX;
// AUTH-RSP State Machine Aux data structure
typedef struct _AUTH_RSP_AUX {
MACADDR Addr;
USHORT Alg;
CHAR Challenge[CIPHER_TEXT_LEN];
RALINK_TIMER_STRUCT AuthRspTimer;
} AUTH_RSP_AUX, *PAUTH_RSP_AUX;
// SYNC State Machine Aux data structure
typedef struct _SYNC_AUX {
MACADDR Addr;
MACADDR Bssid;
UCHAR BssType;
UCHAR SsidLen;
CHAR Ssid[MAX_LEN_OF_SSID];
UCHAR ScanType;
UCHAR Channel;
RALINK_TIMER_STRUCT BeaconTimer, ScanTimer;
} SYNC_AUX;
// assoc struct is equal to reassoc
typedef struct _MLME_ASSOC_REQ_STRUCT{
MACADDR Addr;
USHORT CapabilityInfo;
USHORT ListenIntv;
ULONG Timeout;
} MLME_ASSOC_REQ_STRUCT, *PMLME_ASSOC_REQ_STRUCT, MLME_REASSOC_REQ_STRUCT, *PMLME_REASSOC_REQ_STRUCT;
typedef struct _MLME_DISASSOC_REQ_STRUCT{
MACADDR Addr;
USHORT Reason;
} MLME_DISASSOC_REQ_STRUCT, *PMLME_DISASSOC_REQ_STRUCT;
typedef struct _MLME_AUTH_REQ_STRUCT {
MACADDR Addr;
USHORT Alg;
ULONG Timeout;
} MLME_AUTH_REQ_STRUCT, *PMLME_AUTH_REQ_STRUCT;
typedef struct _MLME_DEAUTH_REQ_STRUCT {
MACADDR Addr;
USHORT Reason;
} MLME_DEAUTH_REQ_STRUCT, *PMLME_DEAUTH_REQ_STRUCT;
//typedef struct _MLME_AUTH_IND_STRUCT {
// MACADDR Addr;
// USHORT Alg;
//} MLME_AUTH_IND_STRUCT, *PMLME_AUTH_IND_STRUCT;
//typedef struct _CLS2ERR_STRUCT {
// MACADDR Addr;
//} CLS2ERR_STRUCT, *PCLS2ERR_STRUCT;
typedef struct {
ULONG BssIdx;
} MLME_JOIN_REQ_STRUCT;
typedef struct _MLME_SCAN_REQ_STRUCT {
MACADDR Bssid;
UCHAR BssType;
UCHAR ScanType;
UCHAR SsidLen;
CHAR Ssid[MAX_LEN_OF_SSID];
} MLME_SCAN_REQ_STRUCT, *PMLME_SCAN_REQ_STRUCT;
typedef struct _MLME_START_REQ_STRUCT {
CHAR Ssid[MAX_LEN_OF_SSID];
UCHAR SsidLen;
} MLME_START_REQ_STRUCT, *PMLME_START_REQ_STRUCT;
typedef struct _ARC4_CONTEXT {
UCHAR x, y, State[256], Key[16]; // 128 bits key
} ARC4_CONTEXT, *PARC4_CONTEXT;
typedef struct _BEACON_EID_STRUCT {
UCHAR Eid;
UCHAR Len;
CHAR Octet[1];
} BEACON_EID_STRUCT,*PBEACON_EID_STRUCT;
// New for WPA cipher suite
typedef struct _RSN_EID_STRUCT {
UCHAR Eid;
UCHAR Length;
UCHAR Oui[4];
USHORT Version;
UCHAR Multicast[4];
USHORT Count;
struct {
UCHAR Oui[4];
} Unicast[1];
} RSN_EID_STRUCT, *PRSN_EID_STRUCT;
extern UCHAR RateIdToMbps[];
extern USHORT RateIdTo500Kbps[];
#endif // MLME_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -