📄 ieee80211.h.svn-base
字号:
/*- * Copyright (c) 2001 Atsushi Onoe * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * Alternatively, this software may be distributed under the terms of the * GNU General Public License ("GPL") version 2 as published by the Free * Software Foundation. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * $Id$ */#ifndef _NET80211_IEEE80211_H_#define _NET80211_IEEE80211_H_/* * 802.11 protocol definitions. */#define IEEE80211_ADDR_LEN 6 /* size of 802.11 address *//* is 802.11 address multicast/broadcast? */#define IEEE80211_IS_MULTICAST(_a) (*(_a) & 0x01)/* IEEE 802.11 PLCP header */struct ieee80211_plcp_hdr { u_int16_t i_sfd; u_int8_t i_signal; u_int8_t i_service; u_int16_t i_length; u_int16_t i_crc;} __packed;#define IEEE80211_PLCP_SFD 0xF3A0#define IEEE80211_PLCP_SERVICE 0x00/* * generic definitions for IEEE 802.11 frames */struct ieee80211_frame { 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]; u_int8_t i_addr3[IEEE80211_ADDR_LEN]; u_int8_t i_seq[2]; /* possibly followed by addr4[IEEE80211_ADDR_LEN]; */ /* see below */} __packed;struct ieee80211_qosframe { 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]; u_int8_t i_addr3[IEEE80211_ADDR_LEN]; u_int8_t i_seq[2]; u_int8_t i_qos[2]; /* possibly followed by addr4[IEEE80211_ADDR_LEN]; */ /* see below */} __packed;struct ieee80211_qoscntl { u_int8_t i_qos[2];};struct ieee80211_frame_addr4 { 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]; u_int8_t i_addr3[IEEE80211_ADDR_LEN]; u_int8_t i_seq[2]; u_int8_t i_addr4[IEEE80211_ADDR_LEN];} __packed;struct ieee80211_qosframe_addr4 { 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]; u_int8_t i_addr3[IEEE80211_ADDR_LEN]; u_int8_t i_seq[2]; u_int8_t i_addr4[IEEE80211_ADDR_LEN]; u_int8_t i_qos[2];} __packed;struct ieee80211_ctlframe_addr2 { u_int8_t i_fc[2]; __le16 i_aidordur; /* AID or duration */ u_int8_t i_addr1[IEEE80211_ADDR_LEN]; u_int8_t i_addr2[IEEE80211_ADDR_LEN];} __packed;#define IEEE80211_FC0_VERSION_MASK 0x03#define IEEE80211_FC0_VERSION_SHIFT 0#define IEEE80211_FC0_VERSION_0 0x00#define IEEE80211_FC0_TYPE_MASK 0x0c#define IEEE80211_FC0_TYPE_SHIFT 2#define IEEE80211_FC0_TYPE_MGT 0x00#define IEEE80211_FC0_TYPE_CTL 0x04#define IEEE80211_FC0_TYPE_DATA 0x08#define IEEE80211_FC0_SUBTYPE_MASK 0xf0#define IEEE80211_FC0_SUBTYPE_SHIFT 4/* for TYPE_MGT */#define IEEE80211_FC0_SUBTYPE_ASSOC_REQ 0x00#define IEEE80211_FC0_SUBTYPE_ASSOC_RESP 0x10#define IEEE80211_FC0_SUBTYPE_REASSOC_REQ 0x20#define IEEE80211_FC0_SUBTYPE_REASSOC_RESP 0x30#define IEEE80211_FC0_SUBTYPE_PROBE_REQ 0x40#define IEEE80211_FC0_SUBTYPE_PROBE_RESP 0x50#define IEEE80211_FC0_SUBTYPE_BEACON 0x80#define IEEE80211_FC0_SUBTYPE_ATIM 0x90#define IEEE80211_FC0_SUBTYPE_DISASSOC 0xa0#define IEEE80211_FC0_SUBTYPE_AUTH 0xb0#define IEEE80211_FC0_SUBTYPE_DEAUTH 0xc0#define IEEE80211_FC0_SUBTYPE_ACTION 0xd0/* for TYPE_CTL */#define IEEE80211_FC0_SUBTYPE_PS_POLL 0xa0#define IEEE80211_FC0_SUBTYPE_RTS 0xb0#define IEEE80211_FC0_SUBTYPE_CTS 0xc0#define IEEE80211_FC0_SUBTYPE_ACK 0xd0#define IEEE80211_FC0_SUBTYPE_CF_END 0xe0#define IEEE80211_FC0_SUBTYPE_CF_END_ACK 0xf0/* for TYPE_DATA (bit combination) */#define IEEE80211_FC0_SUBTYPE_DATA 0x00#define IEEE80211_FC0_SUBTYPE_CF_ACK 0x10#define IEEE80211_FC0_SUBTYPE_CF_POLL 0x20#define IEEE80211_FC0_SUBTYPE_CF_ACPL 0x30#define IEEE80211_FC0_SUBTYPE_NULL 0x40#define IEEE80211_FC0_SUBTYPE_CFACK 0x50#define IEEE80211_FC0_SUBTYPE_CFPOLL 0x60#define IEEE80211_FC0_SUBTYPE_CF_ACK_CF_ACK 0x70#define IEEE80211_FC0_SUBTYPE_QOS 0x80#define IEEE80211_FC0_SUBTYPE_QOS_NULL 0xc0#define IEEE80211_FC1_DIR_MASK 0x03#define IEEE80211_FC1_DIR_NODS 0x00 /* STA->STA */#define IEEE80211_FC1_DIR_TODS 0x01 /* STA->AP */#define IEEE80211_FC1_DIR_FROMDS 0x02 /* AP ->STA */#define IEEE80211_FC1_DIR_DSTODS 0x03 /* AP ->AP */#define IEEE80211_FC1_MORE_FRAG 0x04#define IEEE80211_FC1_RETRY 0x08#define IEEE80211_FC1_PWR_MGT 0x10#define IEEE80211_FC1_MORE_DATA 0x20#define IEEE80211_FC1_PROT 0x40#define IEEE80211_FC1_ORDER 0x80#define IEEE80211_SEQ_FRAG_MASK 0x000f#define IEEE80211_SEQ_FRAG_SHIFT 0#define IEEE80211_SEQ_SEQ_MASK 0xfff0#define IEEE80211_SEQ_SEQ_SHIFT 4#define IEEE80211_SEQ_LEQ(a,b) ((int)((a)-(b)) <= 0)#define IEEE80211_NWID_LEN 32#define IEEE80211_QOS_TXOP 0x00ff/* bit 8 is reserved */#define IEEE80211_QOS_ACKPOLICY 0x60#define IEEE80211_QOS_ACKPOLICY_S 5#define IEEE80211_QOS_EOSP 0x10#define IEEE80211_QOS_EOSP_S 4#define IEEE80211_QOS_TID 0x0f#define IEEE80211_FRM_HAS_BODY(_wh) \ (((_wh)->i_fc[0] & IEEE80211_FC0_TYPE_MASK) != \ IEEE80211_FC0_TYPE_CTL)/* * Country/Region Codes from MS WINNLS.H * Numbering from ISO 3166 * XXX belongs elsewhere */enum CountryCode { CTRY_ALBANIA = 8, /* Albania */ CTRY_ALGERIA = 12, /* Algeria */ CTRY_ARGENTINA = 32, /* Argentina */ CTRY_ARMENIA = 51, /* Armenia */ CTRY_AUSTRALIA = 36, /* Australia */ CTRY_AUSTRIA = 40, /* Austria */ CTRY_AZERBAIJAN = 31, /* Azerbaijan */ CTRY_BAHRAIN = 48, /* Bahrain */ CTRY_BELARUS = 112, /* Belarus */ CTRY_BELGIUM = 56, /* Belgium */ CTRY_BELIZE = 84, /* Belize */ CTRY_BOLIVIA = 68, /* Bolivia */ CTRY_BRAZIL = 76, /* Brazil */ CTRY_BRUNEI_DARUSSALAM = 96, /* Brunei Darussalam */ CTRY_BULGARIA = 100, /* Bulgaria */ CTRY_CANADA = 124, /* Canada */ CTRY_CHILE = 152, /* Chile */ CTRY_CHINA = 156, /* People's Republic of China */ CTRY_COLOMBIA = 170, /* Colombia */ CTRY_COSTA_RICA = 188, /* Costa Rica */ CTRY_CROATIA = 191, /* Croatia */ CTRY_CYPRUS = 196, CTRY_CZECH = 203, /* Czech Republic */ CTRY_DENMARK = 208, /* Denmark */ CTRY_DOMINICAN_REPUBLIC = 214, /* Dominican Republic */ CTRY_ECUADOR = 218, /* Ecuador */ CTRY_EGYPT = 818, /* Egypt */ CTRY_EL_SALVADOR = 222, /* El Salvador */ CTRY_ESTONIA = 233, /* Estonia */ CTRY_FAEROE_ISLANDS = 234, /* Faeroe Islands */ CTRY_FINLAND = 246, /* Finland */ CTRY_FRANCE = 250, /* France */ CTRY_FRANCE2 = 255, /* France2 */ CTRY_GEORGIA = 268, /* Georgia */ CTRY_GERMANY = 276, /* Germany */ CTRY_GREECE = 300, /* Greece */ CTRY_GUATEMALA = 320, /* Guatemala */ CTRY_HONDURAS = 340, /* Honduras */ CTRY_HONG_KONG = 344, /* Hong Kong S.A.R., P.R.C. */ CTRY_HUNGARY = 348, /* Hungary */ CTRY_ICELAND = 352, /* Iceland */ CTRY_INDIA = 356, /* India */ CTRY_INDONESIA = 360, /* Indonesia */ CTRY_IRAN = 364, /* Iran */ CTRY_IRAQ = 368, /* Iraq */ CTRY_IRELAND = 372, /* Ireland */ CTRY_ISRAEL = 376, /* Israel */ CTRY_ITALY = 380, /* Italy */ CTRY_JAMAICA = 388, /* Jamaica */ CTRY_JAPAN = 392, /* Japan */ CTRY_JAPAN1 = 393, /* Japan (JP1) */ CTRY_JAPAN2 = 394, /* Japan (JP0) */ CTRY_JAPAN3 = 395, /* Japan (JP1-1) */ CTRY_JAPAN4 = 396, /* Japan (JE1) */ CTRY_JAPAN5 = 397, /* Japan (JE2) */ CTRY_JAPAN6 = 399, /* Japan (JP6) */ CTRY_JAPAN7 = 900, /* Japan */ CTRY_JAPAN8 = 901, /* Japan */ CTRY_JAPAN9 = 902, /* Japan */ CTRY_JAPAN10 = 903, /* Japan */ CTRY_JAPAN11 = 904, /* Japan */ CTRY_JAPAN12 = 905, /* Japan */ CTRY_JAPAN13 = 906, /* Japan */ CTRY_JAPAN14 = 907, /* Japan */ CTRY_JAPAN15 = 908, /* Japan */ CTRY_JAPAN16 = 909, /* Japan */ CTRY_JAPAN17 = 910, /* Japan */ CTRY_JAPAN18 = 911, /* Japan */ CTRY_JAPAN19 = 912, /* Japan */ CTRY_JAPAN20 = 913, /* Japan */ CTRY_JAPAN21 = 914, /* Japan */ CTRY_JAPAN22 = 915, /* Japan */ CTRY_JAPAN23 = 916, /* Japan */ CTRY_JAPAN24 = 917, /* Japan */ CTRY_JAPAN25 = 918, /* Japan */ CTRY_JAPAN26 = 919, /* Japan */ CTRY_JAPAN27 = 920, /* Japan */ CTRY_JAPAN28 = 921, /* Japan */ CTRY_JAPAN29 = 922, /* Japan */ CTRY_JAPAN30 = 923, /* Japan */ CTRY_JAPAN31 = 924, /* Japan */ CTRY_JAPAN32 = 925, /* Japan */ CTRY_JAPAN33 = 926, /* Japan */ CTRY_JAPAN34 = 927, /* Japan */ CTRY_JAPAN35 = 928, /* Japan */ CTRY_JAPAN36 = 929, /* Japan */ CTRY_JAPAN37 = 930, /* Japan */ CTRY_JAPAN38 = 931, /* Japan */ CTRY_JAPAN39 = 932, /* Japan */ CTRY_JAPAN40 = 933, /* Japan */ CTRY_JAPAN41 = 934, /* Japan */ CTRY_JAPAN42 = 935, /* Japan */ CTRY_JAPAN43 = 936, /* Japan */ CTRY_JAPAN44 = 937, /* Japan */ CTRY_JAPAN45 = 938, /* Japan */ CTRY_JAPAN46 = 939, /* Japan */ CTRY_JAPAN47 = 940, /* Japan */ CTRY_JAPAN48 = 941, /* Japan */ CTRY_JORDAN = 400, /* Jordan */ CTRY_KAZAKHSTAN = 398, /* Kazakhstan */ CTRY_KENYA = 404, /* Kenya */ CTRY_KOREA_NORTH = 408, /* North Korea */ CTRY_KOREA_ROC = 410, /* South Korea */ CTRY_KOREA_ROC2 = 411, /* South Korea */ CTRY_KUWAIT = 414, /* Kuwait */ CTRY_LATVIA = 428, /* Latvia */ CTRY_LEBANON = 422, /* Lebanon */ CTRY_LIBYA = 434, /* Libya */ CTRY_LIECHTENSTEIN = 438, /* Liechtenstein */ CTRY_LITHUANIA = 440, /* Lithuania */ CTRY_LUXEMBOURG = 442, /* Luxembourg */ CTRY_MACAU = 446, /* Macau */ CTRY_MACEDONIA = 807, /* the Former Yugoslav Republic of Macedonia */ CTRY_MALAYSIA = 458, /* Malaysia */ CTRY_MEXICO = 484, /* Mexico */ CTRY_MONACO = 492, /* Principality of Monaco */ CTRY_MOROCCO = 504, /* Morocco */ CTRY_NETHERLANDS = 528, /* Netherlands */ CTRY_NEW_ZEALAND = 554, /* New Zealand */ CTRY_NICARAGUA = 558, /* Nicaragua */ CTRY_NORWAY = 578, /* Norway */ CTRY_OMAN = 512, /* Oman */ CTRY_PAKISTAN = 586, /* Islamic Republic of Pakistan */ CTRY_PANAMA = 591, /* Panama */ CTRY_PARAGUAY = 600, /* Paraguay */ CTRY_PERU = 604, /* Peru */ CTRY_PHILIPPINES = 608, /* Republic of the Philippines */ CTRY_POLAND = 616, /* Poland */ CTRY_PORTUGAL = 620, /* Portugal */ CTRY_PUERTO_RICO = 630, /* Puerto Rico */ CTRY_QATAR = 634, /* Qatar */ CTRY_ROMANIA = 642, /* Romania */ CTRY_RUSSIA = 643, /* Russia */ CTRY_SAUDI_ARABIA = 682, /* Saudi Arabia */ CTRY_SINGAPORE = 702, /* Singapore */ CTRY_SLOVAKIA = 703, /* Slovak Republic */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -