933b23e82624a5b5d839f65185a8bdeaf1f4b034
[dragonfly.git] / sys / netproto / 802_11 / ieee80211_regdomain.h
1 /*-
2  * Copyright (c) 2005-2008 Sam Leffler, Errno Consulting
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
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.
13  *
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.
24  *
25  * $FreeBSD: head/sys/net80211/ieee80211_regdomain.h 187799 2009-01-27 23:09:55Z sam $
26  * $DragonFly$
27  */
28 #ifndef _NET80211_IEEE80211_REGDOMAIN_H_
29 #define _NET80211_IEEE80211_REGDOMAIN_H_
30
31 /*
32  * 802.11 regulatory domain definitions.
33  */
34
35 /*
36  * ISO 3166 Country/Region Codes
37  * http://ftp.ics.uci.edu/pub/ietf/http/related/iso3166.txt
38  */
39 enum ISOCountryCode {
40         CTRY_AFGHANISTAN        = 4,
41         CTRY_ALBANIA            = 8,    /* Albania */
42         CTRY_ALGERIA            = 12,   /* Algeria */
43         CTRY_AMERICAN_SAMOA     = 16,
44         CTRY_ANDORRA            = 20,
45         CTRY_ANGOLA             = 24,
46         CTRY_ANGUILLA           = 660,
47         CTRY_ANTARTICA          = 10,
48         CTRY_ANTIGUA            = 28,   /* Antigua and Barbuda */
49         CTRY_ARGENTINA          = 32,   /* Argentina */
50         CTRY_ARMENIA            = 51,   /* Armenia */
51         CTRY_ARUBA              = 533,  /* Aruba */
52         CTRY_AUSTRALIA          = 36,   /* Australia */
53         CTRY_AUSTRIA            = 40,   /* Austria */
54         CTRY_AZERBAIJAN         = 31,   /* Azerbaijan */
55         CTRY_BAHAMAS            = 44,   /* Bahamas */
56         CTRY_BAHRAIN            = 48,   /* Bahrain */
57         CTRY_BANGLADESH         = 50,   /* Bangladesh */
58         CTRY_BARBADOS           = 52,
59         CTRY_BELARUS            = 112,  /* Belarus */
60         CTRY_BELGIUM            = 56,   /* Belgium */
61         CTRY_BELIZE             = 84,
62         CTRY_BENIN              = 204,
63         CTRY_BERMUDA            = 60,
64         CTRY_BHUTAN             = 64,
65         CTRY_BOLIVIA            = 68,   /* Bolivia */
66         CTRY_BOSNIA_AND_HERZEGOWINA = 70,
67         CTRY_BOTSWANA           = 72,
68         CTRY_BOUVET_ISLAND      = 74,
69         CTRY_BRAZIL             = 76,   /* Brazil */
70         CTRY_BRITISH_INDIAN_OCEAN_TERRITORY = 86,
71         CTRY_BRUNEI_DARUSSALAM  = 96,   /* Brunei Darussalam */
72         CTRY_BULGARIA           = 100,  /* Bulgaria */
73         CTRY_BURKINA_FASO       = 854,
74         CTRY_BURUNDI            = 108,
75         CTRY_CAMBODIA           = 116,
76         CTRY_CAMEROON           = 120,
77         CTRY_CANADA             = 124,  /* Canada */
78         CTRY_CAPE_VERDE         = 132,
79         CTRY_CAYMAN_ISLANDS     = 136,
80         CTRY_CENTRAL_AFRICAN_REPUBLIC = 140,
81         CTRY_CHAD               = 148,
82         CTRY_CHILE              = 152,  /* Chile */
83         CTRY_CHINA              = 156,  /* People's Republic of China */
84         CTRY_CHRISTMAS_ISLAND   = 162,
85         CTRY_COCOS_ISLANDS      = 166,
86         CTRY_COLOMBIA           = 170,  /* Colombia */
87         CTRY_COMOROS            = 174,
88         CTRY_CONGO              = 178,
89         CTRY_COOK_ISLANDS       = 184,
90         CTRY_COSTA_RICA         = 188,  /* Costa Rica */
91         CTRY_COTE_DIVOIRE       = 384,
92         CTRY_CROATIA            = 191,  /* Croatia (local name: Hrvatska) */
93         CTRY_CYPRUS             = 196,  /* Cyprus */
94         CTRY_CZECH              = 203,  /* Czech Republic */
95         CTRY_DENMARK            = 208,  /* Denmark */
96         CTRY_DJIBOUTI           = 262,
97         CTRY_DOMINICA           = 212,
98         CTRY_DOMINICAN_REPUBLIC = 214,  /* Dominican Republic */
99         CTRY_EAST_TIMOR         = 626,
100         CTRY_ECUADOR            = 218,  /* Ecuador */
101         CTRY_EGYPT              = 818,  /* Egypt */
102         CTRY_EL_SALVADOR        = 222,  /* El Salvador */
103         CTRY_EQUATORIAL_GUINEA  = 226,
104         CTRY_ERITREA            = 232,
105         CTRY_ESTONIA            = 233,  /* Estonia */
106         CTRY_ETHIOPIA           = 210,
107         CTRY_FALKLAND_ISLANDS   = 238,  /* (Malvinas) */
108         CTRY_FAEROE_ISLANDS     = 234,  /* Faeroe Islands */
109         CTRY_FIJI               = 242,
110         CTRY_FINLAND            = 246,  /* Finland */
111         CTRY_FRANCE             = 250,  /* France */
112         CTRY_FRANCE2            = 255,  /* France (Metropolitan) */
113         CTRY_FRENCH_GUIANA      = 254,
114         CTRY_FRENCH_POLYNESIA   = 258,
115         CTRY_FRENCH_SOUTHERN_TERRITORIES        = 260,
116         CTRY_GABON              = 266,
117         CTRY_GAMBIA             = 270,
118         CTRY_GEORGIA            = 268,  /* Georgia */
119         CTRY_GERMANY            = 276,  /* Germany */
120         CTRY_GHANA              = 288,
121         CTRY_GIBRALTAR          = 292,
122         CTRY_GREECE             = 300,  /* Greece */
123         CTRY_GREENLAND          = 304,
124         CTRY_GRENADA            = 308,
125         CTRY_GUADELOUPE         = 312,
126         CTRY_GUAM               = 316,
127         CTRY_GUATEMALA          = 320,  /* Guatemala */
128         CTRY_GUINEA             = 324,
129         CTRY_GUINEA_BISSAU      = 624,
130         CTRY_GUYANA             = 328,
131         /* XXX correct remainder */
132         CTRY_HAITI              = 332,
133         CTRY_HONDURAS           = 340,  /* Honduras */
134         CTRY_HONG_KONG          = 344,  /* Hong Kong S.A.R., P.R.C. */
135         CTRY_HUNGARY            = 348,  /* Hungary */
136         CTRY_ICELAND            = 352,  /* Iceland */
137         CTRY_INDIA              = 356,  /* India */
138         CTRY_INDONESIA          = 360,  /* Indonesia */
139         CTRY_IRAN               = 364,  /* Iran */
140         CTRY_IRAQ               = 368,  /* Iraq */
141         CTRY_IRELAND            = 372,  /* Ireland */
142         CTRY_ISRAEL             = 376,  /* Israel */
143         CTRY_ITALY              = 380,  /* Italy */
144         CTRY_JAMAICA            = 388,  /* Jamaica */
145         CTRY_JAPAN              = 392,  /* Japan */
146         CTRY_JORDAN             = 400,  /* Jordan */
147         CTRY_KAZAKHSTAN         = 398,  /* Kazakhstan */
148         CTRY_KENYA              = 404,  /* Kenya */
149         CTRY_KOREA_NORTH        = 408,  /* North Korea */
150         CTRY_KOREA_ROC          = 410,  /* South Korea */
151         CTRY_KOREA_ROC2         = 411,  /* South Korea */
152         CTRY_KUWAIT             = 414,  /* Kuwait */
153         CTRY_LATVIA             = 428,  /* Latvia */
154         CTRY_LEBANON            = 422,  /* Lebanon */
155         CTRY_LIBYA              = 434,  /* Libya */
156         CTRY_LIECHTENSTEIN      = 438,  /* Liechtenstein */
157         CTRY_LITHUANIA          = 440,  /* Lithuania */
158         CTRY_LUXEMBOURG         = 442,  /* Luxembourg */
159         CTRY_MACAU              = 446,  /* Macau */
160         CTRY_MACEDONIA          = 807,  /* the Former Yugoslav Republic of Macedonia */
161         CTRY_MALAYSIA           = 458,  /* Malaysia */
162         CTRY_MALTA              = 470,  /* Malta */
163         CTRY_MEXICO             = 484,  /* Mexico */
164         CTRY_MONACO             = 492,  /* Principality of Monaco */
165         CTRY_MOROCCO            = 504,  /* Morocco */
166         CTRY_NEPAL              = 524,  /* Nepal */
167         CTRY_NETHERLANDS        = 528,  /* Netherlands */
168         CTRY_NEW_ZEALAND        = 554,  /* New Zealand */
169         CTRY_NICARAGUA          = 558,  /* Nicaragua */
170         CTRY_NORWAY             = 578,  /* Norway */
171         CTRY_OMAN               = 512,  /* Oman */
172         CTRY_PAKISTAN           = 586,  /* Islamic Republic of Pakistan */
173         CTRY_PANAMA             = 591,  /* Panama */
174         CTRY_PARAGUAY           = 600,  /* Paraguay */
175         CTRY_PERU               = 604,  /* Peru */
176         CTRY_PHILIPPINES        = 608,  /* Republic of the Philippines */
177         CTRY_POLAND             = 616,  /* Poland */
178         CTRY_PORTUGAL           = 620,  /* Portugal */
179         CTRY_PUERTO_RICO        = 630,  /* Puerto Rico */
180         CTRY_QATAR              = 634,  /* Qatar */
181         CTRY_ROMANIA            = 642,  /* Romania */
182         CTRY_RUSSIA             = 643,  /* Russia */
183         CTRY_SAUDI_ARABIA       = 682,  /* Saudi Arabia */
184         CTRY_SINGAPORE          = 702,  /* Singapore */
185         CTRY_SLOVAKIA           = 703,  /* Slovak Republic */
186         CTRY_SLOVENIA           = 705,  /* Slovenia */
187         CTRY_SOUTH_AFRICA       = 710,  /* South Africa */
188         CTRY_SPAIN              = 724,  /* Spain */
189         CTRY_SRILANKA           = 144,  /* Sri Lanka */
190         CTRY_SWEDEN             = 752,  /* Sweden */
191         CTRY_SWITZERLAND        = 756,  /* Switzerland */
192         CTRY_SYRIA              = 760,  /* Syria */
193         CTRY_TAIWAN             = 158,  /* Taiwan */
194         CTRY_THAILAND           = 764,  /* Thailand */
195         CTRY_TRINIDAD_Y_TOBAGO  = 780,  /* Trinidad y Tobago */
196         CTRY_TUNISIA            = 788,  /* Tunisia */
197         CTRY_TURKEY             = 792,  /* Turkey */
198         CTRY_UAE                = 784,  /* U.A.E. */
199         CTRY_UKRAINE            = 804,  /* Ukraine */
200         CTRY_UNITED_KINGDOM     = 826,  /* United Kingdom */
201         CTRY_UNITED_STATES      = 840,  /* United States */
202         CTRY_URUGUAY            = 858,  /* Uruguay */
203         CTRY_UZBEKISTAN         = 860,  /* Uzbekistan */
204         CTRY_VENEZUELA          = 862,  /* Venezuela */
205         CTRY_VIET_NAM           = 704,  /* Viet Nam */
206         CTRY_YEMEN              = 887,  /* Yemen */
207         CTRY_ZIMBABWE           = 716,  /* Zimbabwe */
208
209         /* NB: from here down not listed in 3166; they come from Atheros */
210         CTRY_DEBUG              = 0x1ff, /* debug */
211         CTRY_DEFAULT            = 0,     /* default */
212
213         CTRY_UNITED_STATES_FCC49 = 842, /* United States (Public Safety)*/
214         CTRY_KOREA_ROC3         = 412,  /* South Korea */
215
216         CTRY_JAPAN1             = 393,  /* Japan (JP1) */
217         CTRY_JAPAN2             = 394,  /* Japan (JP0) */
218         CTRY_JAPAN3             = 395,  /* Japan (JP1-1) */
219         CTRY_JAPAN4             = 396,  /* Japan (JE1) */
220         CTRY_JAPAN5             = 397,  /* Japan (JE2) */
221         CTRY_JAPAN6             = 399,  /* Japan (JP6) */
222         CTRY_JAPAN7             = 4007, /* Japan (J7) */
223         CTRY_JAPAN8             = 4008, /* Japan (J8) */
224         CTRY_JAPAN9             = 4009, /* Japan (J9) */
225         CTRY_JAPAN10            = 4010, /* Japan (J10) */
226         CTRY_JAPAN11            = 4011, /* Japan (J11) */
227         CTRY_JAPAN12            = 4012, /* Japan (J12) */
228         CTRY_JAPAN13            = 4013, /* Japan (J13) */
229         CTRY_JAPAN14            = 4014, /* Japan (J14) */
230         CTRY_JAPAN15            = 4015, /* Japan (J15) */
231         CTRY_JAPAN16            = 4016, /* Japan (J16) */
232         CTRY_JAPAN17            = 4017, /* Japan (J17) */
233         CTRY_JAPAN18            = 4018, /* Japan (J18) */
234         CTRY_JAPAN19            = 4019, /* Japan (J19) */
235         CTRY_JAPAN20            = 4020, /* Japan (J20) */
236         CTRY_JAPAN21            = 4021, /* Japan (J21) */
237         CTRY_JAPAN22            = 4022, /* Japan (J22) */
238         CTRY_JAPAN23            = 4023, /* Japan (J23) */
239         CTRY_JAPAN24            = 4024, /* Japan (J24) */
240 };
241
242 enum RegdomainCode {
243         SKU_FCC                 = 0x10, /* FCC, aka United States */
244         SKU_CA                  = 0x20, /* North America, aka Canada */
245         SKU_ETSI                = 0x30, /* Europe */
246         SKU_ETSI2               = 0x32, /* Europe w/o HT40 in 5GHz */
247         SKU_ETSI3               = 0x33, /* Europe - channel 36 */
248         SKU_FCC3                = 0x3a, /* FCC w/5470 band, 11h, DFS */
249         SKU_JAPAN               = 0x40,
250         SKU_KOREA               = 0x45,
251         SKU_APAC                = 0x50, /* Asia Pacific */
252         SKU_APAC2               = 0x51, /* Asia Pacific w/ DFS on mid-band */
253         SKU_APAC3               = 0x5d, /* Asia Pacific w/o ISM band */
254         SKU_ROW                 = 0x81, /* China/Taiwan/Rest of World */
255         SKU_NONE                = 0xf0, /* "Region Free" */
256         SKU_DEBUG               = 0x1ff,
257
258         /* NB: from here down private */
259         SKU_SR9                 = 0x0298, /* Ubiquiti SR9 (900MHz/GSM) */
260         SKU_XR9                 = 0x0299, /* Ubiquiti XR9 (900MHz/GSM) */
261         SKU_GZ901               = 0x029a, /* Zcomax GZ-901 (900MHz/GSM) */
262 };
263
264 #if defined(__KERNEL__) || defined(_KERNEL)
265 struct ieee80211com;
266 void    ieee80211_regdomain_attach(struct ieee80211com *);
267 void    ieee80211_regdomain_detach(struct ieee80211com *);
268 struct ieee80211vap;
269 void    ieee80211_regdomain_vattach(struct ieee80211vap *);
270 void    ieee80211_regdomain_vdetach(struct ieee80211vap *);
271
272 struct ieee80211_regdomain;
273 int     ieee80211_init_channels(struct ieee80211com *,
274             const struct ieee80211_regdomain *, const uint8_t bands[]);
275 struct ieee80211_channel;
276 void    ieee80211_sort_channels(struct ieee80211_channel *chans, int nchans);
277 struct ieee80211_appie;
278 struct ieee80211_appie *ieee80211_alloc_countryie(struct ieee80211com *);
279 struct ieee80211_regdomain_req;
280 int     ieee80211_setregdomain(struct ieee80211vap *,
281             struct ieee80211_regdomain_req *);
282 #endif /* defined(__KERNEL__) || defined(_KERNEL) */
283 #endif /* _NET80211_IEEE80211_REGDOMAIN_H_ */