📄 802.11.h
字号:
uint8 data[1]; } PACKED rep;} PACKED;typedef struct dot11_meas_rep dot11_meas_rep_t;/* length of Measure Report IE data not including variable len */#define DOT11_MNG_IE_MREP_FIXED_LEN 3 /* d11 measurement response IE fixed length */struct dot11_meas_rep_basic { uint8 channel; uint8 start_time[8]; uint16 duration; uint8 map;} PACKED;typedef struct dot11_meas_rep_basic dot11_meas_rep_basic_t;#define DOT11_MEASURE_BASIC_REP_LEN 12 /* d11 measurement basic report length */struct dot11_quiet { uint8 id; uint8 len; uint8 count; /* TBTTs until beacon interval in quiet starts */ uint8 period; /* Beacon intervals between periodic quiet periods ? */ uint16 duration; /* Length of quiet period, in TU's */ uint16 offset; /* TU's offset from TBTT in Count field */} PACKED;typedef struct dot11_quiet dot11_quiet_t;typedef struct { uint8 channel; uint8 map;} chan_map_tuple_t;typedef struct { uint8 id; uint8 len; uint8 eaddr[ETHER_ADDR_LEN]; uint8 interval; chan_map_tuple_t map[1];} dot11_ibss_dfs_t;/* WME Elements */#define WME_OUI "\x00\x50\xf2" /* WME OUI */#define WME_VER 1 /* WME version */#define WME_TYPE 2 /* WME type */#define WME_SUBTYPE_IE 0 /* Information Element */#define WME_SUBTYPE_PARAM_IE 1 /* Parameter Element */#define WME_SUBTYPE_TSPEC 2 /* Traffic Specification *//* WME Access Category Indices (ACIs) */#define AC_BE 0 /* Best Effort */#define AC_BK 1 /* Background */#define AC_VI 2 /* Video */#define AC_VO 3 /* Voice */#define AC_COUNT 4 /* number of ACs */typedef uint8 ac_bitmap_t; /* AC bitmap of (1 << AC_xx) */#define AC_BITMAP_NONE 0x0 /* No ACs */#define AC_BITMAP_ALL 0xf /* All ACs */#define AC_BITMAP_TST(ab, ac) (((ab) & (1 << (ac))) != 0)/* WME Information Element (IE) */struct wme_ie { uint8 oui[3]; uint8 type; uint8 subtype; uint8 version; uint8 qosinfo;} PACKED;typedef struct wme_ie wme_ie_t;#define WME_IE_LEN 7 /* WME IE length */struct wme_acparam { uint8 ACI; uint8 ECW; uint16 TXOP; /* stored in network order (ls octet first) */} PACKED;typedef struct wme_acparam wme_acparam_t;/* WME Parameter Element (PE) */struct wme_param_ie { uint8 oui[3]; uint8 type; uint8 subtype; uint8 version; uint8 qosinfo; uint8 rsvd; wme_acparam_t acparam[AC_COUNT];} PACKED;typedef struct wme_param_ie wme_param_ie_t;#define WME_PARAM_IE_LEN 24 /* WME Parameter IE length *//* QoS Info field for IE as sent from AP */#define WME_QI_AP_APSD_MASK 0x80 /* U-APSD Supported mask */#define WME_QI_AP_APSD_SHIFT 7 /* U-APSD Supported shift */#define WME_QI_AP_COUNT_MASK 0x0f /* Parameter set count mask */#define WME_QI_AP_COUNT_SHIFT 0 /* Parameter set count shift *//* QoS Info field for IE as sent from STA */#define WME_QI_STA_MAXSPLEN_MASK 0x60 /* Max Service Period Length mask */#define WME_QI_STA_MAXSPLEN_SHIFT 5 /* Max Service Period Length shift */#define WME_QI_STA_APSD_ALL_MASK 0xf /* APSD all AC bits mask */#define WME_QI_STA_APSD_ALL_SHIFT 0 /* APSD all AC bits shift */#define WME_QI_STA_APSD_BE_MASK 0x8 /* APSD AC_BE mask */#define WME_QI_STA_APSD_BE_SHIFT 3 /* APSD AC_BE shift */#define WME_QI_STA_APSD_BK_MASK 0x4 /* APSD AC_BK mask */#define WME_QI_STA_APSD_BK_SHIFT 2 /* APSD AC_BK shift */#define WME_QI_STA_APSD_VI_MASK 0x2 /* APSD AC_VI mask */#define WME_QI_STA_APSD_VI_SHIFT 1 /* APSD AC_VI shift */#define WME_QI_STA_APSD_VO_MASK 0x1 /* APSD AC_VO mask */#define WME_QI_STA_APSD_VO_SHIFT 0 /* APSD AC_VO shift *//* ACI */#define WME_AIFSN_MIN 1 /* WME AIFSN minimum value */#define WME_AIFSN_MAX 15 /* WME AIFSN maximum value */#define WME_AIFSN_MASK 0x0f /* WME AIFSN mask */#define WME_ACM_MASK 0x10 /* WME ACM mask */#define WME_ACI_MASK 0x60 /* WME ACI mask */#define WME_ACI_SHIFT 5 /* WME ACI shift *//* ECW */#define WME_ECW_MIN 0 /* cwmin/cwmax exponent minimum value */#define WME_ECW_MAX 15 /* cwmin/cwmax exponent maximum value */#define WME_ECW2CW(exp) ((1 << (exp)) - 1)#define WME_ECWMIN_MASK 0x0f /* cwmin exponent form mask */#define WME_ECWMAX_MASK 0xf0 /* cwmax exponent form mask */#define WME_ECWMAX_SHIFT 4 /* cwmax exponent form shift *//* TXOP */#define WME_TXOP_MIN 0 /* TXOP minimum value */#define WME_TXOP_MAX 65535 /* TXOP maximum value */#define WME_TXOP2USEC(txop) ((txop) << 5)/* Default EDCF parameters that AP advertises for STA to use; WMM draft Table 12 */#define WME_AC_BE_ACI_STA 0x03 /* STA ACI value for best effort AC */#define WME_AC_BE_ECW_STA 0xA4 /* STA ECW value for best effort AC */#define WME_AC_BE_TXOP_STA 0x0000 /* STA TXOP value for best effort AC */#define WME_AC_BK_ACI_STA 0x27 /* STA ACI value for background AC */#define WME_AC_BK_ECW_STA 0xA4 /* STA ECW value for background AC */#define WME_AC_BK_TXOP_STA 0x0000 /* STA TXOP value for background AC */#define WME_AC_VI_ACI_STA 0x42 /* STA ACI value for video AC */#define WME_AC_VI_ECW_STA 0x43 /* STA ECW value for video AC */#define WME_AC_VI_TXOP_STA 0x005e /* STA TXOP value for video AC */#define WME_AC_VO_ACI_STA 0x62 /* STA ACI value for audio AC */#define WME_AC_VO_ECW_STA 0x32 /* STA ECW value for audio AC */#define WME_AC_VO_TXOP_STA 0x002f /* STA TXOP value for audio AC *//* Default EDCF parameters that AP uses; WMM draft Table 14 */#define WME_AC_BE_ACI_AP 0x03 /* AP ACI value for best effort AC */#define WME_AC_BE_ECW_AP 0x64 /* AP ECW value for best effort AC */#define WME_AC_BE_TXOP_AP 0x0000 /* AP TXOP value for best effort AC */#define WME_AC_BK_ACI_AP 0x27 /* AP ACI value for background AC */#define WME_AC_BK_ECW_AP 0xA4 /* AP ECW value for background AC */#define WME_AC_BK_TXOP_AP 0x0000 /* AP TXOP value for background AC */#define WME_AC_VI_ACI_AP 0x41 /* AP ACI value for video AC */#define WME_AC_VI_ECW_AP 0x43 /* AP ECW value for video AC */#define WME_AC_VI_TXOP_AP 0x005e /* AP TXOP value for video AC */#define WME_AC_VO_ACI_AP 0x61 /* AP ACI value for audio AC */#define WME_AC_VO_ECW_AP 0x32 /* AP ECW value for audio AC */#define WME_AC_VO_TXOP_AP 0x002f /* AP TXOP value for audio AC */struct dot11_qbss_load_ie { uint8 id; /* 11, DOT11_MNG_QBSS_LOAD_ID */ uint8 length; uint16 station_count; /* total number of STAs associated */ uint8 channel_utilization; /* % of time, normalized to 255, QAP sensed medium busy */ uint16 aac; /* available admission capacity */} PACKED;typedef struct dot11_qbss_load_ie dot11_qbss_load_ie_t;/* surplus_bandwidth *//* Represented as 3 bits of integer, binary point, 13 bits fraction */#define INTEGER_SHIFT 13 /* integer shift */#define FRACTION_MASK 0x1FFF /* fraction mask *//* Management Notification Frame */struct dot11_management_notification { uint8 category; /* DOT11_ACTION_NOTIFICATION */ uint8 action; uint8 token; uint8 status; uint8 data[1]; /* Elements */} PACKED;#define DOT11_MGMT_NOTIFICATION_LEN 4 /* Fixed length *//* WME Action Codes */#define WME_ADDTS_REQUEST 0 /* WME ADDTS request */#define WME_ADDTS_RESPONSE 1 /* WME ADDTS response */#define WME_DELTS_REQUEST 2 /* WME DELTS request *//* WME Setup Response Status Codes */#define WME_ADMISSION_ACCEPTED 0 /* WME admission accepted */#define WME_INVALID_PARAMETERS 1 /* WME invalide parameters */#define WME_ADMISSION_REFUSED 3 /* WME admission refused *//* Macro to take a pointer to a beacon or probe response * header and return the char* pointer to the SSID info element */#define BCN_PRB_SSID(hdr) ((char*)(hdr) + DOT11_MGMT_HDR_LEN + DOT11_BCN_PRB_LEN)/* Authentication frame payload constants */#define DOT11_OPEN_SYSTEM 0 /* d11 open authentication */#define DOT11_SHARED_KEY 1 /* d11 shared authentication */#define DOT11_CHALLENGE_LEN 128 /* d11 chanllenge text length *//* Frame control macros */#define FC_PVER_MASK 0x3 /* PVER mask */#define FC_PVER_SHIFT 0 /* PVER shift */#define FC_TYPE_MASK 0xC /* type mask */#define FC_TYPE_SHIFT 2 /* type shift */#define FC_SUBTYPE_MASK 0xF0 /* subtype mask */#define FC_SUBTYPE_SHIFT 4 /* subtype shift */#define FC_TODS 0x100 /* to DS */#define FC_TODS_SHIFT 8 /* to DS shift */#define FC_FROMDS 0x200 /* from DS */#define FC_FROMDS_SHIFT 9 /* from DS shift */#define FC_MOREFRAG 0x400 /* more frag. */#define FC_MOREFRAG_SHIFT 10 /* more frag. shift */#define FC_RETRY 0x800 /* retry */#define FC_RETRY_SHIFT 11 /* retry shift */#define FC_PM 0x1000 /* PM */#define FC_PM_SHIFT 12 /* PM shift */#define FC_MOREDATA 0x2000 /* more data */#define FC_MOREDATA_SHIFT 13 /* more data shift */#define FC_WEP 0x4000 /* WEP */#define FC_WEP_SHIFT 14 /* WEP shift */#define FC_ORDER 0x8000 /* order */#define FC_ORDER_SHIFT 15 /* order shift *//* sequence control macros */#define SEQNUM_SHIFT 4 /* seq. number shift */#define SEQNUM_MAX 0x1000 /* max seqnum + 1 */#define FRAGNUM_MASK 0xF /* frag. number mask *//* Frame Control type/subtype defs *//* FC Types */#define FC_TYPE_MNG 0 /* management type */#define FC_TYPE_CTL 1 /* control type */#define FC_TYPE_DATA 2 /* data type *//* Management Subtypes */#define FC_SUBTYPE_ASSOC_REQ 0 /* assoc. request */#define FC_SUBTYPE_ASSOC_RESP 1 /* assoc. response */#define FC_SUBTYPE_REASSOC_REQ 2 /* reassoc. request */#define FC_SUBTYPE_REASSOC_RESP 3 /* reassoc. response */#define FC_SUBTYPE_PROBE_REQ 4 /* probe request */#define FC_SUBTYPE_PROBE_RESP 5 /* probe response */#define FC_SUBTYPE_BEACON 8 /* beacon */#define FC_SUBTYPE_ATIM 9 /* ATIM */#define FC_SUBTYPE_DISASSOC 10 /* disassoc. */#define FC_SUBTYPE_AUTH 11 /* authentication */#define FC_SUBTYPE_DEAUTH 12 /* de-authentication */#define FC_SUBTYPE_ACTION 13 /* action *//* Control Subtypes */#define FC_SUBTYPE_BLOCKACK_REQ 8 /* Block Ack Req */#define FC_SUBTYPE_BLOCKACK 9 /* Block Ack */#define FC_SUBTYPE_PS_POLL 10 /* PS poll */#define FC_SUBTYPE_RTS 11 /* RTS */#define FC_SUBTYPE_CTS 12 /* CTS */#define FC_SUBTYPE_ACK 13 /* ACK */#define FC_SUBTYPE_CF_END 14 /* CF-END */#define FC_SUBTYPE_CF_END_ACK 15 /* CF-END ACK *//* Data Subtypes */#define FC_SUBTYPE_DATA 0 /* Data */#define FC_SUBTYPE_DATA_CF_ACK 1 /* Data + CF-ACK */#define FC_SUBTYPE_DATA_CF_POLL 2 /* Data + CF-Poll */#define FC_SUBTYPE_DATA_CF_ACK_POLL 3 /* Data + CF-Ack + CF-Poll */#define FC_SUBTYPE_NULL 4 /* Null */#define FC_SUBTYPE_CF_ACK 5 /* CF-Ack */#define FC_SUBTYPE_CF_POLL 6 /* CF-Poll */#define FC_SUBTYPE_CF_ACK_POLL 7 /* CF-Ack + CF-Poll */#define FC_SUBTYPE_QOS_DATA 8 /* QoS Data */#define FC_SUBTYPE_QOS_DATA_CF_ACK 9 /* QoS Data + CF-Ack */#define FC_SUBTYPE_QOS_DATA_CF_POLL 10 /* QoS Data + CF-Poll */#define FC_SUBTYPE_QOS_DATA_CF_ACK_POLL 11 /* QoS Data + CF-Ack + CF-Poll */#define FC_SUBTYPE_QOS_NULL 12 /* QoS Null */#define FC_SUBTYPE_QOS_CF_POLL 14 /* QoS CF-Poll */#define FC_SUBTYPE_QOS_CF_ACK_POLL 15 /* QoS CF-Ack + CF-Poll *//* Data Subtype Groups */#define FC_SUBTYPE_ANY_QOS(s) (((s) & 8) != 0)#define FC_SUBTYPE_ANY_NULL(s) (((s) & 4) != 0)#define FC_SUBTYPE_ANY_CF_POLL(s) (((s) & 2) != 0)#define FC_SUBTYPE_ANY_CF_ACK(s) (((s) & 1) != 0)/* Type/Subtype Combos */#define FC_KIND_MASK (FC_TYPE_MASK | FC_SUBTYPE_MASK) /* FC kind mask */#define FC_KIND(t, s) (((t) << FC_TYPE_SHIFT) | ((s) << FC_SUBTYPE_SHIFT)) /* FC kind */#define FC_SUBTYPE(fc) (((fc) & FC_SUBTYPE_MASK) >> FC_SUBTYPE_SHIFT) /* Subtype from FC */#define FC_TYPE(fc) (((fc) & FC_TYPE_MASK) >> FC_TYPE_SHIFT) /* Type from FC */#define FC_ASSOC_REQ FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_ASSOC_REQ) /* assoc. request */#define FC_ASSOC_RESP FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_ASSOC_RESP) /* assoc. response */#define FC_REASSOC_REQ FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_REASSOC_REQ) /* reassoc. request */#define FC_REASSOC_RESP FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_REASSOC_RESP) /* reassoc. response */#define FC_PROBE_REQ FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_PROBE_REQ) /* probe request */#define FC_PROBE_RESP FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_PROBE_RESP) /* probe response */#define FC_BEACON FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_BEACON) /* beacon */#define FC_DISASSOC FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_DISASSOC) /* disassoc */#define FC_AUTH FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_AUTH) /* authentication */#define FC_DEAUTH FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_DEAUTH) /* deauthentication */#define FC_ACTION FC_KIND(FC_TYPE_MNG, FC_SUBTYPE_ACTION) /* action */#define FC_BLOCKACK_REQ FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_BLOCKACK_REQ) /* Block Ack Req */#define FC_BLOCKACK FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_BLOCKACK) /* Block Ack */#define FC_PS_POLL FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_PS_POLL) /* PS poll */#define FC_RTS FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_RTS) /* RTS */#define FC_CTS FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_CTS) /* CTS */#define FC_ACK FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_ACK) /* ACK */#define FC_CF_END FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_CF_END) /* CF-END */#define FC_CF_END_ACK FC_KIND(FC_TYPE_CTL, FC_SUBTYPE_CF_END_ACK) /* CF-END ACK */#define FC_DATA FC_KIND(FC_TYPE_DATA, FC_SUBTYPE_DATA) /* data */#define FC_NULL_DATA FC_KIND(FC_TYPE_DATA, FC_SUBTYPE_NULL) /* null data */#define FC_DATA_CF_ACK FC_KIND(FC_TYPE_DATA, FC_SUBTYPE_DATA_CF_ACK) /* data CF ACK */#define FC_QOS_DATA FC_KIND(FC_TYPE_DATA, FC_SUBTYPE_QOS_DATA) /* QoS data */#define FC_QOS_NULL FC_KIND(FC_TYPE_DATA, FC_SUBTYPE_QOS_NULL) /* QoS null *//* QoS Control Field *//* 802.1D Priority */#define QOS_PRIO_SHIFT 0 /* QoS priority shift */#define QOS_PRIO_MASK 0x0007 /* QoS priority mask */#define QOS_PRIO(qos) (((qos) & QOS_PRIO_MASK) >> QOS_PRIO_SHIFT) /* QoS priority *//* Traffic Identifier */#define QOS_TID_SHIFT 0 /* QoS TID shift */#define QOS_TID_MASK 0x000f /* QoS TID mask */#define QOS_TID(qos) (((qos) & QOS_TID_MASK) >> QOS_TID_SHIFT) /* QoS TID *//* End of Service Period (U-APSD) */#define QOS_EOSP_SHIFT 4 /* QoS End of Service Period shift */#define QOS_EOSP_MASK 0x0010 /* QoS End of Service Period mask */#define QOS_EOSP(qos) (((qos) & QOS_EOSP_MASK) >> QOS_EOSP_SHIFT) /* Qos EOSP *//* Ack Policy */#define QOS_ACK_NORMAL_ACK 0 /* Normal Ack */#define QOS_ACK_NO_ACK 1 /* No Ack (eg mcast) */#define QOS_ACK_NO_EXP_ACK 2 /* No Explicit Ack */#define QOS_ACK_BLOCK_ACK 3 /* Block Ack */#define QOS_ACK_SHIFT 5 /* QoS ACK shift */#define QOS_ACK_MASK 0x0060 /* QoS ACK mask */#define QOS_ACK(qos) (((qos) & QOS_ACK_MASK) >> QOS_ACK_SHIFT) /* QoS ACK */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -