-
Notifications
You must be signed in to change notification settings - Fork 336
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
wireless: T6318: move country-code to a system wide configuration
Wireless devices are subject to regulations issued by authorities. For any given AP or router, there will most likely be no case where one wireless NIC is located in one country and another wireless NIC in the same device is located in another country, resulting in different regulatory domains to apply to the same box. Currently, wireless regulatory domains in VyOS need to be configured per-NIC: set interfaces wireless wlan0 country-code us This leads to several side-effects: * When operating multiple WiFi NICs, they all can have different regulatory domains configured which might offend legislation. * Some NICs need additional entries to /etc/modprobe.d/cfg80211.conf to apply regulatory domain settings, such as: "options cfg80211 ieee80211_regdom=US" This is true for the Compex WLE600VX. This setting cannot be done per-interface. Migrate the first found wireless module country-code from the wireless interface CLI to: "system wireless country-code"
- Loading branch information
Showing
11 changed files
with
292 additions
and
43 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,3 @@ | ||
<!-- include start from include/version/interfaces-version.xml.i --> | ||
<syntaxVersion component='interfaces' version='32'></syntaxVersion> | ||
<syntaxVersion component='interfaces' version='33'></syntaxVersion> | ||
<!-- include end --> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
<?xml version="1.0"?> | ||
<interfaceDefinition> | ||
<node name="system"> | ||
<children> | ||
<node name="wireless" owner="${vyos_conf_scripts_dir}/system_wireless.py"> | ||
<properties> | ||
<help>Wireless (IEEE-802.11) subsystem settings</help> | ||
<!-- must be before interface wireless, check /opt/vyatta/sbin/priority.pl --> | ||
<priority>317</priority> | ||
</properties> | ||
<children> | ||
<leafNode name="country-code"> | ||
<properties> | ||
<help>Indicate country in which device is operating</help> | ||
<completionHelp> | ||
<list>00 ad ae af ai al am an ar as at au aw az ba bb bd be bf bg bh bl bm bn bo br bs bt by bz ca cf ch ci cl cn co cr cu cx cy cz de dk dm do dz ec ee eg es et fi fm fr gb gd ge gf gh gl gp gr gt gu gy hk hn hr ht hu id ie il in ir is it jm jo jp ke kh kn kp kr kw ky kz lb lc li lk ls lt lu lv ma mc md me mf mh mk mn mo mp mq mr mt mu mv mw mx my ng ni nl no np nz om pa pe pf pg ph pk pl pm pr pt pw py qa re ro rs ru rw sa se sg si sk sn sr sv sy tc td tg th tn tr tt tw tz ua ug us uy uz vc ve vi vn vu wf ws ye yt za zw</list> | ||
</completionHelp> | ||
<valueHelp> | ||
<format>00</format> | ||
<description>World regulatory domain</description> | ||
</valueHelp> | ||
<valueHelp> | ||
<format>txt</format> | ||
<description>ISO/IEC 3166-1 Country Code</description> | ||
</valueHelp> | ||
<constraint> | ||
<regex>(00|ad|ae|af|ai|al|am|an|ar|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bl|bm|bn|bo|br|bs|bt|by|bz|ca|cf|ch|ci|cl|cn|co|cr|cu|cx|cy|cz|de|dk|dm|do|dz|ec|ee|eg|es|et|fi|fm|fr|gb|gd|ge|gf|gh|gl|gp|gr|gt|gu|gy|hk|hn|hr|ht|hu|id|ie|il|in|ir|is|it|jm|jo|jp|ke|kh|kn|kp|kr|kw|ky|kz|lb|lc|li|lk|ls|lt|lu|lv|ma|mc|md|me|mf|mh|mk|mn|mo|mp|mq|mr|mt|mu|mv|mw|mx|my|ng|ni|nl|no|np|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pr|pt|pw|py|qa|re|ro|rs|ru|rw|sa|se|sg|si|sk|sn|sr|sv|sy|tc|td|tg|th|tn|tr|tt|tw|tz|ua|ug|us|uy|uz|vc|ve|vi|vn|vu|wf|ws|ye|yt|za|zw)</regex> | ||
</constraint> | ||
<constraintErrorMessage>Invalid ISO/IEC 3166-1 Country Code</constraintErrorMessage> | ||
</properties> | ||
</leafNode> | ||
</children> | ||
</node> | ||
</children> | ||
</node> | ||
</interfaceDefinition> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
set interfaces ethernet eth0 duplex 'auto' | ||
set interfaces ethernet eth0 speed 'auto' | ||
set interfaces ethernet eth1 duplex 'auto' | ||
set interfaces ethernet eth1 speed 'auto' | ||
set interfaces wireless wlan0 address '192.168.0.1/24' | ||
set interfaces wireless wlan0 channel '1' | ||
set interfaces wireless wlan0 mode 'n' | ||
set interfaces wireless wlan0 security wpa cipher 'CCMP' | ||
set interfaces wireless wlan0 security wpa mode 'wpa2' | ||
set interfaces wireless wlan0 security wpa passphrase '12345678' | ||
set interfaces wireless wlan0 ssid 'VyOS' | ||
set interfaces wireless wlan0 type 'access-point' | ||
set interfaces wireless wlan1 address '192.168.1.1/24' | ||
set interfaces wireless wlan1 channel '2' | ||
set interfaces wireless wlan1 mode 'n' | ||
set interfaces wireless wlan1 ssid 'VyOS-PUBLIC' | ||
set interfaces wireless wlan1 type 'access-point' | ||
set system config-management commit-revisions '200' | ||
set system console device ttyS0 speed 115200 | ||
set system domain-name 'dev.vyos.net' | ||
set system host-name 'WR1' | ||
set system login user vyos authentication encrypted-password '$6$O5gJRlDYQpj$MtrCV9lxMnZPMbcxlU7.FI793MImNHznxGoMFgm3Q6QP3vfKJyOSRCt3Ka/GzFQyW1yZS4NS616NLHaIPPFHc0' | ||
set system wireless country-code 'es' | ||
set system syslog global facility all level 'info' | ||
set system syslog global facility local7 level 'debug' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
interfaces { | ||
ethernet eth0 { | ||
duplex "auto" | ||
speed "auto" | ||
} | ||
ethernet eth1 { | ||
duplex "auto" | ||
speed "auto" | ||
} | ||
wireless wlan0 { | ||
address 192.168.0.1/24 | ||
channel 1 | ||
country-code es | ||
mode n | ||
security { | ||
wpa { | ||
cipher CCMP | ||
mode wpa2 | ||
passphrase 12345678 | ||
} | ||
} | ||
ssid VyOS | ||
type access-point | ||
} | ||
wireless wlan1 { | ||
address 192.168.1.1/24 | ||
channel 2 | ||
country-code de | ||
mode n | ||
ssid VyOS-PUBLIC | ||
type access-point | ||
} | ||
} | ||
system { | ||
config-management { | ||
commit-revisions "200" | ||
} | ||
console { | ||
device ttyS0 { | ||
speed 115200 | ||
} | ||
} | ||
domain-name "dev.vyos.net" | ||
host-name "WR1" | ||
login { | ||
user vyos { | ||
authentication { | ||
encrypted-password "$6$O5gJRlDYQpj$MtrCV9lxMnZPMbcxlU7.FI793MImNHznxGoMFgm3Q6QP3vfKJyOSRCt3Ka/GzFQyW1yZS4NS616NLHaIPPFHc0" | ||
} | ||
} | ||
} | ||
syslog { | ||
global { | ||
facility all { | ||
level "info" | ||
} | ||
facility local7 { | ||
level "debug" | ||
} | ||
} | ||
} | ||
} | ||
|
||
// Warning: Do not remove the following line. | ||
// vyos-config-version: "bgp@5:broadcast-relay@1:cluster@2:config-management@1:conntrack@5:conntrack-sync@2:container@2:dhcp-relay@2:dhcp-server@8:dhcpv6-server@1:dns-dynamic@4:dns-forwarding@4:firewall@15:flow-accounting@1:https@6:ids@1:interfaces@32:ipoe-server@3:ipsec@13:isis@3:l2tp@9:lldp@2:mdns@1:monitoring@1:nat@8:nat66@3:ntp@3:openconnect@3:ospf@2:pim@1:policy@8:pppoe-server@10:pptp@5:qos@2:quagga@11:reverse-proxy@1:rip@1:rpki@2:salt@1:snmp@3:ssh@2:sstp@6:system@27:vrf@3:vrrp@4:vyos-accel-ppp@2:wanloadbalance@3:webproxy@2" | ||
// Release version: 1.4.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
#!/usr/bin/env python3 | ||
# | ||
# Copyright (C) 2024 VyOS maintainers and contributors | ||
# | ||
# This program is free software; you can redistribute it and/or modify | ||
# it under the terms of the GNU General Public License version 2 or later as | ||
# published by the Free Software Foundation. | ||
# | ||
# This program is distributed in the hope that it will be useful, | ||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
# GNU General Public License for more details. | ||
# | ||
# You should have received a copy of the GNU General Public License | ||
# along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
|
||
from sys import exit | ||
|
||
from vyos.config import Config | ||
from vyos.configdep import set_dependents | ||
from vyos.configdep import call_dependents | ||
from vyos import ConfigError | ||
from vyos import airbag | ||
airbag.enable() | ||
|
||
def get_config(config=None): | ||
if config: | ||
conf = config | ||
else: | ||
conf = Config() | ||
base = ['system', 'wireless'] | ||
interface_base = ['interfaces', 'wireless'] | ||
|
||
wireless = conf.get_config_dict(base, key_mangling=('-', '_'), | ||
get_first_key=True) | ||
|
||
|
||
if conf.exists(interface_base): | ||
wireless['interfaces'] = conf.list_nodes(interface_base) | ||
for interface in wireless['interfaces']: | ||
set_dependents('wireless', conf, interface) | ||
|
||
return wireless | ||
|
||
def verify(wireless): | ||
pass | ||
|
||
def generate(wireless): | ||
pass | ||
|
||
def apply(wireless): | ||
if 'interfaces' in wireless: | ||
call_dependents() | ||
pass | ||
|
||
if __name__ == '__main__': | ||
try: | ||
c = get_config() | ||
verify(c) | ||
generate(c) | ||
apply(c) | ||
except ConfigError as e: | ||
print(e) | ||
exit(1) |
Oops, something went wrong.