📄 macfunc.c
字号:
#include "wtprecomp.h"void mkWlanMgmtFrameHdr( PWTWLAN_TXBUF pWtTxBuf, TypeSubtype ft, MacAddr da, MacAddr sa, MacAddr bssa){ unsigned short i; p80211_hdr_t *hdr; //valide check if ( !pWtTxBuf ) return; hdr = (p80211_hdr_t *)(&pWtTxBuf->TXHwBuf.pHwTxBuf->dot11Head); hdr->a3.fc = host2ieee16(WLAN_SET_FC_FSTYPE(ft)); *( pWtTxBuf->TXHwBuf.pHwTxBuf->dot11Head + 2)=0; *( pWtTxBuf->TXHwBuf.pHwTxBuf->dot11Head + 3)=0; for( i=0; i<6; i++ ) { *( pWtTxBuf->TXHwBuf.pHwTxBuf->dot11Head + 4+i)=da[i]; *( pWtTxBuf->TXHwBuf.pHwTxBuf->dot11Head + 10+i)=sa[i]; *( pWtTxBuf->TXHwBuf.pHwTxBuf->dot11Head + 16+i)=bssa[i]; *( pWtTxBuf->TXHwBuf.pHwTxBuf->dot11Head + 24+i)= 0; } *( pWtTxBuf->TXHwBuf.pHwTxBuf->dot11Head + 22)=0; *( pWtTxBuf->TXHwBuf.pHwTxBuf->dot11Head + 23)=0; pWtTxBuf->TXHwBuf.pHwTxBuf->TxAUXBuf.HeadLen = MacHeaderLng(ft);}void mkFrame( PWTWLAN_TXBUF fp, TypeSubtype ft, MacAddr da, MacAddr sa, MacAddr bssa, char *Body, USHORT BodyLen ){ unsigned short i; UCHAR HeadLen; p80211_hdr_t *hdr; if ( !fp ) return; hdr = (p80211_hdr_t *)(&fp->TXHwBuf.pHwTxBuf->dot11Head); HeadLen = MacHeaderLng(ft); if( Body &&( BodyLen != 0) ) { memcpy(fp->TXHwBuf.pHwTxBuf->Buffer, Body ,BodyLen); fp->TXHwBuf.pHwTxBuf->TxAUXBuf.DataLen = host2ieee16( BodyLen ); } hdr->a3.fc = host2ieee16(WLAN_SET_FC_FSTYPE(ft)); *( fp->TXHwBuf.pHwTxBuf->dot11Head + 2)=0; *( fp->TXHwBuf.pHwTxBuf->dot11Head + 3)=0; for( i=0; i<6; i++ ) { *( fp->TXHwBuf.pHwTxBuf->dot11Head + 4+i)=da[i]; *( fp->TXHwBuf.pHwTxBuf->dot11Head + 10+i)=sa[i]; *( fp->TXHwBuf.pHwTxBuf->dot11Head + 16+i)=bssa[i]; *( fp->TXHwBuf.pHwTxBuf->dot11Head + 24+i)= 0; } *( fp->TXHwBuf.pHwTxBuf->dot11Head + 22)=0; *( fp->TXHwBuf.pHwTxBuf->dot11Head + 23)=0; fp->TXHwBuf.pHwTxBuf->TxAUXBuf.HeadLen = HeadLen;}/*write for each plateform*/unsigned long int random_data( int i){ return 500;} Time dKusec( Time dusec){ return dusec*1000;}Time kUsec( Time kusec){ return div64(kusec,1000);}char isGroup( MacAddr Addr ){ if(( Addr[0] & 0x01 )== 0x01) return 1; else return 0;}void addr2( UCHAR *dot11Head, MacAddr a2 ){ int i; for( i=0; i<6; i++ ) { a2[i]=*(dot11Head + 10 +i); } }int authSeqNum( UCHAR *FrameBody ){ return *(FrameBody+2) + (*(FrameBody+3)) * 256;}void authStat( UCHAR *FrameBody , StatusCode *sc ){ *sc = *(FrameBody+4); *sc = (*sc) + ((*(FrameBody+5)) << 8);}void setWepBit( PWTWLAN_TXBUF PTxBuffer, char wb){ UCHAR tmp; if( wb ) tmp=0x40; else tmp=0x00; PTxBuffer->TXHwBuf.pHwTxBuf->dot11Head[1]=( (PTxBuffer->TXHwBuf.pHwTxBuf->dot11Head[1]) & 0xBF ) | tmp; tmp = PTxBuffer->TXHwBuf.pHwTxBuf->dot11Head[1];//just for test}void status( UCHAR *FrameBody , StatusCode *sc ){ *sc = *(FrameBody+2); *sc = (*sc) + ((*(FrameBody+3))<<8);}char capA( UCHAR *FrameBody, Capability c ){ Capability tmp; tmp = FrameBody[0]; tmp=tmp +((FrameBody[1])<<8); if(( tmp & c )==c ) return 1; else return 0;}void AId( UCHAR *FrameBody, AsocId *ad ){ *ad=FrameBody[4]; *ad=*ad+(( FrameBody[5] ) << 8 );}void reason( UCHAR *FrameBody, ReasonCode *rc ){ *rc=FrameBody[0]; *rc=( *rc )+(( FrameBody[1] ) << 8 );}char bufFrame( TIM *el, AsocId a ){ int8 offset; int8 index; char tmp; if( a < (( el->mapControl & 0xFE ) * 8 )) return 0; else if( a>=(( el->mapControl & 0xFE ) *8) + ( el->Length *8 )) return 0; else { offset=a%8; index=a/8; tmp=el->pvMap[index-( el->mapControl & 0xFE )]; tmp=tmp << ( 7-offset ); tmp=tmp >> 7; if( tmp ) return 1; else return 0; }}char bufBcst( TIM *el ){ if( el->mapControl & 0x01 ) return 1; else return 0;}int8 dtCount( TIM *el ){ return el->Count;}Time now(){ return 0x0ull;}int CfpCount(CfParms CfParms){ return CfParms.Count;}char CfpPeriod(CfParms CfParms){ return CfParms.Period;}int CfpMaxDur(CfParms CfParms){ return CfParms.MaxDur;}CfParms SetCfpPeriod(CfParms CfParms, UCHAR CfpPeriod){ CfParms.Period= CfpPeriod; return CfParms;}CfParms SetCfpCount(CfParms CfParms,char CfpCount){ CfParms.Count= CfpCount; return CfParms;}char *int16ToS(int16 Value, char *str){ str[0] = Value % 256; str[1] = Value / 256; str[2] = 0; return str;}void Doze(){}void TBTT(){}void Cancel(){}char* mkElem(ElementID eid, char * dst, char *src, int len){ int i; for( i=len-1; i>=0; i-- ) { dst[i+2]=src[i]; } dst[0]=eid; dst[1]=(UCHAR)len; return dst;}void SelectChannel(){ }TypeSubtype ftype( char *fp){ return (*fp&0xFC);}char MacHeaderLng(TypeSubtype i){ return sMacHdrLng;}void InitializeRateTable( IN PWT_ADAPTER Adapter ){ // rate table #ifdef WIN_PLATFORM NdisZeroMemory( Adapter->MacParameter.Mask2Rate, MAX_SUPPORT_RATE_TYPE ); NdisZeroMemory( Adapter->MacParameter.Rate2Mask, MAX_RATE_VALUE+1 ); #else memset( Adapter->MacParameter.Mask2Rate, 0, MAX_SUPPORT_RATE_TYPE ); memset( Adapter->MacParameter.Rate2Mask, 0, MAX_RATE_VALUE+1 ); #endif Adapter->MacParameter.Mask2Rate[0] = 2; Adapter->MacParameter.Mask2Rate[1] = 4; Adapter->MacParameter.Mask2Rate[2] = 11; Adapter->MacParameter.Mask2Rate[3] = 22; Adapter->MacParameter.Mask2Rate[4] = 12; Adapter->MacParameter.Mask2Rate[5] = 18; Adapter->MacParameter.Mask2Rate[6] = 24; Adapter->MacParameter.Mask2Rate[7] = 36; Adapter->MacParameter.Mask2Rate[8] = 44; Adapter->MacParameter.Mask2Rate[9] = 48; Adapter->MacParameter.Mask2Rate[10] = 66; Adapter->MacParameter.Mask2Rate[11] = 72; Adapter->MacParameter.Mask2Rate[12] = 96; Adapter->MacParameter.Mask2Rate[13] = 108; Adapter->MacParameter.Rate2Mask[2] = 0; Adapter->MacParameter.Rate2Mask[4] = 1; Adapter->MacParameter.Rate2Mask[11] = 2; Adapter->MacParameter.Rate2Mask[22] = 3; Adapter->MacParameter.Rate2Mask[12] = 4; Adapter->MacParameter.Rate2Mask[18] = 5; Adapter->MacParameter.Rate2Mask[24] = 6; Adapter->MacParameter.Rate2Mask[36] = 7; Adapter->MacParameter.Rate2Mask[44] = 8; Adapter->MacParameter.Rate2Mask[48] = 9; Adapter->MacParameter.Rate2Mask[66] = 10; Adapter->MacParameter.Rate2Mask[72] = 11; Adapter->MacParameter.Rate2Mask[96] = 12; Adapter->MacParameter.Rate2Mask[108] = 13; Adapter->MacParameter.RateTypeLen = CURRENT_RATE_TYPE_LEN; }void InitializeGlobalVars( IN PWT_ADAPTER Adapter ){ #ifdef WIN_PLATFORM NdisFillMemory( Adapter->MacParameter.BcstAddr,6,0xFF ); #else memset( Adapter->MacParameter.BcstAddr,0xFF, 6 ); #endif}void WtWlanStaMacVarsInit( IN PWT_ADAPTER Adapter ){ #ifdef WIN_PLATFORM NdisFillMemory( Adapter->MacParameter.BcstAddr,6,0xFF ); #else memset( Adapter->MacParameter.BcstAddr, 0xFF, 6 ); #endif}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -