ef167adf1b9b3f6d64d276fd3d68f77f47081671
[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 #define ADDR_LEN 6
9
10 typedef struct s_frame4_hdr {
11   u16 frame_ctl;
12   u16 duration_id;
13   u8 addr1[ADDR_LEN]; /* receiver */
14   u8 addr2[ADDR_LEN]; /* transmitter */
15   u8 addr3[ADDR_LEN]; /* destination */
16   u16 seq_ctrl;
17   u8 addr4[ADDR_LEN]; /* source */
18 } __attribute__ ((packed)) t_frame4_hdr;
19
20 typedef struct s_frame3_hdr {
21   u16 frame_ctl;
22   u16 duration_id;
23   u8 addr1[ADDR_LEN]; /* destination / bssid */
24   u8 addr2[ADDR_LEN]; /* source /bssid */
25   u8 addr3[ADDR_LEN]; /* bssid / source / destination */
26   u16 seq_ctrl;
27 } __attribute__ ((packed)) t_frame3_hdr;
28
29 typedef struct s_frame2_hdr {
30   u16 frame_ctl;
31   u16 duration_id;
32   u8 addr1[ADDR_LEN]; /* receiver / bssid / receiver */
33   u8 addr2[ADDR_LEN]; /* transmitter / transmitter / bssid */
34   u16 seq_ctrl;
35 } __attribute__ ((packed)) t_frame2_hdr;
36
37 typedef struct s_frame1_hdr {
38   u16 frame_ctl;
39   u16 duration_id;
40   u8 addr1[ADDR_LEN]; /* receiver */
41   u16 seq_ctrl;
42 } __attribute__ ((packed)) t_frame1_hdr;
43
44 #define FCTL_VER(X) ((X&0x0003))
45 #define FCTL_TYPE(X) ((X&0x000c)>>2)
46 #define FCTL_STYPE(X) ((X&0x00f0)>>4)
47 #define FCTL_TODS(X) ((X&0x0100)>>8)
48 #define FCTL_FROMDS(X) ((X&0x0200)>>9)
49 #define FCTL_MOREFRAG(X) ((X&0x0400)>>10)
50 #define FCTL_RETRY(X) ((X&0x0800)>>11)
51 #define FCTL_PWRMGT(X) ((X&1000)>>12)
52 #define FCTL_MOREDATA(X) ((X&0x2000)>>13)
53 #define FCTL_WEP(X) ((X&0x4000)>>14)
54 #define FCTL_ORDER(X) ((X&0x800)>>15)
55
56 #define FCTL_TYPE_MGMT 0
57 #define FCTL_TYPE_CTRL 1
58 #define FCTL_TYPE_DATA 2
59
60 #define FCTL_STYPE_ASSOC_REQ 0x0
61 #define FCTL_STYPE_ASSOC_RESP 0x1
62 #define FCTL_STYPE_REASSOC_REQ 0x2
63 #define FCTL_STYPE_REASSOC_RESP 0x3
64 #define FCTL_STYPE_PROBE_REQ 0x4
65 #define FCTL_STYPE_PROBE_RESP 0x5
66 #define FCTL_STYPE_BEACON 0x8
67 #define FCTL_STYPE_ATIM 0x9
68 #define FCTL_STYPE_DISASSOC 0xa
69 #define FCTL_STYPE_AUTH 0xb
70 #define FCTL_STYPE_DEAUTH 0xc
71
72 #define FCTL_STYPE_PSPOLL 0xa
73 #define FCTL_STYPE_RTS 0xb
74 #define FCTL_STYPE_CTS 0xc
75 #define FCTL_STYPE_ACK 0xd
76 #define FCTL_STYPE_CFEND 0xe
77 #define FCTL_STYPE_CFENDACK 0xf
78
79 #define FCTL_STYPE_DATA 0x0
80 #define FCTL_STYPE_DATA_CFACK 0x1
81 #define FCTL_STYPE_DATA_CFPOLL 0x2
82 #define FCTL_STYPE_DATA_CFACKPOLL 0x3
83 #define FCTL_STYPE_NULLFUNC 0x4
84 #define FCTL_STYPE_CFACK 0x5
85 #define FCTL_STYPE_CFPOLL 0x6
86 #define FCTL_STYPE_CFACKPOLL 0x7
87
88
89 /* hdw-sniff stuff */
90
91 #define MAX_SSID_LEN 32
92 #define AP 1
93 #define WEP 1
94 #define WEP_MAX_DIGITS 13
95
96 typedef struct s_sta {
97   u8 addr[ADDR_LEN];
98   char ssid[MAX_SSID_LEN];
99   u8 ap;
100   u8 wep;
101   int count_mgmt;
102   int count_ctrl;
103   int count_data;
104   char key[WEP_MAX_DIGITS];
105 } t_sta;
106   
107 /* function prototypes */
108
109 #endif