Skip to content

Commit ae0dd16

Browse files
committed
[change] OpenWrt: hide roaming UCI if roaming disabled
If WiFI roaming (802.11r) is not enabled, do not generate the UCI config options in the wireless configuration.
1 parent 351a5ae commit ae0dd16

2 files changed

Lines changed: 61 additions & 0 deletions

File tree

netjsonconfig/backends/openwrt/converters/wireless.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ def __intermediate_wireless(self, interface):
6161
if 'encryption' in wireless:
6262
encryption = self.__intermediate_encryption(wireless)
6363
wireless.update(encryption)
64+
wireless = self.__intermediate_roaming(wireless)
6465
# attached networks (openwrt specific)
6566
# by default the wifi interface is attached
6667
# to its defining interface
@@ -139,6 +140,20 @@ def __intermediate_encryption(self, wireless):
139140
uci['encryption'] += '+{0}'.format(cipher)
140141
return uci
141142

143+
roaming_properties = (
144+
'ft_over_ds',
145+
'ft_psk_generate_local',
146+
'nasid',
147+
'reassociation_deadline',
148+
)
149+
150+
def __intermediate_roaming(self, wireless):
151+
if wireless.get('ieee80211r') is False:
152+
for property in self.roaming_properties:
153+
if property in wireless:
154+
del wireless[property]
155+
return wireless
156+
142157
def to_netjson_loop(self, block, result, index):
143158
is_new = False
144159
interface = self.__get_netjson_interface(block)

tests/openwrt/test_wireless.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -861,6 +861,52 @@ def test_parse_access_point_80211r(self):
861861
del netjson_80211r['interfaces'][0]['wireless']['reassociation_deadline']
862862
self.assertEqual(o.config, netjson_80211r)
863863

864+
_80211r_false_netjson = {
865+
"interfaces": [
866+
{
867+
"name": "wlan0",
868+
"type": "wireless",
869+
"wireless": {
870+
"radio": "radio0",
871+
"mode": "access_point",
872+
"ssid": "MyWifiAP",
873+
"rsn_preauth": True,
874+
"ieee80211r": False,
875+
"ft_over_ds": True,
876+
"ft_psk_generate_local": True,
877+
"nasid": "123",
878+
"reassociation_deadline": 1000,
879+
"network": ["lan"],
880+
},
881+
}
882+
]
883+
}
884+
_80211r_false_uci = """package network
885+
886+
config device 'device_wlan0'
887+
option name 'wlan0'
888+
889+
config interface 'wlan0'
890+
option device 'wlan0'
891+
option proto 'none'
892+
893+
package wireless
894+
895+
config wifi-iface 'wifi_wlan0'
896+
option device 'radio0'
897+
option ieee80211r '0'
898+
option ifname 'wlan0'
899+
option mode 'ap'
900+
option network 'lan'
901+
option rsn_preauth '1'
902+
option ssid 'MyWifiAP'
903+
"""
904+
905+
def test_render_access_point_80211r_false(self):
906+
o = OpenWrt(self._80211r_false_netjson)
907+
expected = self._tabs(self._80211r_false_uci)
908+
self.assertEqual(o.render(), expected)
909+
864910
_80211s_netjson = {
865911
"interfaces": [
866912
{

0 commit comments

Comments
 (0)