mirror of
https://git.proxmox.com/git/pve-common
synced 2025-04-28 17:07:50 +00:00
fix #3893: network: add vlan id and range parameter definitions
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>
This commit is contained in:
parent
a8b8920d54
commit
0219596da2
@ -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,39 @@ 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 $valid_vid = sub {
|
||||
my $tag = shift;
|
||||
if ($tag < 2 || $tag > 4094) {
|
||||
return 0 if $noerr;
|
||||
die "invalid VLAN tag '$tag'\n";
|
||||
}
|
||||
return 1;
|
||||
};
|
||||
|
||||
if ($vlan !~ m/^(\d+)(?:-(\d+))?$/) {
|
||||
return if $noerr;
|
||||
die "invalid VLAN configuration '$vlan'\n";
|
||||
}
|
||||
my $start = $1;
|
||||
my $end = $2;
|
||||
return if !$valid_vid->($start);
|
||||
if ($end) {
|
||||
return if !$valid_vid->($end);
|
||||
|
||||
if ($start >= $end) {
|
||||
return if $noerr;
|
||||
die "VLAN range must go from lower to higher tag '$vlan'\n";
|
||||
}
|
||||
}
|
||||
|
||||
return $vlan;
|
||||
}
|
||||
|
||||
# general addresses by name or IP
|
||||
register_format('address', \&pve_verify_address);
|
||||
sub pve_verify_address {
|
||||
|
Loading…
Reference in New Issue
Block a user