1170530Ssam/*- 2178354Ssam * Copyright (c) 2005-2008 Sam Leffler, Errno Consulting 3170530Ssam * All rights reserved. 4170530Ssam * 5170530Ssam * Redistribution and use in source and binary forms, with or without 6170530Ssam * modification, are permitted provided that the following conditions 7170530Ssam * are met: 8170530Ssam * 1. Redistributions of source code must retain the above copyright 9170530Ssam * notice, this list of conditions and the following disclaimer. 10170530Ssam * 2. Redistributions in binary form must reproduce the above copyright 11170530Ssam * notice, this list of conditions and the following disclaimer in the 12170530Ssam * documentation and/or other materials provided with the distribution. 13170530Ssam * 14170530Ssam * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 15170530Ssam * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 16170530Ssam * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17170530Ssam * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 18170530Ssam * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 19170530Ssam * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 20170530Ssam * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 21170530Ssam * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22170530Ssam * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23170530Ssam * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24170530Ssam * 25170530Ssam * $FreeBSD$ 26170530Ssam */ 27170530Ssam#ifndef _NET80211_IEEE80211_REGDOMAIN_H_ 28170530Ssam#define _NET80211_IEEE80211_REGDOMAIN_H_ 29170530Ssam 30170530Ssam/* 31170530Ssam * 802.11 regulatory domain definitions. 32170530Ssam */ 33170530Ssam 34170530Ssam/* 35170530Ssam * ISO 3166 Country/Region Codes 36170530Ssam * http://ftp.ics.uci.edu/pub/ietf/http/related/iso3166.txt 37170530Ssam */ 38170530Ssamenum ISOCountryCode { 39170530Ssam CTRY_AFGHANISTAN = 4, 40170530Ssam CTRY_ALBANIA = 8, /* Albania */ 41170530Ssam CTRY_ALGERIA = 12, /* Algeria */ 42170530Ssam CTRY_AMERICAN_SAMOA = 16, 43170530Ssam CTRY_ANDORRA = 20, 44170530Ssam CTRY_ANGOLA = 24, 45170530Ssam CTRY_ANGUILLA = 660, 46178354Ssam CTRY_ANTARTICA = 10, 47178354Ssam CTRY_ANTIGUA = 28, /* Antigua and Barbuda */ 48170530Ssam CTRY_ARGENTINA = 32, /* Argentina */ 49170530Ssam CTRY_ARMENIA = 51, /* Armenia */ 50178354Ssam CTRY_ARUBA = 533, /* Aruba */ 51170530Ssam CTRY_AUSTRALIA = 36, /* Australia */ 52170530Ssam CTRY_AUSTRIA = 40, /* Austria */ 53170530Ssam CTRY_AZERBAIJAN = 31, /* Azerbaijan */ 54178354Ssam CTRY_BAHAMAS = 44, /* Bahamas */ 55170530Ssam CTRY_BAHRAIN = 48, /* Bahrain */ 56178354Ssam CTRY_BANGLADESH = 50, /* Bangladesh */ 57178354Ssam CTRY_BARBADOS = 52, 58170530Ssam CTRY_BELARUS = 112, /* Belarus */ 59170530Ssam CTRY_BELGIUM = 56, /* Belgium */ 60178354Ssam CTRY_BELIZE = 84, 61178354Ssam CTRY_BENIN = 204, 62178354Ssam CTRY_BERMUDA = 60, 63178354Ssam CTRY_BHUTAN = 64, 64170530Ssam CTRY_BOLIVIA = 68, /* Bolivia */ 65178354Ssam CTRY_BOSNIA_AND_HERZEGOWINA = 70, 66178354Ssam CTRY_BOTSWANA = 72, 67178354Ssam CTRY_BOUVET_ISLAND = 74, 68170530Ssam CTRY_BRAZIL = 76, /* Brazil */ 69178354Ssam CTRY_BRITISH_INDIAN_OCEAN_TERRITORY = 86, 70170530Ssam CTRY_BRUNEI_DARUSSALAM = 96, /* Brunei Darussalam */ 71170530Ssam CTRY_BULGARIA = 100, /* Bulgaria */ 72178354Ssam CTRY_BURKINA_FASO = 854, 73178354Ssam CTRY_BURUNDI = 108, 74178354Ssam CTRY_CAMBODIA = 116, 75178354Ssam CTRY_CAMEROON = 120, 76170530Ssam CTRY_CANADA = 124, /* Canada */ 77178354Ssam CTRY_CAPE_VERDE = 132, 78178354Ssam CTRY_CAYMAN_ISLANDS = 136, 79178354Ssam CTRY_CENTRAL_AFRICAN_REPUBLIC = 140, 80178354Ssam CTRY_CHAD = 148, 81170530Ssam CTRY_CHILE = 152, /* Chile */ 82170530Ssam CTRY_CHINA = 156, /* People's Republic of China */ 83178354Ssam CTRY_CHRISTMAS_ISLAND = 162, 84178354Ssam CTRY_COCOS_ISLANDS = 166, 85170530Ssam CTRY_COLOMBIA = 170, /* Colombia */ 86178354Ssam CTRY_COMOROS = 174, 87178354Ssam CTRY_CONGO = 178, 88178354Ssam CTRY_COOK_ISLANDS = 184, 89170530Ssam CTRY_COSTA_RICA = 188, /* Costa Rica */ 90178354Ssam CTRY_COTE_DIVOIRE = 384, 91178354Ssam CTRY_CROATIA = 191, /* Croatia (local name: Hrvatska) */ 92170530Ssam CTRY_CYPRUS = 196, /* Cyprus */ 93170530Ssam CTRY_CZECH = 203, /* Czech Republic */ 94170530Ssam CTRY_DENMARK = 208, /* Denmark */ 95178354Ssam CTRY_DJIBOUTI = 262, 96178354Ssam CTRY_DOMINICA = 212, 97170530Ssam CTRY_DOMINICAN_REPUBLIC = 214, /* Dominican Republic */ 98178354Ssam CTRY_EAST_TIMOR = 626, 99170530Ssam CTRY_ECUADOR = 218, /* Ecuador */ 100170530Ssam CTRY_EGYPT = 818, /* Egypt */ 101170530Ssam CTRY_EL_SALVADOR = 222, /* El Salvador */ 102178354Ssam CTRY_EQUATORIAL_GUINEA = 226, 103178354Ssam CTRY_ERITREA = 232, 104170530Ssam CTRY_ESTONIA = 233, /* Estonia */ 105178354Ssam CTRY_ETHIOPIA = 210, 106178354Ssam CTRY_FALKLAND_ISLANDS = 238, /* (Malvinas) */ 107170530Ssam CTRY_FAEROE_ISLANDS = 234, /* Faeroe Islands */ 108178354Ssam CTRY_FIJI = 242, 109170530Ssam CTRY_FINLAND = 246, /* Finland */ 110170530Ssam CTRY_FRANCE = 250, /* France */ 111178354Ssam CTRY_FRANCE2 = 255, /* France (Metropolitan) */ 112178354Ssam CTRY_FRENCH_GUIANA = 254, 113178354Ssam CTRY_FRENCH_POLYNESIA = 258, 114178354Ssam CTRY_FRENCH_SOUTHERN_TERRITORIES = 260, 115178354Ssam CTRY_GABON = 266, 116178354Ssam CTRY_GAMBIA = 270, 117170530Ssam CTRY_GEORGIA = 268, /* Georgia */ 118170530Ssam CTRY_GERMANY = 276, /* Germany */ 119178354Ssam CTRY_GHANA = 288, 120178354Ssam CTRY_GIBRALTAR = 292, 121170530Ssam CTRY_GREECE = 300, /* Greece */ 122178354Ssam CTRY_GREENLAND = 304, 123178354Ssam CTRY_GRENADA = 308, 124178354Ssam CTRY_GUADELOUPE = 312, 125178354Ssam CTRY_GUAM = 316, 126170530Ssam CTRY_GUATEMALA = 320, /* Guatemala */ 127178354Ssam CTRY_GUINEA = 324, 128178354Ssam CTRY_GUINEA_BISSAU = 624, 129178354Ssam CTRY_GUYANA = 328, 130178354Ssam /* XXX correct remainder */ 131178354Ssam CTRY_HAITI = 332, 132170530Ssam CTRY_HONDURAS = 340, /* Honduras */ 133170530Ssam CTRY_HONG_KONG = 344, /* Hong Kong S.A.R., P.R.C. */ 134170530Ssam CTRY_HUNGARY = 348, /* Hungary */ 135170530Ssam CTRY_ICELAND = 352, /* Iceland */ 136170530Ssam CTRY_INDIA = 356, /* India */ 137170530Ssam CTRY_INDONESIA = 360, /* Indonesia */ 138170530Ssam CTRY_IRAN = 364, /* Iran */ 139170530Ssam CTRY_IRAQ = 368, /* Iraq */ 140170530Ssam CTRY_IRELAND = 372, /* Ireland */ 141170530Ssam CTRY_ISRAEL = 376, /* Israel */ 142170530Ssam CTRY_ITALY = 380, /* Italy */ 143170530Ssam CTRY_JAMAICA = 388, /* Jamaica */ 144170530Ssam CTRY_JAPAN = 392, /* Japan */ 145170530Ssam CTRY_JORDAN = 400, /* Jordan */ 146170530Ssam CTRY_KAZAKHSTAN = 398, /* Kazakhstan */ 147170530Ssam CTRY_KENYA = 404, /* Kenya */ 148170530Ssam CTRY_KOREA_NORTH = 408, /* North Korea */ 149170530Ssam CTRY_KOREA_ROC = 410, /* South Korea */ 150170530Ssam CTRY_KOREA_ROC2 = 411, /* South Korea */ 151170530Ssam CTRY_KUWAIT = 414, /* Kuwait */ 152170530Ssam CTRY_LATVIA = 428, /* Latvia */ 153170530Ssam CTRY_LEBANON = 422, /* Lebanon */ 154170530Ssam CTRY_LIBYA = 434, /* Libya */ 155170530Ssam CTRY_LIECHTENSTEIN = 438, /* Liechtenstein */ 156170530Ssam CTRY_LITHUANIA = 440, /* Lithuania */ 157170530Ssam CTRY_LUXEMBOURG = 442, /* Luxembourg */ 158170530Ssam CTRY_MACAU = 446, /* Macau */ 159170530Ssam CTRY_MACEDONIA = 807, /* the Former Yugoslav Republic of Macedonia */ 160170530Ssam CTRY_MALAYSIA = 458, /* Malaysia */ 161178354Ssam CTRY_MALTA = 470, /* Malta */ 162170530Ssam CTRY_MEXICO = 484, /* Mexico */ 163170530Ssam CTRY_MONACO = 492, /* Principality of Monaco */ 164170530Ssam CTRY_MOROCCO = 504, /* Morocco */ 165178354Ssam CTRY_NEPAL = 524, /* Nepal */ 166170530Ssam CTRY_NETHERLANDS = 528, /* Netherlands */ 167170530Ssam CTRY_NEW_ZEALAND = 554, /* New Zealand */ 168170530Ssam CTRY_NICARAGUA = 558, /* Nicaragua */ 169170530Ssam CTRY_NORWAY = 578, /* Norway */ 170170530Ssam CTRY_OMAN = 512, /* Oman */ 171170530Ssam CTRY_PAKISTAN = 586, /* Islamic Republic of Pakistan */ 172170530Ssam CTRY_PANAMA = 591, /* Panama */ 173170530Ssam CTRY_PARAGUAY = 600, /* Paraguay */ 174170530Ssam CTRY_PERU = 604, /* Peru */ 175170530Ssam CTRY_PHILIPPINES = 608, /* Republic of the Philippines */ 176170530Ssam CTRY_POLAND = 616, /* Poland */ 177170530Ssam CTRY_PORTUGAL = 620, /* Portugal */ 178170530Ssam CTRY_PUERTO_RICO = 630, /* Puerto Rico */ 179170530Ssam CTRY_QATAR = 634, /* Qatar */ 180170530Ssam CTRY_ROMANIA = 642, /* Romania */ 181170530Ssam CTRY_RUSSIA = 643, /* Russia */ 182170530Ssam CTRY_SAUDI_ARABIA = 682, /* Saudi Arabia */ 183170530Ssam CTRY_SINGAPORE = 702, /* Singapore */ 184170530Ssam CTRY_SLOVAKIA = 703, /* Slovak Republic */ 185170530Ssam CTRY_SLOVENIA = 705, /* Slovenia */ 186170530Ssam CTRY_SOUTH_AFRICA = 710, /* South Africa */ 187170530Ssam CTRY_SPAIN = 724, /* Spain */ 188178354Ssam CTRY_SRILANKA = 144, /* Sri Lanka */ 189170530Ssam CTRY_SWEDEN = 752, /* Sweden */ 190170530Ssam CTRY_SWITZERLAND = 756, /* Switzerland */ 191170530Ssam CTRY_SYRIA = 760, /* Syria */ 192170530Ssam CTRY_TAIWAN = 158, /* Taiwan */ 193170530Ssam CTRY_THAILAND = 764, /* Thailand */ 194170530Ssam CTRY_TRINIDAD_Y_TOBAGO = 780, /* Trinidad y Tobago */ 195170530Ssam CTRY_TUNISIA = 788, /* Tunisia */ 196170530Ssam CTRY_TURKEY = 792, /* Turkey */ 197170530Ssam CTRY_UAE = 784, /* U.A.E. */ 198170530Ssam CTRY_UKRAINE = 804, /* Ukraine */ 199170530Ssam CTRY_UNITED_KINGDOM = 826, /* United Kingdom */ 200170530Ssam CTRY_UNITED_STATES = 840, /* United States */ 201170530Ssam CTRY_URUGUAY = 858, /* Uruguay */ 202170530Ssam CTRY_UZBEKISTAN = 860, /* Uzbekistan */ 203170530Ssam CTRY_VENEZUELA = 862, /* Venezuela */ 204170530Ssam CTRY_VIET_NAM = 704, /* Viet Nam */ 205170530Ssam CTRY_YEMEN = 887, /* Yemen */ 206170530Ssam CTRY_ZIMBABWE = 716, /* Zimbabwe */ 207187799Ssam 208187799Ssam /* NB: from here down not listed in 3166; they come from Atheros */ 209187799Ssam CTRY_DEBUG = 0x1ff, /* debug */ 210187799Ssam CTRY_DEFAULT = 0, /* default */ 211187799Ssam 212187799Ssam CTRY_UNITED_STATES_FCC49 = 842, /* United States (Public Safety)*/ 213187799Ssam CTRY_KOREA_ROC3 = 412, /* South Korea */ 214187799Ssam 215187799Ssam CTRY_JAPAN1 = 393, /* Japan (JP1) */ 216187799Ssam CTRY_JAPAN2 = 394, /* Japan (JP0) */ 217187799Ssam CTRY_JAPAN3 = 395, /* Japan (JP1-1) */ 218187799Ssam CTRY_JAPAN4 = 396, /* Japan (JE1) */ 219187799Ssam CTRY_JAPAN5 = 397, /* Japan (JE2) */ 220187799Ssam CTRY_JAPAN6 = 399, /* Japan (JP6) */ 221187799Ssam CTRY_JAPAN7 = 4007, /* Japan (J7) */ 222187799Ssam CTRY_JAPAN8 = 4008, /* Japan (J8) */ 223187799Ssam CTRY_JAPAN9 = 4009, /* Japan (J9) */ 224187799Ssam CTRY_JAPAN10 = 4010, /* Japan (J10) */ 225187799Ssam CTRY_JAPAN11 = 4011, /* Japan (J11) */ 226187799Ssam CTRY_JAPAN12 = 4012, /* Japan (J12) */ 227187799Ssam CTRY_JAPAN13 = 4013, /* Japan (J13) */ 228187799Ssam CTRY_JAPAN14 = 4014, /* Japan (J14) */ 229187799Ssam CTRY_JAPAN15 = 4015, /* Japan (J15) */ 230187799Ssam CTRY_JAPAN16 = 4016, /* Japan (J16) */ 231187799Ssam CTRY_JAPAN17 = 4017, /* Japan (J17) */ 232187799Ssam CTRY_JAPAN18 = 4018, /* Japan (J18) */ 233187799Ssam CTRY_JAPAN19 = 4019, /* Japan (J19) */ 234187799Ssam CTRY_JAPAN20 = 4020, /* Japan (J20) */ 235187799Ssam CTRY_JAPAN21 = 4021, /* Japan (J21) */ 236187799Ssam CTRY_JAPAN22 = 4022, /* Japan (J22) */ 237187799Ssam CTRY_JAPAN23 = 4023, /* Japan (J23) */ 238187799Ssam CTRY_JAPAN24 = 4024, /* Japan (J24) */ 239170530Ssam}; 240170530Ssam 241178354Ssamenum RegdomainCode { 242178354Ssam SKU_FCC = 0x10, /* FCC, aka United States */ 243178354Ssam SKU_CA = 0x20, /* North America, aka Canada */ 244178354Ssam SKU_ETSI = 0x30, /* Europe */ 245178354Ssam SKU_ETSI2 = 0x32, /* Europe w/o HT40 in 5GHz */ 246178354Ssam SKU_ETSI3 = 0x33, /* Europe - channel 36 */ 247178354Ssam SKU_FCC3 = 0x3a, /* FCC w/5470 band, 11h, DFS */ 248178354Ssam SKU_JAPAN = 0x40, 249178354Ssam SKU_KOREA = 0x45, 250178354Ssam SKU_APAC = 0x50, /* Asia Pacific */ 251178354Ssam SKU_APAC2 = 0x51, /* Asia Pacific w/ DFS on mid-band */ 252178354Ssam SKU_APAC3 = 0x5d, /* Asia Pacific w/o ISM band */ 253178354Ssam SKU_ROW = 0x81, /* China/Taiwan/Rest of World */ 254178354Ssam SKU_NONE = 0xf0, /* "Region Free" */ 255187799Ssam SKU_DEBUG = 0x1ff, 256187799Ssam 257187799Ssam /* NB: from here down private */ 258187799Ssam SKU_SR9 = 0x0298, /* Ubiquiti SR9 (900MHz/GSM) */ 259187799Ssam SKU_XR9 = 0x0299, /* Ubiquiti XR9 (900MHz/GSM) */ 260187799Ssam SKU_GZ901 = 0x029a, /* Zcomax GZ-901 (900MHz/GSM) */ 261178354Ssam}; 262178354Ssam 263170530Ssam#if defined(__KERNEL__) || defined(_KERNEL) 264187799Ssamstruct ieee80211com; 265170530Ssamvoid ieee80211_regdomain_attach(struct ieee80211com *); 266170530Ssamvoid ieee80211_regdomain_detach(struct ieee80211com *); 267187799Ssamstruct ieee80211vap; 268178354Ssamvoid ieee80211_regdomain_vattach(struct ieee80211vap *); 269178354Ssamvoid ieee80211_regdomain_vdetach(struct ieee80211vap *); 270170530Ssam 271187799Ssamstruct ieee80211_regdomain; 272178354Ssamint ieee80211_init_channels(struct ieee80211com *, 273178354Ssam const struct ieee80211_regdomain *, const uint8_t bands[]); 274187799Ssamstruct ieee80211_channel; 275187799Ssamvoid ieee80211_sort_channels(struct ieee80211_channel *chans, int nchans); 276178354Ssamstruct ieee80211_appie; 277178354Ssamstruct ieee80211_appie *ieee80211_alloc_countryie(struct ieee80211com *); 278178354Ssamstruct ieee80211_regdomain_req; 279178354Ssamint ieee80211_setregdomain(struct ieee80211vap *, 280178354Ssam struct ieee80211_regdomain_req *); 281170530Ssam#endif /* defined(__KERNEL__) || defined(_KERNEL) */ 282170530Ssam#endif /* _NET80211_IEEE80211_REGDOMAIN_H_ */ 283