[RFC PATCH v2 0/1] Introduce UCI support for configuring DSA VLAN filter rules

Martin Schiller ms at dev.tdt.de
Wed Apr 28 13:39:47 BST 2021


On 2021-03-26 10:30, Martin Schiller wrote:
> On 2021-03-26 09:55, Martin Schiller wrote:
>> On 2021-03-26 09:42, Felix Fietkau wrote:
>>> On 2021-03-26 09:34, Martin Schiller wrote:
>>>> On 2020-07-24 19:13, Felix Fietkau wrote:
>>>>> On 2020-07-24 18:44, Jo-Philipp Wich wrote:
>>>>>> Hi Felix,
>>>>>> 
>>>>>>> [...]
>>>>>>> 
>>>>>>> For a simple default config, you could have this:
>>>>>>> 
>>>>>>> # network
>>>>>>> config device
>>>>>>         option type bridge  # I assume this is needed as well
>>>>>>> 	option name switch0
>>>>> Correct.
>>>>> 
>>>>>>> config bridge-vlan
>>>>>>> 	option vlan 1
>>>>>>> 	option ports "lan1 lan2 lan3 lan4"
>>>>>>> 
>>>>>>> config interface lan
>>>>>>> 	option ifname switch0.1
>>>>>>> 
>>>>>>> 
>>>>>>> # wireless
>>>>>>> 
>>>>>>> config wifi-iface
>>>>>>> 	option network lan
>>>>>>> 
>>>>>>> 
>>>>>>> In this case, wlan0 would be added to switch0 and set to VLAN 1
>>>>>>> untagged
>>>>>>> by default.
>>>>>>> 
>>>>>>> If you want it on VLAN 10 tagged/PVID instead, you could do:
>>>>>>> 	option network-vlan "10:t*"
>>>>>>> 
>>>>>>> 
>>>>>>> What do you think?
>>>>>> 
>>>>>> I did think about it some more, also in context of a LuCI
>>>>>> implementation and
>>>>>> the special role of wifi and I am convinced now that this approach
>>>>>> generally
>>>>>> makes sense.
>>>>>> 
>>>>>> However for the vlan I wonder if we should simply use "option vid 
>>>>>> 10"
>>>>>> since
>>>>>> setting anything besides an egress untagged pvid does not make 
>>>>>> sense
>>>>>> for wifi.
>>>>> I think more complex VLAN settings make sense for WDS if you want 
>>>>> to
>>>>> carry multiple networks over the link.
>>>>> 
>>>>>> So your second example above would become:
>>>>>> 
>>>>>>   config wifi-iface
>>>>>>     option network lan
>>>>>>     option vid 10  # instead of inheriting vid 1, use 10 as pvid
>>>>>> 
>>>>>> 
>>>>>> Also, just to clarify... assuming a:
>>>>>> 
>>>>>>   config interface foo
>>>>>>     option ifname somevlanbridge0.456
>>>>>> 
>>>>>> and an wifi iface without an explicit vid override:
>>>>>> 
>>>>>>   config wifi-iface
>>>>>>     option network foo
>>>>>> 
>>>>>> ... we would inherit vid 456 and set as pvid, right? Or are we are
>>>>>> always
>>>>>> going to default to 1?
>>>>> It would inherit 456 to keep it in sync with the VLAN based 
>>>>> network.
>>>>> 
>>>> 
>>>> Is this functionality already integrated?
>>>> I am testing with a xrx200 based system with the DSA mainline driver 
>>>> and
>>>> a wifi interface and have the problem that the wlan0 interface is 
>>>> added
>>>> to the bridge switch0 but the bridge vlan configuration for the 
>>>> wlan0
>>>> interface is not set.
>>> It's handled differently now.
>>> 
>>> You can set lan's ifname to switch0.1 (without option type bridge) 
>>> and
>>> use 'option network lan' in the wifi-iface. It will detect that the 
>>> lan
>>> ifname is a vlan on top of a vlan-filtering bridge and will add wlan0 
>>> to
>>> switch0 and make it a member of lan's vlan.
>>> 
>> 
>> Hmmm... I think that's what I've alread done. Here is my config:
>> 
>> network:
>> ---------
>> config interface 'lan'
>> 	option proto 'static'
>> 	option ipaddr '192.168.X.Y'
>> 	option netmask '255.255.255.0'
>> 	option ifname 'switch0.1'
>> 
>> config device
>> 	option type 'bridge'
>> 	option name 'switch0'
>> 	list ifname 'lan1'
>> 	list ifname 'lan2'
>> 	list ifname 'lan3'
>> 	list ifname 'lan4'
>> 
>> config bridge-vlan
>> 	option device 'switch0'
>> 	option vlan '1'
>> 	list ports 'lan1:u*'
>> 	list ports 'lan2:u*'
>> 	list ports 'lan3:u*'
>> 	list ports 'lan4:u*'
>> 
>> wireless:
>> ----------
>> config wifi-iface 'default_radio0'
>> 	option device 'radio0'
>> 	option mode 'ap'
>> 	option encryption 'psk2'
>> 	option ssid 'TETS-AP'
>> 	option network 'lan'
>> 	option key 'xxxxxxxxxxxxxxxxxxxxxxx'
>> 	option wpa_disable_eapol_key_retries '1'
>> 
>> 
>> Did I forget anything?
>> 
> 
> `ubus call network.device status` shows:
> 
> 
> ...
>         "switch0": {
>                 "external": false,
>                 "present": true,
>                 "type": "bridge",
>                 "up": true,
>                 "carrier": true,
>                 "bridge-members": [
>                         "lan1",
>                         "lan2",
>                         "lan3",
>                         "lan4",
>                         "wlan0"
>                 ],
>                 "bridge-vlans": [
>                         {
>                                 "id": 1,
>                                 "local": true,
>                                 "ports": [
>                                         "lan1",
>                                         "lan2",
>                                         "lan3",
>                                         "lan4"
>                                 ]
>                         }
>                 ],
> ...
> 

As you can see here, "wlan0" is added to the "bridge-members", but not
to the "ports" of the "bridge-vlans"/"id":1. Maybe this is the problem?

- Martin



More information about the openwrt-devel mailing list