I tried parsing the configuration file generated via UCI that you have
provided, but the library can't parse it, which is not a good sign.

Can you share the UCI configuration in /etc/config/network?

The Bridge VLAN fitlering implementation needs to be improved, I opened an
issue for this:
https://github.com/openwisp/netjsonconfig/issues/356
If you can share the UCI code I'll add it to the issue (or you can add it
yourself there).

In the meantime as a workaround, could you define the configuration you
need by supplying files?
It's a bit uncomfortable but it will help you get around this issue, you
can also use variables freely in files which is nice.

Best regards
*Federico Capoano*
OpenWISP OÜ
Kotkapoja tn 2a-10, 10615, Harju maakond, Tallinn, Estonia
VAT: EE101989729
+372 59361689
*openwisp.io* <http://openwisp.io>


On Thu, 10 Jul 2025 at 10:49, 'Marten Lucas' via OpenWISP <
[email protected]> wrote:

> Hi,
> first of all great project. I am new to openwrt but still managed to get
> openwisp running with several devices. But now I am struggeling with a VLAN
> setup for a ZyXEL GS1900-8
> v2 (with DSA).
>
> The switch is connected via a trunked port to the mainrouter which is the
> dhcp server.
> The target config is this 4 VLANs with different ports that get the IPs
> from the mainrouter.
>
> This is the template I created:
>
> {
>   "interfaces": [
>     {
>       "type": "bridge",
>       "bridge_members": [
>         "lan1",
>         "lan2",
>         "lan3",
>         "lan4",
>         "lan5",
>         "lan6",
>         "lan7"
>       ],
>       "name": "br-lan",
>       "vlan_filtering": [
>         {
>           "vlan": 178,
>           "ports": [
>             {
>               "ifname": "lan1",
>               "tagging": "t"
>             },
>             {
>               "ifname": "lan2",
>               "tagging": "t"
>             },
>             {
>               "ifname": "lan3",
>               "tagging": "t"
>             },
>             {
>               "ifname": "lan4",
>               "tagging": "t"
>             }
>           ]
>         },
>         {
>           "vlan": 70,
>           "ports": [
>             {
>               "ifname": "lan1",
>               "tagging": "t"
>             },
>             {
>               "ifname": "lan4",
>               "tagging": "t"
>             },
>             {
>               "ifname": "lan6",
>               "tagging": "u"
>             }
>           ]
>         },
>         {
>           "vlan": 80,
>           "ports": [
>             {
>               "ifname": "lan1",
>               "tagging": "t"
>             },
>             {
>               "ifname": "lan4",
>               "tagging": "t"
>             },
>             {
>               "ifname": "lan7",
>               "tagging": "u"
>             }
>           ]
>         },
>         {
>           "vlan": 100,
>           "ports": [
>             {
>               "ifname": "lan1",
>               "tagging": "u"
>             },
>             {
>               "ifname": "lan2",
>               "tagging": "u"
>             },
>             {
>               "ifname": "lan3",
>               "tagging": "u"
>             },
>             {
>               "ifname": "lan4",
>               "tagging": "u"
>             },
>             {
>               "ifname": "lan5",
>               "tagging": "u"
>             }
>           ]
>         }
>       ]
>     },
>     {
>       "type": "other",
>       "name": "infra",
>       "device": "br-lan.100",
>       "proto": "dhcp",
>       "ifname": "infra"
>     },
>     {
>       "type": "other",
>       "name": "user",
>       "device": "br-lan.178",
>       "proto": "dhcp",
>       "ifname": "user"
>     },
>     {
>       "type": "other",
>       "name": "server",
>       "device": "br-lan.70",
>       "proto": "dhcp",
>       "ifname": "server"
>     },
>     {
>       "type": "other",
>       "name": "jail",
>       "device": "br-lan.80",
>       "proto": "dhcp",
>       "ifname": "jail"
>     }
>   ]
> }
>
> After I applied it to the switch without error, the /etc/config/network on
> the device is:
> config interface 'infra'
> option proto 'dhcp'
> option device 'br-lan.100'
> option ifname 'infra'
>
> config interface 'br_lan'
> option device 'br-lan'
> option proto 'none'
>
> config interface 'vlan_br_lan_70'
> option device 'br-lan.70'
> option proto 'none'
>
> config interface 'vlan_br_lan_178'
> option device 'br-lan.178'
> option proto 'none'
>
> config interface 'jail'
> option device 'br-lan.80'
> option ifname 'jail'
> option proto 'dhcp'
>
> config interface 'debug'
> option device 'lan8'
> option ipaddr '192.168.1.1'
> option netmask '255.255.255.0'
> option proto 'static'
>
> config interface 'vlan_br_lan_100'
> option device 'br-lan.100'
> option proto 'none'
>
> config interface 'user'
> option device 'br-lan.178'
> option ifname 'user'
> option proto 'dhcp'
>
> config device 'device_br_lan'
> option name 'br-lan'
> list ports 'lan1'
> list ports 'lan2'
> list ports 'lan3'
> list ports 'lan4'
> list ports 'lan5'
> list ports 'lan6'
> list ports 'lan7'
> option type 'bridge'
>
> config interface 'vlan_br_lan_80'
> option device 'br-lan.80'
> option proto 'none'
>
> config interface 'server'
> option device 'br-lan.70'
> option ifname 'server'
> option proto 'dhcp'
>
> config bridge-vlan
> option device 'br-lan'
> option vlan '100'
> list ports 'lan1'
>
> You see the port tagging is not applied.
>
> When I manually setup the config with VLANs in luci it works and I get the
> following config:
>
> config interface 'infra'
>     option proto 'dhcp'
> option device 'br-lan.100'
> option ifname 'infra'
>
> config interface 'br_lan'
> option device 'br-lan'
> option proto 'none'
>
> config interface 'vlan_br_lan_70'
> option device 'br-lan.70'
> option proto 'none'
>
> config interface 'vlan_br_lan_178'
> option device 'br-lan.178'
> option proto 'none'
>
> config interface 'jail'
> option device 'br-lan.80'
> option ifname 'jail'
> option proto 'dhcp'
>
> config interface 'debug'
> option device 'lan8'
> option ipaddr '192.168.1.1'
> option netmask '255.255.255.0'
> option proto 'static'
>
> config interface 'vlan_br_lan_100'
> option device 'br-lan.100'
> option proto 'none'
>
> config interface 'user'
> option device 'br-lan.178'
> option ifname 'user'
> option proto 'dhcp'
>
> config device 'device_br_lan'
> option name 'br-lan'
> list ports 'lan1'
> list ports 'lan2'
> list ports 'lan3'
> list ports 'lan4'
> list ports 'lan5'
> list ports 'lan6'
> list ports 'lan7'
> option type 'bridge'
>
> config interface 'vlan_br_lan_80'
> option device 'br-lan.80'
> option proto 'none'
>
> config interface 'server'
> option device 'br-lan.70'
> option ifname 'server'
> option proto 'dhcp'
>
> config bridge-vlan
> option device 'br-lan'
> option vlan '100'
> list ports 'lan1'
> list ports 'lan2'
> list ports 'lan3'
> list ports 'lan4'
>
> config bridge-vlan
> option device 'br-lan'
> option vlan '178'
> list ports 'lan1:t'
> list ports 'lan2:t'
> list ports 'lan3:t'
> list ports 'lan4:t'
> list ports 'lan5'
>
> config bridge-vlan
> option device 'br-lan'
> option vlan '80'
> list ports 'lan1:t'
> list ports 'lan4:t'
> list ports 'lan6'
>
> config bridge-vlan
> option device 'br-lan'
> option vlan '70'
> list ports 'lan1:t'
> list ports 'lan4:t'
> list ports 'lan7'
>
> I also tried the programmable switch but it not deploy without error. The
> template was:
> {
>   "interfaces": [
>     {
>       "type": "bridge",
>       "name": "br-lan",
>       "bridge_members": [ "lan1","lan2","lan3","lan4","lan5","lan6","lan7"
> ]
>     },
>     { "type":"other", "name":"infra",   "device":"br-lan.100",
> "proto":"dhcp", "ifname":"infra" },
>     { "type":"other", "name":"user",    "device":"br-lan.178",
> "proto":"dhcp", "ifname":"user" },
>     { "type":"other", "name":"server",  "device":"br-lan.70",
>  "proto":"dhcp", "ifname":"server" },
>     { "type":"other", "name":"jail",    "device":"br-lan.80",
>  "proto":"dhcp", "ifname":"jail" }
>   ],
>   "switch": [
>     {
>       "name":       "br-lan",
>       "reset":      true,
>       "enable_vlan":true,
>       "vlan": [
>         { "device":"br-lan", "vlan":178, "ports":"lan1t lan2t lan3t lan4t"
> },
>         { "device":"br-lan", "vlan":70,  "ports":"lan1t lan4t lan6u" },
>         { "device":"br-lan", "vlan":80,  "ports":"lan1t lan4t lan7u" },
>         { "device":"br-lan", "vlan":100, "ports":"lan1u lan2u lan3u lan4u
> lan5u" }
>       ]
>     }
>   ]
> }
>
> I also saw the  https://github.com/openwisp/netjsonconfig/pull/261 and
> assumed it is now merged.
>
> Can you please help me to either correct the template which correctly sets
> up the VLAN tagging or help me refine my requirements for a easier
> implementation.
>
> Thank you so much.
>
>
> DISCLAIMER: The Templates were generated with the help of AI
>
> --
> You received this message because you are subscribed to the Google Groups
> "OpenWISP" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion, visit
> https://groups.google.com/d/msgid/openwisp/7d00ca6c-b098-4cbb-ad52-682a366e6465n%40googlegroups.com
> <https://groups.google.com/d/msgid/openwisp/7d00ca6c-b098-4cbb-ad52-682a366e6465n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"OpenWISP" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion, visit 
https://groups.google.com/d/msgid/openwisp/CAAGgX6%2BbK5%2B%3DFPYd%3DGD4bJTuVN0t58xCSN9T_gDGDLxK%3DwZAUA%40mail.gmail.com.

Reply via email to