2 * Copyright (c) 2005-2008 Sam Leffler, Errno Consulting
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
15 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
16 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
18 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 #ifndef _NET80211_IEEE80211_REGDOMAIN_H_
28 #define _NET80211_IEEE80211_REGDOMAIN_H_
31 * 802.11 regulatory domain definitions.
35 * ISO 3166 Country/Region Codes
36 * http://ftp.ics.uci.edu/pub/ietf/http/related/iso3166.txt
40 CTRY_ALBANIA = 8, /* Albania */
41 CTRY_ALGERIA = 12, /* Algeria */
42 CTRY_AMERICAN_SAMOA = 16,
47 CTRY_ANTIGUA = 28, /* Antigua and Barbuda */
48 CTRY_ARGENTINA = 32, /* Argentina */
49 CTRY_ARMENIA = 51, /* Armenia */
50 CTRY_ARUBA = 533, /* Aruba */
51 CTRY_AUSTRALIA = 36, /* Australia */
52 CTRY_AUSTRIA = 40, /* Austria */
53 CTRY_AZERBAIJAN = 31, /* Azerbaijan */
54 CTRY_BAHAMAS = 44, /* Bahamas */
55 CTRY_BAHRAIN = 48, /* Bahrain */
56 CTRY_BANGLADESH = 50, /* Bangladesh */
58 CTRY_BELARUS = 112, /* Belarus */
59 CTRY_BELGIUM = 56, /* Belgium */
64 CTRY_BOLIVIA = 68, /* Bolivia */
65 CTRY_BOSNIA_AND_HERZEGOWINA = 70,
67 CTRY_BOUVET_ISLAND = 74,
68 CTRY_BRAZIL = 76, /* Brazil */
69 CTRY_BRITISH_INDIAN_OCEAN_TERRITORY = 86,
70 CTRY_BRUNEI_DARUSSALAM = 96, /* Brunei Darussalam */
71 CTRY_BULGARIA = 100, /* Bulgaria */
72 CTRY_BURKINA_FASO = 854,
76 CTRY_CANADA = 124, /* Canada */
77 CTRY_CAPE_VERDE = 132,
78 CTRY_CAYMAN_ISLANDS = 136,
79 CTRY_CENTRAL_AFRICAN_REPUBLIC = 140,
81 CTRY_CHILE = 152, /* Chile */
82 CTRY_CHINA = 156, /* People's Republic of China */
83 CTRY_CHRISTMAS_ISLAND = 162,
84 CTRY_COCOS_ISLANDS = 166,
85 CTRY_COLOMBIA = 170, /* Colombia */
88 CTRY_COOK_ISLANDS = 184,
89 CTRY_COSTA_RICA = 188, /* Costa Rica */
90 CTRY_COTE_DIVOIRE = 384,
91 CTRY_CROATIA = 191, /* Croatia (local name: Hrvatska) */
92 CTRY_CYPRUS = 196, /* Cyprus */
93 CTRY_CZECH = 203, /* Czech Republic */
94 CTRY_DENMARK = 208, /* Denmark */
97 CTRY_DOMINICAN_REPUBLIC = 214, /* Dominican Republic */
98 CTRY_EAST_TIMOR = 626,
99 CTRY_ECUADOR = 218, /* Ecuador */
100 CTRY_EGYPT = 818, /* Egypt */
101 CTRY_EL_SALVADOR = 222, /* El Salvador */
102 CTRY_EQUATORIAL_GUINEA = 226,
104 CTRY_ESTONIA = 233, /* Estonia */
106 CTRY_FALKLAND_ISLANDS = 238, /* (Malvinas) */
107 CTRY_FAEROE_ISLANDS = 234, /* Faeroe Islands */
109 CTRY_FINLAND = 246, /* Finland */
110 CTRY_FRANCE = 250, /* France */
111 CTRY_FRANCE2 = 255, /* France (Metropolitan) */
112 CTRY_FRENCH_GUIANA = 254,
113 CTRY_FRENCH_POLYNESIA = 258,
114 CTRY_FRENCH_SOUTHERN_TERRITORIES = 260,
117 CTRY_GEORGIA = 268, /* Georgia */
118 CTRY_GERMANY = 276, /* Germany */
120 CTRY_GIBRALTAR = 292,
121 CTRY_GREECE = 300, /* Greece */
122 CTRY_GREENLAND = 304,
124 CTRY_GUADELOUPE = 312,
126 CTRY_GUATEMALA = 320, /* Guatemala */
128 CTRY_GUINEA_BISSAU = 624,
130 /* XXX correct remainder */
132 CTRY_HONDURAS = 340, /* Honduras */
133 CTRY_HONG_KONG = 344, /* Hong Kong S.A.R., P.R.C. */
134 CTRY_HUNGARY = 348, /* Hungary */
135 CTRY_ICELAND = 352, /* Iceland */
136 CTRY_INDIA = 356, /* India */
137 CTRY_INDONESIA = 360, /* Indonesia */
138 CTRY_IRAN = 364, /* Iran */
139 CTRY_IRAQ = 368, /* Iraq */
140 CTRY_IRELAND = 372, /* Ireland */
141 CTRY_ISRAEL = 376, /* Israel */
142 CTRY_ITALY = 380, /* Italy */
143 CTRY_JAMAICA = 388, /* Jamaica */
144 CTRY_JAPAN = 392, /* Japan */
145 CTRY_JAPAN1 = 393, /* Japan (JP1) */
146 CTRY_JAPAN2 = 394, /* Japan (JP0) */
147 CTRY_JAPAN3 = 395, /* Japan (JP1-1) */
148 CTRY_JAPAN4 = 396, /* Japan (JE1) */
149 CTRY_JAPAN5 = 397, /* Japan (JE2) */
150 CTRY_JORDAN = 400, /* Jordan */
151 CTRY_KAZAKHSTAN = 398, /* Kazakhstan */
152 CTRY_KENYA = 404, /* Kenya */
153 CTRY_KOREA_NORTH = 408, /* North Korea */
154 CTRY_KOREA_ROC = 410, /* South Korea */
155 CTRY_KOREA_ROC2 = 411, /* South Korea */
156 CTRY_KUWAIT = 414, /* Kuwait */
157 CTRY_LATVIA = 428, /* Latvia */
158 CTRY_LEBANON = 422, /* Lebanon */
159 CTRY_LIBYA = 434, /* Libya */
160 CTRY_LIECHTENSTEIN = 438, /* Liechtenstein */
161 CTRY_LITHUANIA = 440, /* Lithuania */
162 CTRY_LUXEMBOURG = 442, /* Luxembourg */
163 CTRY_MACAU = 446, /* Macau */
164 CTRY_MACEDONIA = 807, /* the Former Yugoslav Republic of Macedonia */
165 CTRY_MALAYSIA = 458, /* Malaysia */
166 CTRY_MALTA = 470, /* Malta */
167 CTRY_MEXICO = 484, /* Mexico */
168 CTRY_MONACO = 492, /* Principality of Monaco */
169 CTRY_MOROCCO = 504, /* Morocco */
170 CTRY_NEPAL = 524, /* Nepal */
171 CTRY_NETHERLANDS = 528, /* Netherlands */
172 CTRY_NEW_ZEALAND = 554, /* New Zealand */
173 CTRY_NICARAGUA = 558, /* Nicaragua */
174 CTRY_NORWAY = 578, /* Norway */
175 CTRY_OMAN = 512, /* Oman */
176 CTRY_PAKISTAN = 586, /* Islamic Republic of Pakistan */
177 CTRY_PANAMA = 591, /* Panama */
178 CTRY_PARAGUAY = 600, /* Paraguay */
179 CTRY_PERU = 604, /* Peru */
180 CTRY_PHILIPPINES = 608, /* Republic of the Philippines */
181 CTRY_POLAND = 616, /* Poland */
182 CTRY_PORTUGAL = 620, /* Portugal */
183 CTRY_PUERTO_RICO = 630, /* Puerto Rico */
184 CTRY_QATAR = 634, /* Qatar */
185 CTRY_ROMANIA = 642, /* Romania */
186 CTRY_RUSSIA = 643, /* Russia */
187 CTRY_SAUDI_ARABIA = 682, /* Saudi Arabia */
188 CTRY_SINGAPORE = 702, /* Singapore */
189 CTRY_SLOVAKIA = 703, /* Slovak Republic */
190 CTRY_SLOVENIA = 705, /* Slovenia */
191 CTRY_SOUTH_AFRICA = 710, /* South Africa */
192 CTRY_SPAIN = 724, /* Spain */
193 CTRY_SRILANKA = 144, /* Sri Lanka */
194 CTRY_SWEDEN = 752, /* Sweden */
195 CTRY_SWITZERLAND = 756, /* Switzerland */
196 CTRY_SYRIA = 760, /* Syria */
197 CTRY_TAIWAN = 158, /* Taiwan */
198 CTRY_THAILAND = 764, /* Thailand */
199 CTRY_TRINIDAD_Y_TOBAGO = 780, /* Trinidad y Tobago */
200 CTRY_TUNISIA = 788, /* Tunisia */
201 CTRY_TURKEY = 792, /* Turkey */
202 CTRY_UAE = 784, /* U.A.E. */
203 CTRY_UKRAINE = 804, /* Ukraine */
204 CTRY_UNITED_KINGDOM = 826, /* United Kingdom */
205 CTRY_UNITED_STATES = 840, /* United States */
206 CTRY_URUGUAY = 858, /* Uruguay */
207 CTRY_UZBEKISTAN = 860, /* Uzbekistan */
208 CTRY_VENEZUELA = 862, /* Venezuela */
209 CTRY_VIET_NAM = 704, /* Viet Nam */
210 CTRY_YEMEN = 887, /* Yemen */
211 CTRY_ZIMBABWE = 716, /* Zimbabwe */
215 SKU_FCC = 0x10, /* FCC, aka United States */
216 SKU_CA = 0x20, /* North America, aka Canada */
217 SKU_ETSI = 0x30, /* Europe */
218 SKU_ETSI2 = 0x32, /* Europe w/o HT40 in 5GHz */
219 SKU_ETSI3 = 0x33, /* Europe - channel 36 */
220 SKU_FCC3 = 0x3a, /* FCC w/5470 band, 11h, DFS */
223 SKU_APAC = 0x50, /* Asia Pacific */
224 SKU_APAC2 = 0x51, /* Asia Pacific w/ DFS on mid-band */
225 SKU_APAC3 = 0x5d, /* Asia Pacific w/o ISM band */
226 SKU_ROW = 0x81, /* China/Taiwan/Rest of World */
227 SKU_NONE = 0xf0, /* "Region Free" */
231 #if defined(__KERNEL__) || defined(_KERNEL)
232 #define CTRY_DEBUG 0x1ff /* debug */
233 #define CTRY_DEFAULT 0 /* default */
235 void ieee80211_regdomain_attach(struct ieee80211com *);
236 void ieee80211_regdomain_detach(struct ieee80211com *);
237 void ieee80211_regdomain_vattach(struct ieee80211vap *);
238 void ieee80211_regdomain_vdetach(struct ieee80211vap *);
240 int ieee80211_init_channels(struct ieee80211com *,
241 const struct ieee80211_regdomain *, const uint8_t bands[]);
242 void ieee80211_sort_channels(struct ieee80211_channel chans[], int nchans);
243 struct ieee80211_appie;
244 struct ieee80211_appie *ieee80211_alloc_countryie(struct ieee80211com *);
245 struct ieee80211_regdomain_req;
246 int ieee80211_setregdomain(struct ieee80211vap *,
247 struct ieee80211_regdomain_req *);
248 #endif /* defined(__KERNEL__) || defined(_KERNEL) */
249 #endif /* _NET80211_IEEE80211_REGDOMAIN_H_ */