From: "Shannon Sterz" <s.sterz@proxmox.com>
To: "Proxmox VE development discussion" <pve-devel@lists.proxmox.com>
Subject: Re: [pve-devel] [PATCH common v3 2/3] fix #3893: network: add vlan id and range parameter definitions
Date: Fri, 26 Jul 2024 14:22:15 +0200 [thread overview]
Message-ID: <D2ZGTREIBH0A.1O19J6KJ5SMN0@proxmox.com> (raw)
In-Reply-To: <20240703080147.81154-3-a.lauterer@proxmox.com>
On Wed Jul 3, 2024 at 10:01 AM CEST, Aaron Lauterer wrote:
> This is one step to make it possible to define the VLAN IDs and ranges
> for bridges.
>
> It is expected to be used in combination with the `-list` magic
> property. Therefore it defines and checks the validity of a single list
> item that could just be a single VLAN tag ID or a range.
>
> Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
> ---
> changes since v2:
> * renamed schema to a more generic one with the use case of the guest
> trunk config in mind
>
> src/PVE/JSONSchema.pm | 34 ++++++++++++++++++++++++++++++++++
> 1 file changed, 34 insertions(+)
>
> diff --git a/src/PVE/JSONSchema.pm b/src/PVE/JSONSchema.pm
> index 115f811..22fe048 100644
> --- a/src/PVE/JSONSchema.pm
> +++ b/src/PVE/JSONSchema.pm
> @@ -81,6 +81,12 @@ register_standard_option('pve-iface', {
> minLength => 2, maxLength => 20,
> });
>
> +register_standard_option('pve-vlan-id-or-range', {
> + description => "VLAN ID or range.",
> + type => 'string', format => 'pve-vlan-id-or-range',
> + minLength => 1, maxLength => 9,
> +});
> +
> register_standard_option('pve-storage-id', {
> description => "The storage identifier.",
> type => 'string', format => 'pve-storage-id',
> @@ -595,6 +601,34 @@ sub pve_verify_iface {
> return $id;
> }
>
> +# vlan id (vids), single or range
> +register_format('pve-vlan-id-or-range', \&pve_verify_vlan_id_or_range);
> +sub pve_verify_vlan_id_or_range {
> + my ($vlan, $noerr) = @_;
> +
> + my $check_vid = sub {
> + my $tag = shift;
> + if ( $tag < 2 || $tag > 4094) {
> + return undef if $noerr;
> + die "invalid VLAN tag '$tag'\n";
> + }
> + };
> +
> + if ($vlan !~ m/^(\d+)([-](\d+))?$/i) {
nit: pretty sure you can ommit the [] brackets here and you could use a
non-capturing group to get this somewhat cleaner regex:
^(\d+)(?:-(\d+))?$
also not sure this needs to be case insensitive, but it's probably fine.
by using a non capturing group you don't get the useless "-" in the
second group...
> + return undef if $noerr;
> + die "invalid VLAN configuration '$vlan'\n";
> + }
> + my $start = $1;
> + my $end = $3;
... so this becomes:
my $end = $2;
> + return undef if (!defined $check_vid->($start));
nit: there is an extra space here.
> + if ($end) {
> + return undef if (!defined $check_vid->($end));
> + die "VLAN range must go from lower to higher tag '$vlan'" if $start >= $end && !$noerr;
> + }
> +
> + return $vlan;
> +}
> +
> # general addresses by name or IP
> register_format('address', \&pve_verify_address);
> sub pve_verify_address {
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
next prev parent reply other threads:[~2024-07-26 12:22 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-03 8:01 [pve-devel] [PATCH common, widget-toolkit, manager v3 0/3] fix #3893: make bridge vids configurable Aaron Lauterer
2024-07-03 8:01 ` [pve-devel] [PATCH common v3 1/3] tools: add check_list_empty function Aaron Lauterer
2024-07-03 8:01 ` [pve-devel] [PATCH common v3 2/3] fix #3893: network: add vlan id and range parameter definitions Aaron Lauterer
2024-07-26 12:22 ` Shannon Sterz [this message]
2024-07-03 8:01 ` [pve-devel] [PATCH common v3 3/3] inotify: interfaces: make sure bridge_vids use space as separator Aaron Lauterer
2024-07-03 8:01 ` [pve-devel] [PATCH widget-toolkit v3] fix #3892: Network: add bridge vids field for bridge_vids Aaron Lauterer
2024-07-26 12:22 ` Shannon Sterz
2024-07-29 10:25 ` Aaron Lauterer
2024-07-29 10:42 ` Shannon Sterz
2024-07-03 8:01 ` [pve-devel] [PATCH manager v3 5/6] fix #3893: api: network: add bridge_vids parameter Aaron Lauterer
2024-07-26 12:23 ` Shannon Sterz
2024-07-03 8:01 ` [pve-devel] [PATCH manager v3 6/6] fix #3893: ui: network: enable bridge_vids field Aaron Lauterer
2024-07-23 11:24 ` [pve-devel] [PATCH common, widget-toolkit, manager v3 0/3] fix #3893: make bridge vids configurable Stefan Hanreich
2024-07-23 13:33 ` [pve-devel] [PATCH widget-toolkit v3 7/6 follow-up] Network: add explanation for bridge vids field Aaron Lauterer
2024-07-26 12:23 ` Shannon Sterz
2024-07-26 12:22 ` [pve-devel] [PATCH common, widget-toolkit, manager v3 0/3] fix #3893: make bridge vids configurable Shannon Sterz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=D2ZGTREIBH0A.1O19J6KJ5SMN0@proxmox.com \
--to=s.sterz@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox