fixed signal quality output
[my-code/hdw-sniff.git] / parse.h
1 /* parse.h */
2
3 #ifndef PARSE_H
4 #define PARSE_H
5
6 /* ieee802.11 stuff */
7
8
9 typedef unsigned long long int u64;
10 typedef unsigned int u32;
11 typedef unsigned short int u16;
12 typedef unsigned char u8;
13
14 #define ADDR_LEN 6
15
16 typedef struct s_frame4_hdr {
17   u16 frame_ctl;
18   u16 duration_id;
19   u8 addr1[ADDR_LEN]; /* receiver */
20   u8 addr2[ADDR_LEN]; /* transmitter */
21   u8 addr3[ADDR_LEN]; /* destination */
22   u16 seq_ctrl;
23   u8 addr4[ADDR_LEN]; /* source */
24 } __attribute__ ((packed)) t_frame4_hdr;
25
26 typedef struct s_frame3_hdr {
27   u16 frame_ctl;
28   u16 duration_id;
29   u8 addr1[ADDR_LEN]; /* destination / bssid */
30   u8 addr2[ADDR_LEN]; /* source /bssid */
31   u8 addr3[ADDR_LEN]; /* bssid / source / destination */
32   u16 seq_ctrl;
33 } __attribute__ ((packed)) t_frame3_hdr;
34
35 typedef struct s_frame2_hdr {
36   u16 frame_ctl;
37   u16 duration_id;
38   u8 addr1[ADDR_LEN]; /* receiver / bssid / receiver */
39   u8 addr2[ADDR_LEN]; /* transmitter / transmitter / bssid */
40   u16 seq_ctrl;
41 } __attribute__ ((packed)) t_frame2_hdr;
42
43 typedef struct s_frame1_hdr {
44   u16 frame_ctl;
45   u16 duration_id;
46   u8 addr1[ADDR_LEN]; /* receiver */
47   u16 seq_ctrl;
48 } __attribute__ ((packed)) t_frame1_hdr;
49
50 typedef struct s_prism_val {
51   u32 did;
52   u16 status;
53   u16 len;
54   u32 data;
55 } __attribute__ ((packed)) t_prism_val;
56
57 typedef struct s_prism_hdr {
58   u32 msg_code;
59   u32 msg_len;
60   char device[16];
61   t_prism_val hosttime;
62   t_prism_val mactime;
63   t_prism_val channel;
64   t_prism_val rssi;
65   t_prism_val sq;
66   t_prism_val signal;
67   t_prism_val noise;
68   t_prism_val rate;
69   t_prism_val istx;
70   t_prism_val frame_len;
71 } __attribute__ ((packed)) t_prism_hdr;
72
73 #define FCTL_VER(X) ((X&0x0003))
74 #define FCTL_TYPE(X) ((X&0x000c)>>2)
75 #define FCTL_STYPE(X) ((X&0x00f0)>>4)
76 #define FCTL_TODS(X) ((X&0x0100)>>8)
77 #define FCTL_FROMDS(X) ((X&0x0200)>>9)
78 #define FCTL_MOREFRAG(X) ((X&0x0400)>>10)
79 #define FCTL_RETRY(X) ((X&0x0800)>>11)
80 #define FCTL_PWRMGT(X) ((X&1000)>>12)
81 #define FCTL_MOREDATA(X) ((X&0x2000)>>13)
82 #define FCTL_WEP(X) ((X&0x4000)>>14)
83 #define FCTL_ORDER(X) ((X&0x800)>>15)
84
85 #define FCTL_TYPE_MGMT 0
86 #define FCTL_TYPE_CTRL 2
87 #define FCTL_TYPE_DATA 1
88
89 #define FCTL_STYPE_ASSOC_REQ 0x0
90 #define FCTL_STYPE_ASSOC_RESP 0x1
91 #define FCTL_STYPE_REASSOC_REQ 0x2
92 #define FCTL_STYPE_REASSOC_RESP 0x3
93 #define FCTL_STYPE_PROBE_REQ 0x4
94 #define FCTL_STYPE_PROBE_RESP 0x5
95 #define FCTL_STYPE_BEACON 0x8
96 #define FCTL_STYPE_ATIM 0x9
97 #define FCTL_STYPE_DISASSOC 0xa
98 #define FCTL_STYPE_AUTH 0xb
99 #define FCTL_STYPE_DEAUTH 0xc
100
101 #define FCTL_STYPE_PSPOLL 0xa
102 #define FCTL_STYPE_RTS 0xb
103 #define FCTL_STYPE_CTS 0xc
104 #define FCTL_STYPE_ACK 0xd
105 #define FCTL_STYPE_CFEND 0xe
106 #define FCTL_STYPE_CFENDACK 0xf
107
108 #define FCTL_STYPE_DATA 0x0
109 #define FCTL_STYPE_DATA_CFACK 0x1
110 #define FCTL_STYPE_DATA_CFPOLL 0x2
111 #define FCTL_STYPE_DATA_CFACKPOLL 0x3
112 #define FCTL_STYPE_NULLFUNC 0x4
113 #define FCTL_STYPE_CFACK 0x5
114 #define FCTL_STYPE_CFPOLL 0x6
115 #define FCTL_STYPE_CFACKPOLL 0x7
116
117 typedef struct s_beacon_fb {
118   u64 timestamp;
119   u16 beacon_int;
120   u16 cap_info;
121   u8 ssid_element_id;
122   u8 ssid_length;
123   u8 ssid[32];
124   u8 srates_element_id;
125   u8 srates_element_length;
126   u8 rest; /* go on here ... */
127 } __attribute__ ((packed)) t_beacon_fb;
128
129 #define CAP_INFO_ESS(X) ((X&0x0001))
130 #define CAP_INFO_IBSS(X) ((X&0x0002)>>1)
131 #define CAP_INFO_PRIVACY(X) ((X&0x0010)>>4)
132
133 /* hdw-sniff stuff */
134
135 #define MAX_SSID_LEN 32
136 #define AP 1
137 #define WEP 1
138 #define WEP_MAX_DIGITS 13
139
140 typedef struct s_sta {
141   u8 addr[ADDR_LEN];
142   char ssid[MAX_SSID_LEN];
143   u8 ap;
144   u8 wep;
145   int count_mgmt;
146   int count_ctrl;
147   int count_data;
148   char active;
149   char key[WEP_MAX_DIGITS];
150   int sq;
151 } t_sta;
152   
153 /* function prototypes */
154
155 #endif