📄 ieee80211.h.svn-base
字号:
CTRY_SLOVENIA = 705, /* Slovenia */ CTRY_SOUTH_AFRICA = 710, /* South Africa */ CTRY_SPAIN = 724, /* Spain */ CTRY_SWEDEN = 752, /* Sweden */ CTRY_SWITZERLAND = 756, /* Switzerland */ CTRY_SYRIA = 760, /* Syria */ CTRY_TAIWAN = 158, /* Taiwan */ CTRY_THAILAND = 764, /* Thailand */ CTRY_TRINIDAD_Y_TOBAGO = 780, /* Trinidad y Tobago */ CTRY_TUNISIA = 788, /* Tunisia */ CTRY_TURKEY = 792, /* Turkey */ CTRY_UAE = 784, /* U.A.E. */ CTRY_UKRAINE = 804, /* Ukraine */ CTRY_UNITED_KINGDOM = 826, /* United Kingdom */ CTRY_UNITED_STATES = 840, /* United States */ CTRY_UNITED_STATES_FCC49 = 842, /* United States (Public Safety)*/ CTRY_URUGUAY = 858, /* Uruguay */ CTRY_UZBEKISTAN = 860, /* Uzbekistan */ CTRY_VENEZUELA = 862, /* Venezuela */ CTRY_VIET_NAM = 704, /* Viet Nam */ CTRY_YEMEN = 887, /* Yemen */ CTRY_ZIMBABWE = 716 /* Zimbabwe */};/* * Generic information element */struct ieee80211_ie { u_int8_t id; u_int8_t len; u_int8_t info[0];} __packed;/* * Country information element. */#define IEEE80211_COUNTRY_MAX_TRIPLETS (83)struct ieee80211_ie_country { u_int8_t country_id; u_int8_t country_len; u_int8_t country_str[3]; u_int8_t country_triplet[IEEE80211_COUNTRY_MAX_TRIPLETS * 3];} __packed;/* * Power Constraint information element. */struct ieee80211_ie_pwrcnstr { u_int8_t pc_id; /* IEEE80211_ELEMID_PWRCNSTR */ u_int8_t pc_len; /* == 2 */ u_int8_t pc_lpc; /* Local Power Constraint [dB] */} __packed;/* * Power Capability information element. */struct ieee80211_ie_pwrcap { u_int8_t pc_id; /* IEEE80211_ELEMID_PWRCAP */ u_int8_t pc_len; /* == 2 */ int8_t pc_mintxpow; /* Minimum Transmit Power Capability [dBm] */ int8_t pc_maxtxpow; /* Maximum Transmit Power Capability [dBm] */} __packed;/* * Supported Channels information element. */#define IEEE80211_SUPPCHAN_MAX_PAIRS (127)struct ieee80211_ie_sc { u_int8_t sc_id; /* IEEE80211_ELEMID_SUPPCHAN */ u_int8_t sc_len; /* == 2 * number of sc_subband elements */ struct { u_int8_t sc_first; /* First Channel Number */ u_int8_t sc_number; /* Number of Channels */ } __packed sc_subband[IEEE80211_SUPPCHAN_MAX_PAIRS];} __packed;/* * Channel Switch Announcement information element. */struct ieee80211_ie_csa { u_int8_t csa_id; /* IEEE80211_ELEMID_CHANSWITCHANN */ u_int8_t csa_len; /* == 3 */ u_int8_t csa_mode; /* Channel Switch Mode: 1 == stop transmission until CS */ u_int8_t csa_chan; /* New Channel Number */ u_int8_t csa_count; /* TBTTs until Channel Switch happens */} __packed;/* minimal Channel Switch Count in the initial announcement */#define IEEE80211_CSA_PROTECTION_PERIOD 3/* maximum allowed deviance of measurement of intervals between CSA in Beacons */#define IEEE80211_CSA_SANITY_THRESHOLD 100/* does frame have QoS sequence control data */#define IEEE80211_QOS_HAS_SEQ(wh) \ (((wh)->i_fc[0] & \ (IEEE80211_FC0_TYPE_MASK | IEEE80211_FC0_SUBTYPE_QOS)) == \ (IEEE80211_FC0_TYPE_DATA | IEEE80211_FC0_SUBTYPE_QOS))#define WME_QOSINFO_COUNT 0x0f /* Mask for Param Set Count field *//* * WME/802.11e information element. */struct ieee80211_ie_wme { u_int8_t wme_id; /* IEEE80211_ELEMID_VENDOR */ u_int8_t wme_len; /* length in bytes */ u_int8_t wme_oui[3]; /* 0x00, 0x50, 0xf2 */ u_int8_t wme_type; /* OUI type */ u_int8_t wme_subtype; /* OUI subtype */ u_int8_t wme_version; /* spec revision */ u_int8_t wme_info; /* QoS info */} __packed;/* * WME/802.11e Tspec Element */struct ieee80211_wme_tspec { u_int8_t ts_id; u_int8_t ts_len; u_int8_t ts_oui[3]; u_int8_t ts_oui_type; u_int8_t ts_oui_subtype; u_int8_t ts_version; u_int8_t ts_tsinfo[3]; u_int8_t ts_nom_msdu[2]; u_int8_t ts_max_msdu[2]; u_int8_t ts_min_svc[4]; u_int8_t ts_max_svc[4]; u_int8_t ts_inactv_intv[4]; u_int8_t ts_susp_intv[4]; u_int8_t ts_start_svc[4]; u_int8_t ts_min_rate[4]; u_int8_t ts_mean_rate[4]; u_int8_t ts_max_burst[4]; u_int8_t ts_min_phy[4]; u_int8_t ts_peak_rate[4]; u_int8_t ts_delay[4]; u_int8_t ts_surplus[2]; u_int8_t ts_medium_time[2];} __packed;/* * WME AC parameter field */struct ieee80211_wme_acparams { u_int8_t acp_aci_aifsn; u_int8_t acp_logcwminmax; u_int16_t acp_txop;} __packed;#define IEEE80211_WME_PARAM_LEN 24#define WME_NUM_AC 4 /* 4 AC categories */#define WME_PARAM_ACI 0x60 /* Mask for ACI field */#define WME_PARAM_ACI_S 5 /* Shift for ACI field */#define WME_PARAM_ACM 0x10 /* Mask for ACM bit */#define WME_PARAM_ACM_S 4 /* Shift for ACM bit */#define WME_PARAM_AIFSN 0x0f /* Mask for aifsn field */#define WME_PARAM_AIFSN_S 0 /* Shift for aifsn field */#define WME_PARAM_LOGCWMIN 0x0f /* Mask for CwMin field (in log) */#define WME_PARAM_LOGCWMIN_S 0 /* Shift for CwMin field */#define WME_PARAM_LOGCWMAX 0xf0 /* Mask for CwMax field (in log) */#define WME_PARAM_LOGCWMAX_S 4 /* Shift for CwMax field */#define WME_AC_TO_TID(_ac) ( \ ((_ac) == WME_AC_VO) ? 6 : \ ((_ac) == WME_AC_VI) ? 5 : \ ((_ac) == WME_AC_BK) ? 1 : \ 0)#define TID_TO_WME_AC(_tid) ( \ ((_tid) < 1) ? WME_AC_BE : \ ((_tid) < 3) ? WME_AC_BK : \ ((_tid) < 6) ? WME_AC_VI : \ WME_AC_VO)/* * WME Parameter Element */struct ieee80211_wme_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_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]; __le16 i_dur; 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]; __le16 i_dur; 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]; __le16 i_dur; u_int8_t i_ra[IEEE80211_ADDR_LEN]; /* FCS */} __packed;struct ieee80211_frame_ack { u_int8_t i_fc[2]; __le16 i_dur; 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]; __le16 i_dur; /* 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) \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -