1 package PVE
::Network
::SDN
::Zones
::VlanPlugin
;
5 use PVE
::Network
::SDN
::Zones
::Plugin
;
7 use base
('PVE::Network::SDN::Zones::Plugin');
13 PVE
::JSONSchema
::register_format
('pve-sdn-vlanrange', \
&pve_verify_sdn_vlanrange
);
14 sub pve_verify_sdn_vlanrange
{
17 PVE
::Network
::SDN
::Zones
::Plugin
::parse_tag_number_or_range
($vlanstr, '4096');
26 minimum
=> 1, maximum
=> 4096,
27 description
=> 'Uplink interface',
35 nodes
=> { optional
=> 1},
36 'uplink-id' => { optional
=> 0 },
40 # Plugin implementation
41 sub generate_sdn_config
{
42 my ($class, $plugin_config, $zoneid, $vnetid, $vnet, $uplinks, $config) = @_;
44 my $tag = $vnet->{tag
};
45 my $mtu = $vnet->{mtu
};
46 my $alias = $vnet->{alias
};
47 my $uplink = $plugin_config->{'uplink-id'};
49 die "missing vlan tag" if !$tag;
51 my $iface = $uplinks->{$uplink}->{name
};
52 $iface = "uplink${uplink}" if !$iface;
56 my @iface_config = ();
57 push @iface_config, "mtu $mtu" if $mtu;
58 push(@{$config->{$iface}}, @iface_config) if !$config->{$iface};
62 push @iface_config, "bridge_ports $iface";
63 push @iface_config, "bridge_stp off";
64 push @iface_config, "bridge_fd 0";
65 push @iface_config, "mtu $mtu" if $mtu;
66 push @iface_config, "alias $alias" if $alias;
67 push(@{$config->{$vnetid}}, @iface_config) if !$config->{$vnetid};