network_80211.h 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #define FRAME_TYPE_MANAGEMENT 0
  2. #define FRAME_TYPE_CONTROL 1
  3. #define FRAME_TYPE_DATA 2
  4. #define FRAME_SUBTYPE_ASSOC_REQUEST 0x00
  5. #define FRAME_SUBTYPE_ASSOC_RESPONSE 0x01
  6. #define FRAME_SUBTYPE_REASSOC_REQUEST 0x02
  7. #define FRAME_SUBTYPE_REASSOC_RESPONSE 0x03
  8. #define FRAME_SUBTYPE_PROBE_REQUEST 0x04
  9. #define FRAME_SUBTYPE_PROBE_RESPONSE 0x05
  10. #define FRAME_SUBTYPE_BEACON 0x08
  11. #define FRAME_SUBTYPE_ATIM 0x09
  12. #define FRAME_SUBTYPE_DISASSOCIATION 0x0a
  13. #define FRAME_SUBTYPE_AUTHENTICATION 0x0b
  14. #define FRAME_SUBTYPE_DEAUTHENTICATION 0x0c
  15. #define FRAME_SUBTYPE_DATA 0x14
  16. typedef struct framectrl_80211
  17. {
  18. //buf[0]
  19. u8 Protocol:2;
  20. u8 Type:2;
  21. u8 Subtype:4;
  22. //buf[1]
  23. u8 ToDS:1;
  24. u8 FromDS:1;
  25. u8 MoreFlag:1;
  26. u8 Retry:1;
  27. u8 PwrMgmt:1;
  28. u8 MoreData:1;
  29. u8 Protectedframe:1;
  30. u8 Order:1;
  31. } framectrl_80211,*lpframectrl_80211;
  32. typedef struct management_80211
  33. {
  34. struct framectrl_80211 framectrl;
  35. uint16 duration;
  36. uint8 rdaddr[6];
  37. uint8 tsaddr[6];
  38. uint8 bssid[6];
  39. uint16 number;
  40. } management_request_t;
  41. typedef struct
  42. {
  43. management_request_t hdr;
  44. uint8 timestamp[8];
  45. uint16 beacon_interval;
  46. uint16 capability_info;
  47. } wifi_beacon_t;
  48. typedef struct tagged_parameter
  49. {
  50. /* SSID parameter */
  51. uint8 tag_number;
  52. uint8 tag_length;
  53. } tagged_parameter, *ptagged_parameter;
  54. struct RxControl {
  55. signed rssi:8;//表示该包的信号强度
  56. unsigned rate:4;
  57. unsigned is_group:1;
  58. unsigned:1;
  59. unsigned sig_mode:2;//表示该包是否是11n的包,0表示非11n,非0表示11n
  60. unsigned legacy_length:12;//如果不是11n的包,它表示包的长度
  61. unsigned damatch0:1;
  62. unsigned damatch1:1;
  63. unsigned bssidmatch0:1;
  64. unsigned bssidmatch1:1;
  65. unsigned MCS:7;//如果是11n的包,它表示包的调制编码序列,有效值:0-76
  66. unsigned CWB:1;//如果是11n的包,它表示是否为HT40的包
  67. unsigned HT_length:16;//如果是11n的包,它表示包的长度
  68. unsigned Smoothing:1;
  69. unsigned Not_Sounding:1;
  70. unsigned:1;
  71. unsigned Aggregation:1;
  72. unsigned STBC:2;
  73. unsigned FEC_CODING:1;//如果是11n的包,它表示是否为LDPC的包
  74. unsigned SGI:1;
  75. unsigned rxend_state:8;
  76. unsigned ampdu_cnt:8;
  77. unsigned channel:4;//表示该包所在的信道
  78. unsigned:12;
  79. };
  80. struct sniffer_buf2{
  81. struct RxControl rx_ctrl;
  82. u8 buf[112];//包含ieee80211包头
  83. u16 cnt;//包的个数
  84. u16 len[1];//包的长度
  85. };
  86. struct sniffer_buf{
  87. struct RxControl rx_ctrl;
  88. u8 buf[48];//包含ieee80211包头
  89. u16 cnt;//包的个数
  90. u16 len[1];//包的长度
  91. };