[pve-devel] [PATCH pve-common 1/2] Inotify: add support for 802.1ad stacked vlans
Alexandre Derumier
aderumier at odiso.com
Mon Sep 24 09:52:46 CEST 2018
---
src/PVE/INotify.pm | 26 ++++++++++++++++++++++++-
test/etc_network_interfaces/t.create_network.pl | 14 +++++++++++++
2 files changed, 39 insertions(+), 1 deletion(-)
diff --git a/src/PVE/INotify.pm b/src/PVE/INotify.pm
index f837596..de61d79 100644
--- a/src/PVE/INotify.pm
+++ b/src/PVE/INotify.pm
@@ -954,6 +954,7 @@ sub __read_etc_network_interfaces {
'bridge-multicast-flood' => 1,
'bond_miimon' => 1,
'bond_xmit_hash_policy' => 1,
+ 'vlan-protocol' => 1,
'vxlan-id' => 1,
'vxlan-svcnodeip' => 1,
'vxlan-physdev' => 1,
@@ -1432,7 +1433,25 @@ sub __write_etc_network_interfaces {
# check vlan
foreach my $iface (keys %$ifaces) {
my $d = $ifaces->{$iface};
- if ($d->{type} eq 'vlan' && $iface =~ m/^(\S+)\.\d+$/) {
+ if ($d->{type} eq 'vlan' && $iface =~ m/^(\S+\.\d+)\.\d+$/) {
+ my $p = $1;
+ my $n = $ifaces->{$p};
+
+ die "vlan '$iface' - unable to find parent '$p'\n"
+ if !$n;
+
+ die "stacked vlan '$iface' - parent '$p' is not a vlan interface "
+ if $n->{type} ne 'vlan';
+
+ die "stacked vlan '$iface' - parent '$p' vlan-protocol is not 802.1ad"
+ if !$n->{'vlan-protocol'} || $n->{'vlan-protocol'} ne '802.1ad';
+
+ die "stacked vlan '$iface' - vlan-protocol can't be 802.1ad"
+ if $d->{'vlan-protocol'} && $d->{'vlan-protocol'} eq '802.1ad';
+
+ &$check_mtu($ifaces, $p, $iface);
+
+ } elsif ($d->{type} eq 'vlan' && $iface =~ m/^(\S+)\.\d+$/) {
my $p = $1;
my $n = $ifaces->{$p};
@@ -1445,8 +1464,13 @@ sub __write_etc_network_interfaces {
die "vlan '$iface' - wrong interface type on parent '$p' " .
"('$n->{type}' != 'eth|bond|bridge' )\n";
}
+
+ die "bridge vlan '$iface' - vlan-protocol can't be 802.1ad"
+ if ($n->{'vlan-protocol'} && $n->{'vlan-protocol'} eq '802.1ad' && $n->{type} eq 'bridge');
+
&$check_mtu($ifaces, $p, $iface);
}
+
}
# check bridgeport option
diff --git a/test/etc_network_interfaces/t.create_network.pl b/test/etc_network_interfaces/t.create_network.pl
index e446f53..bf5b4b6 100644
--- a/test/etc_network_interfaces/t.create_network.pl
+++ b/test/etc_network_interfaces/t.create_network.pl
@@ -305,6 +305,15 @@ $config->{ifaces}->{'bond0.100'} = {
mtu => 1300,
method => 'manual',
families => ['inet'],
+ 'vlan-protocol' => '802.1ad',
+ autostart => 1
+};
+
+$config->{ifaces}->{'bond0.100.10'} = {
+ type => 'vlan',
+ mtu => 1300,
+ method => 'manual',
+ families => ['inet'],
autostart => 1
};
@@ -336,6 +345,11 @@ $bond0_part
auto bond0.100
iface bond0.100 inet manual
mtu 1300
+ vlan-protocol 802.1ad
+
+auto bond0.100.10
+iface bond0.100.10 inet manual
+ mtu 1300
$vmbr0_part
--
2.11.0
More information about the pve-devel
mailing list