The API itself allows several list separators. The network configuration for bridge_vids expects a space separated list. We therefore convert it initially to a space separated list.
Signed-off-by: Aaron Lauterer <a.laute...@proxmox.com> --- I opted for a comment before the step where we split and reassemble the list with spaces as separators as this step might be a bit obscure if one is not aware of the reason (interfaces syntax). Feel free to drop the comments if you think they are unnessecary changes since v6: none v5: * drop PVE::Tools::list_is_empty and check for empty lists directly v4: * use the list_is_empty function, therefore avoiding negative matches * recreate the list with spaces as separators v3: * changed "vlans" to "VLANs" in description v2: * added checks to handle empty lists PVE/API2/Network.pm | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/PVE/API2/Network.pm b/PVE/API2/Network.pm index f39f04f5..b9db9b27 100644 --- a/PVE/API2/Network.pm +++ b/PVE/API2/Network.pm @@ -66,6 +66,11 @@ my $confdesc = { type => 'boolean', optional => 1, }, + bridge_vids => { + description => "Specify the allowed VLANs. For example: '2 4 100-200'. Only used if the bridge is VLAN aware.", + optional => 1, + type => 'string', format => 'pve-vlan-id-or-range-list', + }, bridge_ports => { description => "Specify the interfaces you want to add to your bridge.", optional => 1, @@ -469,6 +474,14 @@ __PACKAGE__->register_method({ if ! grep { $_ eq $iface } @ports; } + if ($param->{bridge_vids} && scalar(PVE::Tools::split_list($param->{bridge_vids}) == 0)) { + raise_param_exc({ bridge_vids => "VLAN list items are empty" }); + } + # make sure the list is space separated! other separators will cause problems in the + # network configuration + $param->{bridge_vids} = join(" ", PVE::Tools::split_list($param->{bridge_vids})) + if $param->{bridge_vids}; + $ifaces->{$iface} = $param; PVE::INotify::write_file('interfaces', $config); @@ -558,7 +571,15 @@ __PACKAGE__->register_method({ foreach my $k (keys %$param) { $ifaces->{$iface}->{$k} = $param->{$k}; } - + + if ($param->{bridge_vids} && scalar(PVE::Tools::split_list($param->{bridge_vids}) == 0)) { + raise_param_exc({ bridge_vids => "VLAN list items are empty" }); + } + # make sure the list is space separated! other separators will cause problems in the + # network configuration + $param->{bridge_vids} = join(" ", PVE::Tools::split_list($param->{bridge_vids})) + if $param->{bridge_vids}; + PVE::INotify::write_file('interfaces', $config); }; -- 2.39.5 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel