168e8e04eSSam Leffler /*- 268e8e04eSSam Leffler * Copyright (c) 2005-2007 Sam Leffler, Errno Consulting 368e8e04eSSam Leffler * All rights reserved. 468e8e04eSSam Leffler * 568e8e04eSSam Leffler * Redistribution and use in source and binary forms, with or without 668e8e04eSSam Leffler * modification, are permitted provided that the following conditions 768e8e04eSSam Leffler * are met: 868e8e04eSSam Leffler * 1. Redistributions of source code must retain the above copyright 968e8e04eSSam Leffler * notice, this list of conditions and the following disclaimer. 1068e8e04eSSam Leffler * 2. Redistributions in binary form must reproduce the above copyright 1168e8e04eSSam Leffler * notice, this list of conditions and the following disclaimer in the 1268e8e04eSSam Leffler * documentation and/or other materials provided with the distribution. 1368e8e04eSSam Leffler * 1468e8e04eSSam Leffler * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 1568e8e04eSSam Leffler * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 1668e8e04eSSam Leffler * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 1768e8e04eSSam Leffler * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 1868e8e04eSSam Leffler * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 1968e8e04eSSam Leffler * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2068e8e04eSSam Leffler * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2168e8e04eSSam Leffler * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2268e8e04eSSam Leffler * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 2368e8e04eSSam Leffler * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2468e8e04eSSam Leffler * 2568e8e04eSSam Leffler * $FreeBSD$ 2668e8e04eSSam Leffler */ 2768e8e04eSSam Leffler #ifndef _NET80211_IEEE80211_REGDOMAIN_H_ 2868e8e04eSSam Leffler #define _NET80211_IEEE80211_REGDOMAIN_H_ 2968e8e04eSSam Leffler 3068e8e04eSSam Leffler /* 3168e8e04eSSam Leffler * 802.11 regulatory domain definitions. 3268e8e04eSSam Leffler */ 3368e8e04eSSam Leffler 3468e8e04eSSam Leffler /* 3568e8e04eSSam Leffler * ISO 3166 Country/Region Codes 3668e8e04eSSam Leffler * http://ftp.ics.uci.edu/pub/ietf/http/related/iso3166.txt 3768e8e04eSSam Leffler */ 3868e8e04eSSam Leffler enum ISOCountryCode { 3968e8e04eSSam Leffler CTRY_AFGHANISTAN = 4, 4068e8e04eSSam Leffler CTRY_ALBANIA = 8, /* Albania */ 4168e8e04eSSam Leffler CTRY_ALGERIA = 12, /* Algeria */ 4268e8e04eSSam Leffler CTRY_AMERICAN_SAMOA = 16, 4368e8e04eSSam Leffler CTRY_ANDORRA = 20, 4468e8e04eSSam Leffler CTRY_ANGOLA = 24, 4568e8e04eSSam Leffler CTRY_ANGUILLA = 660, 4668e8e04eSSam Leffler /* XXX correct remainder */ 4768e8e04eSSam Leffler CTRY_ARGENTINA = 32, /* Argentina */ 4868e8e04eSSam Leffler CTRY_ARMENIA = 51, /* Armenia */ 4968e8e04eSSam Leffler CTRY_AUSTRALIA = 36, /* Australia */ 5068e8e04eSSam Leffler CTRY_AUSTRIA = 40, /* Austria */ 5168e8e04eSSam Leffler CTRY_AZERBAIJAN = 31, /* Azerbaijan */ 5268e8e04eSSam Leffler CTRY_BAHRAIN = 48, /* Bahrain */ 5368e8e04eSSam Leffler CTRY_BELARUS = 112, /* Belarus */ 5468e8e04eSSam Leffler CTRY_BELGIUM = 56, /* Belgium */ 5568e8e04eSSam Leffler CTRY_BELIZE = 84, /* Belize */ 5668e8e04eSSam Leffler CTRY_BOLIVIA = 68, /* Bolivia */ 5768e8e04eSSam Leffler CTRY_BRAZIL = 76, /* Brazil */ 5868e8e04eSSam Leffler CTRY_BRUNEI_DARUSSALAM = 96, /* Brunei Darussalam */ 5968e8e04eSSam Leffler CTRY_BULGARIA = 100, /* Bulgaria */ 6068e8e04eSSam Leffler CTRY_CANADA = 124, /* Canada */ 6168e8e04eSSam Leffler CTRY_CHILE = 152, /* Chile */ 6268e8e04eSSam Leffler CTRY_CHINA = 156, /* People's Republic of China */ 6368e8e04eSSam Leffler CTRY_COLOMBIA = 170, /* Colombia */ 6468e8e04eSSam Leffler CTRY_COSTA_RICA = 188, /* Costa Rica */ 6568e8e04eSSam Leffler CTRY_CROATIA = 191, /* Croatia */ 6668e8e04eSSam Leffler CTRY_CYPRUS = 196, /* Cyprus */ 6768e8e04eSSam Leffler CTRY_CZECH = 203, /* Czech Republic */ 6868e8e04eSSam Leffler CTRY_DENMARK = 208, /* Denmark */ 6968e8e04eSSam Leffler CTRY_DOMINICAN_REPUBLIC = 214, /* Dominican Republic */ 7068e8e04eSSam Leffler CTRY_ECUADOR = 218, /* Ecuador */ 7168e8e04eSSam Leffler CTRY_EGYPT = 818, /* Egypt */ 7268e8e04eSSam Leffler CTRY_EL_SALVADOR = 222, /* El Salvador */ 7368e8e04eSSam Leffler CTRY_ESTONIA = 233, /* Estonia */ 7468e8e04eSSam Leffler CTRY_FAEROE_ISLANDS = 234, /* Faeroe Islands */ 7568e8e04eSSam Leffler CTRY_FINLAND = 246, /* Finland */ 7668e8e04eSSam Leffler CTRY_FRANCE = 250, /* France */ 7768e8e04eSSam Leffler CTRY_FRANCE2 = 255, /* France2 */ 7868e8e04eSSam Leffler CTRY_GEORGIA = 268, /* Georgia */ 7968e8e04eSSam Leffler CTRY_GERMANY = 276, /* Germany */ 8068e8e04eSSam Leffler CTRY_GREECE = 300, /* Greece */ 8168e8e04eSSam Leffler CTRY_GUATEMALA = 320, /* Guatemala */ 8268e8e04eSSam Leffler CTRY_HONDURAS = 340, /* Honduras */ 8368e8e04eSSam Leffler CTRY_HONG_KONG = 344, /* Hong Kong S.A.R., P.R.C. */ 8468e8e04eSSam Leffler CTRY_HUNGARY = 348, /* Hungary */ 8568e8e04eSSam Leffler CTRY_ICELAND = 352, /* Iceland */ 8668e8e04eSSam Leffler CTRY_INDIA = 356, /* India */ 8768e8e04eSSam Leffler CTRY_INDONESIA = 360, /* Indonesia */ 8868e8e04eSSam Leffler CTRY_IRAN = 364, /* Iran */ 8968e8e04eSSam Leffler CTRY_IRAQ = 368, /* Iraq */ 9068e8e04eSSam Leffler CTRY_IRELAND = 372, /* Ireland */ 9168e8e04eSSam Leffler CTRY_ISRAEL = 376, /* Israel */ 9268e8e04eSSam Leffler CTRY_ITALY = 380, /* Italy */ 9368e8e04eSSam Leffler CTRY_JAMAICA = 388, /* Jamaica */ 9468e8e04eSSam Leffler CTRY_JAPAN = 392, /* Japan */ 9568e8e04eSSam Leffler CTRY_JAPAN1 = 393, /* Japan (JP1) */ 9668e8e04eSSam Leffler CTRY_JAPAN2 = 394, /* Japan (JP0) */ 9768e8e04eSSam Leffler CTRY_JAPAN3 = 395, /* Japan (JP1-1) */ 9868e8e04eSSam Leffler CTRY_JAPAN4 = 396, /* Japan (JE1) */ 9968e8e04eSSam Leffler CTRY_JAPAN5 = 397, /* Japan (JE2) */ 10068e8e04eSSam Leffler CTRY_JORDAN = 400, /* Jordan */ 10168e8e04eSSam Leffler CTRY_KAZAKHSTAN = 398, /* Kazakhstan */ 10268e8e04eSSam Leffler CTRY_KENYA = 404, /* Kenya */ 10368e8e04eSSam Leffler CTRY_KOREA_NORTH = 408, /* North Korea */ 10468e8e04eSSam Leffler CTRY_KOREA_ROC = 410, /* South Korea */ 10568e8e04eSSam Leffler CTRY_KOREA_ROC2 = 411, /* South Korea */ 10668e8e04eSSam Leffler CTRY_KUWAIT = 414, /* Kuwait */ 10768e8e04eSSam Leffler CTRY_LATVIA = 428, /* Latvia */ 10868e8e04eSSam Leffler CTRY_LEBANON = 422, /* Lebanon */ 10968e8e04eSSam Leffler CTRY_LIBYA = 434, /* Libya */ 11068e8e04eSSam Leffler CTRY_LIECHTENSTEIN = 438, /* Liechtenstein */ 11168e8e04eSSam Leffler CTRY_LITHUANIA = 440, /* Lithuania */ 11268e8e04eSSam Leffler CTRY_LUXEMBOURG = 442, /* Luxembourg */ 11368e8e04eSSam Leffler CTRY_MACAU = 446, /* Macau */ 11468e8e04eSSam Leffler CTRY_MACEDONIA = 807, /* the Former Yugoslav Republic of Macedonia */ 11568e8e04eSSam Leffler CTRY_MALAYSIA = 458, /* Malaysia */ 11668e8e04eSSam Leffler CTRY_MEXICO = 484, /* Mexico */ 11768e8e04eSSam Leffler CTRY_MONACO = 492, /* Principality of Monaco */ 11868e8e04eSSam Leffler CTRY_MOROCCO = 504, /* Morocco */ 11968e8e04eSSam Leffler CTRY_NETHERLANDS = 528, /* Netherlands */ 12068e8e04eSSam Leffler CTRY_NEW_ZEALAND = 554, /* New Zealand */ 12168e8e04eSSam Leffler CTRY_NICARAGUA = 558, /* Nicaragua */ 12268e8e04eSSam Leffler CTRY_NORWAY = 578, /* Norway */ 12368e8e04eSSam Leffler CTRY_OMAN = 512, /* Oman */ 12468e8e04eSSam Leffler CTRY_PAKISTAN = 586, /* Islamic Republic of Pakistan */ 12568e8e04eSSam Leffler CTRY_PANAMA = 591, /* Panama */ 12668e8e04eSSam Leffler CTRY_PARAGUAY = 600, /* Paraguay */ 12768e8e04eSSam Leffler CTRY_PERU = 604, /* Peru */ 12868e8e04eSSam Leffler CTRY_PHILIPPINES = 608, /* Republic of the Philippines */ 12968e8e04eSSam Leffler CTRY_POLAND = 616, /* Poland */ 13068e8e04eSSam Leffler CTRY_PORTUGAL = 620, /* Portugal */ 13168e8e04eSSam Leffler CTRY_PUERTO_RICO = 630, /* Puerto Rico */ 13268e8e04eSSam Leffler CTRY_QATAR = 634, /* Qatar */ 13368e8e04eSSam Leffler CTRY_ROMANIA = 642, /* Romania */ 13468e8e04eSSam Leffler CTRY_RUSSIA = 643, /* Russia */ 13568e8e04eSSam Leffler CTRY_SAUDI_ARABIA = 682, /* Saudi Arabia */ 13668e8e04eSSam Leffler CTRY_SINGAPORE = 702, /* Singapore */ 13768e8e04eSSam Leffler CTRY_SLOVAKIA = 703, /* Slovak Republic */ 13868e8e04eSSam Leffler CTRY_SLOVENIA = 705, /* Slovenia */ 13968e8e04eSSam Leffler CTRY_SOUTH_AFRICA = 710, /* South Africa */ 14068e8e04eSSam Leffler CTRY_SPAIN = 724, /* Spain */ 14168e8e04eSSam Leffler CTRY_SWEDEN = 752, /* Sweden */ 14268e8e04eSSam Leffler CTRY_SWITZERLAND = 756, /* Switzerland */ 14368e8e04eSSam Leffler CTRY_SYRIA = 760, /* Syria */ 14468e8e04eSSam Leffler CTRY_TAIWAN = 158, /* Taiwan */ 14568e8e04eSSam Leffler CTRY_THAILAND = 764, /* Thailand */ 14668e8e04eSSam Leffler CTRY_TRINIDAD_Y_TOBAGO = 780, /* Trinidad y Tobago */ 14768e8e04eSSam Leffler CTRY_TUNISIA = 788, /* Tunisia */ 14868e8e04eSSam Leffler CTRY_TURKEY = 792, /* Turkey */ 14968e8e04eSSam Leffler CTRY_UAE = 784, /* U.A.E. */ 15068e8e04eSSam Leffler CTRY_UKRAINE = 804, /* Ukraine */ 15168e8e04eSSam Leffler CTRY_UNITED_KINGDOM = 826, /* United Kingdom */ 15268e8e04eSSam Leffler CTRY_UNITED_STATES = 840, /* United States */ 15368e8e04eSSam Leffler CTRY_URUGUAY = 858, /* Uruguay */ 15468e8e04eSSam Leffler CTRY_UZBEKISTAN = 860, /* Uzbekistan */ 15568e8e04eSSam Leffler CTRY_VENEZUELA = 862, /* Venezuela */ 15668e8e04eSSam Leffler CTRY_VIET_NAM = 704, /* Viet Nam */ 15768e8e04eSSam Leffler CTRY_YEMEN = 887, /* Yemen */ 15868e8e04eSSam Leffler CTRY_ZIMBABWE = 716, /* Zimbabwe */ 15968e8e04eSSam Leffler }; 16068e8e04eSSam Leffler 16168e8e04eSSam Leffler #if defined(__KERNEL__) || defined(_KERNEL) 16268e8e04eSSam Leffler #define CTRY_DEBUG 0x1ff /* debug */ 16368e8e04eSSam Leffler #define CTRY_DEFAULT 0 /* default */ 16468e8e04eSSam Leffler 16568e8e04eSSam Leffler void ieee80211_regdomain_attach(struct ieee80211com *); 16668e8e04eSSam Leffler void ieee80211_regdomain_detach(struct ieee80211com *); 16768e8e04eSSam Leffler 16868e8e04eSSam Leffler void ieee80211_init_channels(struct ieee80211com *ic, 16968e8e04eSSam Leffler int rd, enum ISOCountryCode cc, int bands, int outdoor, int ecm); 17068e8e04eSSam Leffler uint8_t *ieee80211_add_countryie(uint8_t *, struct ieee80211com *, 17168e8e04eSSam Leffler enum ISOCountryCode cc, int location); 17268e8e04eSSam Leffler const char *ieee80211_cctoiso(enum ISOCountryCode); 17368e8e04eSSam Leffler int ieee80211_isotocc(const char iso[2]); 17468e8e04eSSam Leffler #endif /* defined(__KERNEL__) || defined(_KERNEL) */ 17568e8e04eSSam Leffler #endif /* _NET80211_IEEE80211_REGDOMAIN_H_ */ 176