00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef WIFI_FRAME_MGT_HH_
00023 # define WIFI_FRAME_MGT_HH_
00024
00025 # include <string>
00026
00027 extern "C"
00028 {
00029 # include <inttypes.h>
00030 }
00031
00032 # include <wipal/wifi/addr.hh>
00033
00034 namespace wpl
00035 {
00036
00037 namespace wifi
00038 {
00039
00041 namespace mgt
00042 {
00043
00045 namespace subtype
00046 {
00047
00049 enum frame_subtype
00050 {
00051 assoc_req = 0,
00052 assoc_resp = 1,
00053 reassoc_req = 2,
00054 reassoc_resp = 3,
00055 probe_req = 4,
00056 probe_resp = 5,
00057 beacon = 8,
00058 atim = 9,
00059 disassoc = 10,
00060 auth = 11,
00061 deauth = 12
00062 };
00063
00065 extern const std::string names[16];
00066
00067 }
00068
00070 struct header
00071 {
00073 enum addr_index
00074 {
00075 da = 0,
00076 sa = 1,
00077 bssid = 2
00078 };
00079
00081 static const std::string addr_names[3];
00082
00083 uint16_t frame_ctl;
00084 uint16_t duration;
00085 addr addrs[3];
00086 uint16_t seq_ctl;
00087 uint8_t body[];
00088 } __attribute__((__packed__));
00089
00090 }
00091
00092 }
00093
00094 }
00095
00096 #endif // ! WIFI_FRAME_MGT_HH_