begin to parse frame ctl hdr + listing sta's
[my-code/hdw-sniff.git] / parse.h
diff --git a/parse.h b/parse.h
index 1bf727e..ef167ad 100644 (file)
--- a/parse.h
+++ b/parse.h
 #ifndef PARSE_H
 #define PARSE_H
 
-typedef struct s_data {
-  unsigned char **package;
-  int p_count;
+/* ieee802.11 stuff */
 
-} t_data; 
+#define ADDR_LEN 6
 
+typedef struct s_frame4_hdr {
+  u16 frame_ctl;
+  u16 duration_id;
+  u8 addr1[ADDR_LEN]; /* receiver */
+  u8 addr2[ADDR_LEN]; /* transmitter */
+  u8 addr3[ADDR_LEN]; /* destination */
+  u16 seq_ctrl;
+  u8 addr4[ADDR_LEN]; /* source */
+} __attribute__ ((packed)) t_frame4_hdr;
+
+typedef struct s_frame3_hdr {
+  u16 frame_ctl;
+  u16 duration_id;
+  u8 addr1[ADDR_LEN]; /* destination / bssid */
+  u8 addr2[ADDR_LEN]; /* source /bssid */
+  u8 addr3[ADDR_LEN]; /* bssid / source / destination */
+  u16 seq_ctrl;
+} __attribute__ ((packed)) t_frame3_hdr;
+
+typedef struct s_frame2_hdr {
+  u16 frame_ctl;
+  u16 duration_id;
+  u8 addr1[ADDR_LEN]; /* receiver / bssid / receiver */
+  u8 addr2[ADDR_LEN]; /* transmitter / transmitter / bssid */
+  u16 seq_ctrl;
+} __attribute__ ((packed)) t_frame2_hdr;
+
+typedef struct s_frame1_hdr {
+  u16 frame_ctl;
+  u16 duration_id;
+  u8 addr1[ADDR_LEN]; /* receiver */
+  u16 seq_ctrl;
+} __attribute__ ((packed)) t_frame1_hdr;
+
+#define FCTL_VER(X) ((X&0x0003))
+#define FCTL_TYPE(X) ((X&0x000c)>>2)
+#define FCTL_STYPE(X) ((X&0x00f0)>>4)
+#define FCTL_TODS(X) ((X&0x0100)>>8)
+#define FCTL_FROMDS(X) ((X&0x0200)>>9)
+#define FCTL_MOREFRAG(X) ((X&0x0400)>>10)
+#define FCTL_RETRY(X) ((X&0x0800)>>11)
+#define FCTL_PWRMGT(X) ((X&1000)>>12)
+#define FCTL_MOREDATA(X) ((X&0x2000)>>13)
+#define FCTL_WEP(X) ((X&0x4000)>>14)
+#define FCTL_ORDER(X) ((X&0x800)>>15)
+
+#define FCTL_TYPE_MGMT 0
+#define FCTL_TYPE_CTRL 1
+#define FCTL_TYPE_DATA 2
+
+#define FCTL_STYPE_ASSOC_REQ 0x0
+#define FCTL_STYPE_ASSOC_RESP 0x1
+#define FCTL_STYPE_REASSOC_REQ 0x2
+#define FCTL_STYPE_REASSOC_RESP 0x3
+#define FCTL_STYPE_PROBE_REQ 0x4
+#define FCTL_STYPE_PROBE_RESP 0x5
+#define FCTL_STYPE_BEACON 0x8
+#define FCTL_STYPE_ATIM 0x9
+#define FCTL_STYPE_DISASSOC 0xa
+#define FCTL_STYPE_AUTH 0xb
+#define FCTL_STYPE_DEAUTH 0xc
+
+#define FCTL_STYPE_PSPOLL 0xa
+#define FCTL_STYPE_RTS 0xb
+#define FCTL_STYPE_CTS 0xc
+#define FCTL_STYPE_ACK 0xd
+#define FCTL_STYPE_CFEND 0xe
+#define FCTL_STYPE_CFENDACK 0xf
+
+#define FCTL_STYPE_DATA 0x0
+#define FCTL_STYPE_DATA_CFACK 0x1
+#define FCTL_STYPE_DATA_CFPOLL 0x2
+#define FCTL_STYPE_DATA_CFACKPOLL 0x3
+#define FCTL_STYPE_NULLFUNC 0x4
+#define FCTL_STYPE_CFACK 0x5
+#define FCTL_STYPE_CFPOLL 0x6
+#define FCTL_STYPE_CFACKPOLL 0x7
+
+
+/* hdw-sniff stuff */
+
+#define MAX_SSID_LEN 32
+#define AP 1
+#define WEP 1
+#define WEP_MAX_DIGITS 13
+
+typedef struct s_sta {
+  u8 addr[ADDR_LEN];
+  char ssid[MAX_SSID_LEN];
+  u8 ap;
+  u8 wep;
+  int count_mgmt;
+  int count_ctrl;
+  int count_data;
+  char key[WEP_MAX_DIGITS];
+} t_sta;
+  
 /* function prototypes */
 
 #endif