Skip to content

Commit fe52996

Browse files
authored
[fix] Fixed bridge name in auto attached wireless interface #249
Fixes #249
1 parent 1d6ae29 commit fe52996

2 files changed

Lines changed: 96 additions & 2 deletions

File tree

netjsonconfig/backends/openwrt/converters/wireless.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -375,8 +375,8 @@ def _track_bridged_wifi(self, intermediate_data=None):
375375
# Bridge is empty.
376376
continue
377377
bridge_name = interface['.name']
378-
if self.dsa:
379-
bridge_name = bridge_name.lstrip('device_')
378+
if self.dsa and bridge_name.startswith('device_'):
379+
bridge_name = bridge_name[len('device_') :] # noqa
380380
for physical_interface in bridge_members:
381381
# A physical interface can be a member of multiple
382382
# bridges. Hence, we create a list of bridge interfaces

tests/openwrt/test_wireless.py

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1183,3 +1183,97 @@ def test_render_simplified_wifi_bridge(self):
11831183
def test_parse_simplified_wifi_bridge(self):
11841184
o = OpenWrt(native=self._wifi_simplified_bridge_uci)
11851185
self.assertEqual(o.config, self._wifi_simplified_bridge_netjson)
1186+
1187+
_wireless_interface_netjson = {
1188+
"interfaces": [
1189+
# client
1190+
{
1191+
"name": "cpwlan0",
1192+
"type": "wireless",
1193+
"wireless": {
1194+
"mode": "access_point",
1195+
"radio": "radio0",
1196+
"ssid": "OpenWISP Test",
1197+
"encryption": {"protocol": "none"},
1198+
"wmm": True,
1199+
"isolate": True,
1200+
},
1201+
},
1202+
{
1203+
"type": "wireless",
1204+
"name": "cpwlan1",
1205+
"wireless": {
1206+
"mode": "access_point",
1207+
"radio": "radio1",
1208+
"ssid": "OpenWISP Test",
1209+
"encryption": {"protocol": "none"},
1210+
"wmm": True,
1211+
"isolate": True,
1212+
},
1213+
},
1214+
# bridge
1215+
{
1216+
"name": "br-cpwifi",
1217+
"network": "cpwifi",
1218+
"type": "bridge",
1219+
"bridge_members": ["cpwlan0", "cpwlan1"],
1220+
},
1221+
]
1222+
}
1223+
_wireless_interface_uci = """package network
1224+
1225+
config device 'device_cpwlan0'
1226+
option name 'cpwlan0'
1227+
1228+
config interface 'cpwlan0'
1229+
option device 'cpwlan0'
1230+
option proto 'none'
1231+
1232+
config device 'device_cpwlan1'
1233+
option name 'cpwlan1'
1234+
1235+
config interface 'cpwlan1'
1236+
option device 'cpwlan1'
1237+
option proto 'none'
1238+
1239+
config device 'device_cpwifi'
1240+
option name 'br-cpwifi'
1241+
list ports 'cpwlan0'
1242+
list ports 'cpwlan1'
1243+
option type 'bridge'
1244+
1245+
config interface 'cpwifi'
1246+
option device 'br-cpwifi'
1247+
option proto 'none'
1248+
1249+
package wireless
1250+
1251+
config wifi-iface 'wifi_cpwlan0'
1252+
option device 'radio0'
1253+
option encryption 'none'
1254+
option ifname 'cpwlan0'
1255+
option isolate '1'
1256+
option mode 'ap'
1257+
option network 'cpwifi'
1258+
option ssid 'OpenWISP Test'
1259+
option wmm '1'
1260+
1261+
config wifi-iface 'wifi_cpwlan1'
1262+
option device 'radio1'
1263+
option encryption 'none'
1264+
option ifname 'cpwlan1'
1265+
option isolate '1'
1266+
option mode 'ap'
1267+
option network 'cpwifi'
1268+
option ssid 'OpenWISP Test'
1269+
option wmm '1'
1270+
"""
1271+
1272+
def test_render_wireless_interface_name(self):
1273+
o = OpenWrt(self._wireless_interface_netjson)
1274+
expected = self._tabs(self._wireless_interface_uci)
1275+
self.assertEqual(o.render(), expected)
1276+
1277+
def test_parse_wireless_interface_name(self):
1278+
o = OpenWrt(native=self._wireless_interface_uci)
1279+
self.assertEqual(o.config, self._wireless_interface_netjson)

0 commit comments

Comments
 (0)