]>
git.proxmox.com Git - pve-network.git/blob - PVE/Network/SDN/Zones/QinQPlugin.pm
c9f522bf6a22bd3b170ae0f0cd7bfc564c0c4b35
1 package PVE
::Network
::SDN
::Zones
::QinQPlugin
;
5 use PVE
::Network
::SDN
::Zones
::VlanPlugin
;
7 use base
('PVE::Network::SDN::Zones::VlanPlugin');
17 description
=> "vlan tag",
21 enum
=> ['802.1q', '802.1ad'],
24 description
=> "vlan protocol",
32 nodes
=> { optional
=> 1},
33 'uplink-id' => { optional
=> 0 },
34 'tag' => { optional
=> 0 },
35 'vlan-protocol' => { optional
=> 1 },
39 # Plugin implementation
40 sub generate_sdn_config
{
41 my ($class, $plugin_config, $zoneid, $vnetid, $vnet, $uplinks, $config) = @_;
43 my $tag = $vnet->{tag
};
44 my $transport_tag = $plugin_config->{tag
};
45 my $mtu = $vnet->{mtu
};
46 my $alias = $vnet->{alias
};
47 my $vlanprotocol = $plugin_config->{'vlan-protocol'};
48 my $uplink = $plugin_config->{'uplink-id'};
50 die "missing vlan tag" if !$tag;
51 die "missing transport vlan tag" if !$transport_tag;
53 my $iface = $uplinks->{$uplink}->{name
};
54 $iface = "uplink${uplink}" if !$iface;
55 $iface .= ".$transport_tag";
58 my @iface_config = ();
59 push @iface_config, "vlan-protocol $vlanprotocol" if $vlanprotocol;
60 push @iface_config, "mtu $mtu" if $mtu;
61 push(@{$config->{$iface}}, @iface_config) if !$config->{$iface};
66 push @iface_config, "bridge_ports $iface";
67 push @iface_config, "bridge_stp off";
68 push @iface_config, "bridge_fd 0";
69 push @iface_config, "mtu $mtu" if $mtu;
70 push @iface_config, "alias $alias" if $alias;
71 push(@{$config->{$vnetid}}, @iface_config) if !$config->{$vnetid};