📄 ieee80211.h
字号:
u_int8_t param_len; u_int8_t param_oui[3]; u_int8_t param_oui_type; u_int8_t param_oui_sybtype; u_int8_t param_version; u_int8_t param_qosInfo; u_int8_t param_reserved; struct ieee80211_wme_acparams params_acParams[WME_NUM_AC];} __packed;/* * WME U-APSD qos info field defines */#define WME_CAPINFO_UAPSD_EN 0x00000080#define WME_CAPINFO_UAPSD_VO 0x00000001#define WME_CAPINFO_UAPSD_VI 0x00000002#define WME_CAPINFO_UAPSD_BK 0x00000004#define WME_CAPINFO_UAPSD_BE 0x00000008#define WME_CAPINFO_UAPSD_ACFLAGS_SHIFT 0#define WME_CAPINFO_UAPSD_ACFLAGS_MASK 0xF#define WME_CAPINFO_UAPSD_MAXSP_SHIFT 5#define WME_CAPINFO_UAPSD_MAXSP_MASK 0x3#define WME_CAPINFO_IE_OFFSET 8#define WME_UAPSD_MAXSP(_qosinfo) (((_qosinfo) >> WME_CAPINFO_UAPSD_MAXSP_SHIFT) & WME_CAPINFO_UAPSD_MAXSP_MASK)#define WME_UAPSD_AC_ENABLED(_ac, _qosinfo) ( (1<<(3 - (_ac))) & \ (((_qosinfo) >> WME_CAPINFO_UAPSD_ACFLAGS_SHIFT) & WME_CAPINFO_UAPSD_ACFLAGS_MASK) )/* * Atheros Advanced Capability information element. */struct ieee80211_ie_athAdvCap { u_int8_t athAdvCap_id; /* IEEE80211_ELEMID_VENDOR */ u_int8_t athAdvCap_len; /* length in bytes */ u_int8_t athAdvCap_oui[3]; /* 0x00, 0x03, 0x7f */ u_int8_t athAdvCap_type; /* OUI type */ u_int8_t athAdvCap_subtype; /* OUI subtype */ u_int8_t athAdvCap_version; /* spec revision */ u_int8_t athAdvCap_capability; /* Capability info */ u_int16_t athAdvCap_defKeyIndex;} __packed;/* * Atheros XR information element. */struct ieee80211_xr_param { u_int8_t param_id; u_int8_t param_len; u_int8_t param_oui[3]; u_int8_t param_oui_type; u_int8_t param_oui_sybtype; u_int8_t param_version; u_int8_t param_Info; u_int8_t param_base_bssid[IEEE80211_ADDR_LEN]; u_int8_t param_xr_bssid[IEEE80211_ADDR_LEN]; u_int16_t param_xr_beacon_interval; u_int8_t param_base_ath_capability; u_int8_t param_xr_ath_capability;} __packed;/* Atheros capabilities */#define IEEE80211_ATHC_TURBOP 0x0001 /* Turbo Prime */#define IEEE80211_ATHC_COMP 0x0002 /* Compression */#define IEEE80211_ATHC_FF 0x0004 /* Fast Frames */#define IEEE80211_ATHC_XR 0x0008 /* Xtended Range support */#define IEEE80211_ATHC_AR 0x0010 /* Advanced Radar support */#define IEEE80211_ATHC_BURST 0x0020 /* Bursting - not negotiated */#define IEEE80211_ATHC_WME 0x0040 /* CWMin tuning */#define IEEE80211_ATHC_BOOST 0x0080 /* Boost *//* * Management Notification Frame */struct ieee80211_mnf { u_int8_t mnf_category; u_int8_t mnf_action; u_int8_t mnf_dialog; u_int8_t mnf_status;} __packed;#define MNF_SETUP_REQ 0#define MNF_SETUP_RESP 1#define MNF_TEARDOWN 2/* * Control frames. */struct ieee80211_frame_min { u_int8_t i_fc[2]; u_int8_t i_dur[2]; u_int8_t i_addr1[IEEE80211_ADDR_LEN]; u_int8_t i_addr2[IEEE80211_ADDR_LEN]; /* FCS */} __packed;struct ieee80211_frame_rts { u_int8_t i_fc[2]; u_int8_t i_dur[2]; u_int8_t i_ra[IEEE80211_ADDR_LEN]; u_int8_t i_ta[IEEE80211_ADDR_LEN]; /* FCS */} __packed;struct ieee80211_frame_cts { u_int8_t i_fc[2]; u_int8_t i_dur[2]; u_int8_t i_ra[IEEE80211_ADDR_LEN]; /* FCS */} __packed;struct ieee80211_frame_ack { u_int8_t i_fc[2]; u_int8_t i_dur[2]; u_int8_t i_ra[IEEE80211_ADDR_LEN]; /* FCS */} __packed;struct ieee80211_frame_pspoll { u_int8_t i_fc[2]; u_int8_t i_aid[2]; u_int8_t i_bssid[IEEE80211_ADDR_LEN]; u_int8_t i_ta[IEEE80211_ADDR_LEN]; /* FCS */} __packed;struct ieee80211_frame_cfend { /* NB: also CF-End+CF-Ack */ u_int8_t i_fc[2]; u_int8_t i_dur[2]; /* should be zero */ u_int8_t i_ra[IEEE80211_ADDR_LEN]; u_int8_t i_bssid[IEEE80211_ADDR_LEN]; /* FCS */} __packed;/* * BEACON management packets * * octet timestamp[8] * octet beacon interval[2] * octet capability information[2] * information element * octet elemid * octet length * octet information[length] */typedef u_int8_t *ieee80211_mgt_beacon_t;#define IEEE80211_BEACON_INTERVAL(beacon) \ ((beacon)[8] | ((beacon)[9] << 8))#define IEEE80211_BEACON_CAPABILITY(beacon) \ ((beacon)[10] | ((beacon)[11] << 8))#define IEEE80211_CAPINFO_ESS 0x0001#define IEEE80211_CAPINFO_IBSS 0x0002#define IEEE80211_CAPINFO_CF_POLLABLE 0x0004#define IEEE80211_CAPINFO_CF_POLLREQ 0x0008#define IEEE80211_CAPINFO_PRIVACY 0x0010#define IEEE80211_CAPINFO_SHORT_PREAMBLE 0x0020#define IEEE80211_CAPINFO_PBCC 0x0040#define IEEE80211_CAPINFO_CHNL_AGILITY 0x0080/* bits 8-9 are reserved (8 now for specturm management) */#define IEEE80211_CAPINFO_SPECTRUM_MGMT 0x0100#define IEEE80211_CAPINFO_SHORT_SLOTTIME 0x0400#define IEEE80211_CAPINFO_RSN 0x0800/* bit 12 is reserved */#define IEEE80211_CAPINFO_DSSSOFDM 0x2000/* bits 14-15 are reserved *//* * 802.11i/WPA information element (maximally sized). */struct ieee80211_ie_wpa { u_int8_t wpa_id; /* IEEE80211_ELEMID_VENDOR */ u_int8_t wpa_len; /* length in bytes */ u_int8_t wpa_oui[3]; /* 0x00, 0x50, 0xf2 */ u_int8_t wpa_type; /* OUI type */ u_int16_t wpa_version; /* spec revision */ u_int32_t wpa_mcipher[1]; /* multicast/group key cipher */ u_int16_t wpa_uciphercnt; /* # pairwise key ciphers */ u_int32_t wpa_uciphers[8]; /* ciphers */ u_int16_t wpa_authselcnt; /* authentication selector cnt*/ u_int32_t wpa_authsels[8]; /* selectors */ u_int16_t wpa_caps; /* 802.11i capabilities */ u_int16_t wpa_pmkidcnt; /* 802.11i pmkid count */ u_int16_t wpa_pmkids[8]; /* 802.11i pmkids */} __packed;/* * Management information element payloads. */enum { IEEE80211_ELEMID_SSID = 0, IEEE80211_ELEMID_RATES = 1, IEEE80211_ELEMID_FHPARMS = 2, IEEE80211_ELEMID_DSPARMS = 3, IEEE80211_ELEMID_CFPARMS = 4, IEEE80211_ELEMID_TIM = 5, IEEE80211_ELEMID_IBSSPARMS = 6, IEEE80211_ELEMID_COUNTRY = 7, IEEE80211_ELEMID_REQINFO = 10, IEEE80211_ELEMID_CHALLENGE = 16, /* 17-31 reserved for challenge text extension */ IEEE80211_ELEMID_PWRCNSTR = 32, IEEE80211_ELEMID_PWRCAP = 33, IEEE80211_ELEMID_TPCREQ = 34, IEEE80211_ELEMID_TPCREP = 35, IEEE80211_ELEMID_SUPPCHAN = 36, IEEE80211_ELEMID_CHANSWITCHANN = 37, IEEE80211_ELEMID_MEASREQ = 38, IEEE80211_ELEMID_MEASREP = 39, IEEE80211_ELEMID_QUIET = 40, IEEE80211_ELEMID_IBSSDFS = 41, IEEE80211_ELEMID_ERP = 42, IEEE80211_ELEMID_RSN = 48, IEEE80211_ELEMID_XRATES = 50, IEEE80211_ELEMID_TPC = 150, IEEE80211_ELEMID_CCKM = 156, IEEE80211_ELEMID_VENDOR = 221, /* vendor private */};#define IEEE80211_CHANSWITCHANN_BYTES 5struct ieee80211_tim_ie { u_int8_t tim_ie; /* IEEE80211_ELEMID_TIM */ u_int8_t tim_len; u_int8_t tim_count; /* DTIM count */ u_int8_t tim_period; /* DTIM period */ u_int8_t tim_bitctl; /* bitmap control */ u_int8_t tim_bitmap[1]; /* variable-length bitmap */} __packed;struct ieee80211_country_ie { u_int8_t ie; /* IEEE80211_ELEMID_COUNTRY */ u_int8_t len; u_int8_t cc[3]; /* ISO CC+(I)ndoor/(O)utdoor */ struct { u_int8_t schan; /* starting channel */ u_int8_t nchan; /* number channels */ u_int8_t maxtxpwr; /* tx power cap */ } __packed band[4]; /* up to 4 sub bands */} __packed;#define IEEE80211_CHALLENGE_LEN 128#define IEEE80211_SUPPCHAN_LEN 26#define IEEE80211_RATE_BASIC 0x80#define IEEE80211_RATE_VAL 0x7f/* EPR information element flags */#define IEEE80211_ERP_NON_ERP_PRESENT 0x01#define IEEE80211_ERP_USE_PROTECTION 0x02#define IEEE80211_ERP_LONG_PREAMBLE 0x04/* Atheros private advanced capabilities info */#define ATHEROS_CAP_TURBO_PRIME 0x01#define ATHEROS_CAP_COMPRESSION 0x02#define ATHEROS_CAP_FAST_FRAME 0x04/* bits 3-6 reserved */#define ATHEROS_CAP_BOOST 0x80#define ATH_OUI 0x7f0300 /* Atheros OUI */#define ATH_OUI_TYPE 0x01#define ATH_OUI_SUBTYPE 0x01#define ATH_OUI_VERSION 0x00#define ATH_OUI_TYPE_XR 0x03#define ATH_OUI_VER_XR 0x01#define WPA_OUI 0xf25000#define WPA_OUI_TYPE 0x01#define WPA_VERSION 1 /* current supported version */#define WPA_CSE_NULL 0x00#define WPA_CSE_WEP40 0x01#define WPA_CSE_TKIP 0x02#define WPA_CSE_CCMP 0x04#define WPA_CSE_WEP104 0x05#define WPA_ASE_NONE 0x00#define WPA_ASE_8021X_UNSPEC 0x01#define WPA_ASE_8021X_PSK 0x02#define RSN_OUI 0xac0f00#define RSN_VERSION 1 /* current supported version */#define RSN_CSE_NULL 0x00#define RSN_CSE_WEP40 0x01#define RSN_CSE_TKIP 0x02#define RSN_CSE_WRAP 0x03#define RSN_CSE_CCMP 0x04#define RSN_CSE_WEP104 0x05#define RSN_ASE_NONE 0x00#define RSN_ASE_8021X_UNSPEC 0x01#define RSN_ASE_8021X_PSK 0x02#define RSN_CAP_PREAUTH 0x01#define WME_OUI 0xf25000#define WME_OUI_TYPE 0x02#define WME_INFO_OUI_SUBTYPE 0x00#define WME_PARAM_OUI_SUBTYPE 0x01#define WME_VERSION 1/* WME stream classes */#define WME_AC_BE 0 /* best effort */#define WME_AC_BK 1 /* background */#define WME_AC_VI 2 /* video */#define WME_AC_VO 3 /* voice *//* * AUTH management packets * * octet algo[2] * octet seq[2] * octet status[2] * octet chal.id * octet chal.length * octet chal.text[253] */typedef u_int8_t *ieee80211_mgt_auth_t;#define IEEE80211_AUTH_ALGORITHM(auth) \ ((auth)[0] | ((auth)[1] << 8))#define IEEE80211_AUTH_TRANSACTION(auth) \ ((auth)[2] | ((auth)[3] << 8))#define IEEE80211_AUTH_STATUS(auth) \ ((auth)[4] | ((auth)[5] << 8))#define IEEE80211_AUTH_ALG_OPEN 0x0000#define IEEE80211_AUTH_ALG_SHARED 0x0001#define IEEE80211_AUTH_ALG_LEAP 0x0080enum { IEEE80211_AUTH_OPEN_REQUEST = 1, IEEE80211_AUTH_OPEN_RESPONSE = 2,};enum { IEEE80211_AUTH_SHARED_REQUEST = 1, IEEE80211_AUTH_SHARED_CHALLENGE = 2, IEEE80211_AUTH_SHARED_RESPONSE = 3, IEEE80211_AUTH_SHARED_PASS = 4,};/* * Reason codes * * Unlisted codes are reserved */enum { IEEE80211_REASON_UNSPECIFIED = 1, IEEE80211_REASON_AUTH_EXPIRE = 2, IEEE80211_REASON_AUTH_LEAVE = 3, IEEE80211_REASON_ASSOC_EXPIRE = 4, IEEE80211_REASON_ASSOC_TOOMANY = 5, IEEE80211_REASON_NOT_AUTHED = 6, IEEE80211_REASON_NOT_ASSOCED = 7, IEEE80211_REASON_ASSOC_LEAVE = 8, IEEE80211_REASON_ASSOC_NOT_AUTHED = 9, IEEE80211_REASON_RSN_REQUIRED = 11, IEEE80211_REASON_RSN_INCONSISTENT = 12, IEEE80211_REASON_IE_INVALID = 13, IEEE80211_REASON_MIC_FAILURE = 14, IEEE80211_STATUS_SUCCESS = 0, IEEE80211_STATUS_UNSPECIFIED = 1, IEEE80211_STATUS_CAPINFO = 10, IEEE80211_STATUS_NOT_ASSOCED = 11, IEEE80211_STATUS_OTHER = 12, IEEE80211_STATUS_ALG = 13, IEEE80211_STATUS_SEQUENCE = 14, IEEE80211_STATUS_CHALLENGE = 15, IEEE80211_STATUS_TIMEOUT = 16, IEEE80211_STATUS_TOOMANY = 17, IEEE80211_STATUS_BASIC_RATE = 18, IEEE80211_STATUS_SP_REQUIRED = 19, IEEE80211_STATUS_PBCC_REQUIRED = 20, IEEE80211_STATUS_CA_REQUIRED = 21, IEEE80211_STATUS_TOO_MANY_STATIONS = 22, IEEE80211_STATUS_RATES = 23, IEEE80211_STATUS_SHORTSLOT_REQUIRED = 25, IEEE80211_STATUS_DSSSOFDM_REQUIRED = 26,};#define IEEE80211_WEP_KEYLEN 5 /* 40bit */#define IEEE80211_WEP_IVLEN 3 /* 24bit */#define IEEE80211_WEP_KIDLEN 1 /* 1 octet */#define IEEE80211_WEP_CRCLEN 4 /* CRC-32 */#define IEEE80211_WEP_NKID 4 /* number of key ids *//* * 802.11i defines an extended IV for use with non-WEP ciphers. * When the EXTIV bit is set in the key id byte an additional * 4 bytes immediately follow the IV for TKIP. For CCMP the * EXTIV bit is likewise set but the 8 bytes represent the * CCMP header rather than IV+extended-IV. */#define IEEE80211_WEP_EXTIV 0x20#define IEEE80211_WEP_EXTIVLEN 4 /* extended IV length */#define IEEE80211_WEP_MICLEN 8 /* trailing MIC */#define IEEE80211_CRC_LEN 4/* * Maximum acceptable MTU is: * IEEE80211_MAX_LEN - WEP overhead - CRC - * QoS overhead - RSN/WPA overhead * Min is arbitrarily chosen > IEEE80211_MIN_LEN. The default * mtu is Ethernet-compatible; it's set by ether_ifattach. */#define IEEE80211_MTU_MAX 2290#define IEEE80211_MTU_MIN 32#define IEEE80211_MAX_LEN (2300 + IEEE80211_CRC_LEN + \ (IEEE80211_WEP_IVLEN + IEEE80211_WEP_KIDLEN + IEEE80211_WEP_CRCLEN))#define IEEE80211_ACK_LEN \ (sizeof(struct ieee80211_frame_ack) + IEEE80211_CRC_LEN)#define IEEE80211_MIN_LEN \ (sizeof(struct ieee80211_frame_min) + IEEE80211_CRC_LEN)/* * The 802.11 spec says at most 2007 stations may be * associated at once. For most AP's this is way more * than is feasible so we use a default of 128. This * number may be overridden by the driver and/or by * user configuration. */#define IEEE80211_AID_MAX 2007#define IEEE80211_AID_DEF 128#define IEEE80211_AID(b) ((b) &~ 0xc000)/* * RTS frame length parameters. The default is specified in * the 802.11 spec. The max may be wrong for jumbo frames. */#define IEEE80211_RTS_DEFAULT 512#define IEEE80211_RTS_MIN 1#define IEEE80211_RTS_MAX 2346/* * Regulatory extention identifier for country IE. */#define IEEE80211_REG_EXT_ID 201/* * IEEE 802.11 timer synchronization function (TSF) timestamp length */#define IEEE80211_TSF_LEN 8#endif /* _NET80211_IEEE80211_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -