aboutsummaryrefslogtreecommitdiff
path: root/ieee802_11.h
diff options
context:
space:
mode:
Diffstat (limited to 'ieee802_11.h')
-rw-r--r--ieee802_11.h58
1 files changed, 44 insertions, 14 deletions
diff --git a/ieee802_11.h b/ieee802_11.h
index 3bcda7d22ba1..2aa1345038a2 100644
--- a/ieee802_11.h
+++ b/ieee802_11.h
@@ -30,6 +30,7 @@
#define IEEE802_11_RA_LEN 6
#define IEEE802_11_TA_LEN 6
#define IEEE802_11_SEQ_LEN 2
+#define IEEE802_11_CTL_LEN 2
#define IEEE802_11_IV_LEN 3
#define IEEE802_11_KID_LEN 1
@@ -67,11 +68,14 @@
#define ST_DISASSOC 0xA
#define ST_AUTH 0xB
#define ST_DEAUTH 0xC
-/* RESERVED 0xD */
+#define ST_ACTION 0xD
/* RESERVED 0xE */
/* RESERVED 0xF */
+#define CTRL_CONTROL_WRAPPER 0x7
+#define CTRL_BAR 0x8
+#define CTRL_BA 0x9
#define CTRL_PS_POLL 0xA
#define CTRL_RTS 0xB
#define CTRL_CTS 0xC
@@ -140,12 +144,6 @@ struct mgmt_header_t {
#define CAPABILITY_CFP_REQ(cap) ((cap) & 0x0008)
#define CAPABILITY_PRIVACY(cap) ((cap) & 0x0010)
-typedef enum {
- NOT_PRESENT,
- PRESENT,
- TRUNCATED
-} elem_status_t;
-
struct ssid_t {
u_int8_t element_id;
u_int8_t length;
@@ -233,20 +231,20 @@ struct mgmt_body_t {
u_int16_t reason_code;
u_int16_t auth_alg;
u_int16_t auth_trans_seq_num;
- elem_status_t challenge_status;
+ int challenge_present;
struct challenge_t challenge;
u_int16_t capability_info;
- elem_status_t ssid_status;
+ int ssid_present;
struct ssid_t ssid;
- elem_status_t rates_status;
+ int rates_present;
struct rates_t rates;
- elem_status_t ds_status;
+ int ds_present;
struct ds_t ds;
- elem_status_t cf_status;
+ int cf_present;
struct cf_t cf;
- elem_status_t fh_status;
+ int fh_present;
struct fh_t fh;
- elem_status_t tim_status;
+ int tim_present;
struct tim_t tim;
};
@@ -312,6 +310,38 @@ struct ctrl_end_ack_t {
#define CTRL_END_ACK_HDRLEN (IEEE802_11_FC_LEN+IEEE802_11_DUR_LEN+\
IEEE802_11_RA_LEN+IEEE802_11_BSSID_LEN)
+struct ctrl_ba_t {
+ u_int16_t fc;
+ u_int16_t duration;
+ u_int8_t ra[6];
+ u_int8_t fcs[4];
+};
+
+#define CTRL_BA_HDRLEN (IEEE802_11_FC_LEN+IEEE802_11_DUR_LEN+IEEE802_11_RA_LEN)
+
+struct ctrl_bar_t {
+ u_int16_t fc;
+ u_int16_t dur;
+ u_int8_t ra[6];
+ u_int8_t ta[6];
+ u_int16_t ctl;
+ u_int16_t seq;
+ u_int8_t fcs[4];
+};
+
+#define CTRL_BAR_HDRLEN (IEEE802_11_FC_LEN+IEEE802_11_DUR_LEN+\
+ IEEE802_11_RA_LEN+IEEE802_11_TA_LEN+\
+ IEEE802_11_CTL_LEN+IEEE802_11_SEQ_LEN)
+
+struct meshcntl_t {
+ u_int8_t flags;
+ u_int8_t ttl;
+ u_int8_t seq[4];
+ u_int8_t addr4[6];
+ u_int8_t addr5[6];
+ u_int8_t addr6[6];
+};
+
#define IV_IV(iv) ((iv) & 0xFFFFFF)
#define IV_PAD(iv) (((iv) >> 24) & 0x3F)
#define IV_KEYID(iv) (((iv) >> 30) & 0x03)