diff --git a/src/PVE/INotify.pm b/src/PVE/INotify.pm index f837596..1a60708 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, @@ -1201,6 +1202,10 @@ sub __interface_to_string { $raw .= "\tbond-xmit-hash-policy $d->{'bond_xmit_hash_policy'}\n"; } $done->{'bond_xmit_hash_policy'} = 1; + } elsif ($d->{type} eq 'vlan') { + die "$iface: wrong vlan-protocol $d->{'vlan-protocol'}\n" + if $d->{'vlan-protocol'} && $d->{'vlan-protocol'} ne '802.1ad' && $d->{'vlan-protocol'} ne '802.1q'; + } elsif ($d->{type} eq 'vxlan') { foreach my $k (qw(vxlan-id vxlan-svcnodeip vxlan-physdev vxlan-local-tunnelip)) { @@ -1441,11 +1446,13 @@ sub __write_etc_network_interfaces { if ($n->{type} eq 'bridge' && !$n->{bridge_vlan_aware}) { die "vlan '$iface' - bridge vlan aware is not enabled on parent '$p'\n"; - } elsif ($n->{type} ne 'eth' && $n->{type} ne 'bridge' && $n->{type} ne 'bond') { + } elsif ($n->{type} ne 'eth' && $n->{type} ne 'bridge' && $n->{type} ne 'bond' && $n->{type} ne 'vlan') { die "vlan '$iface' - wrong interface type on parent '$p' " . - "('$n->{type}' != 'eth|bond|bridge' )\n"; + "('$n->{type}' != 'eth|bond|bridge|vlan' )\n"; } + &$check_mtu($ifaces, $p, $iface); + } } 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 @@ -301,6 +301,15 @@ $config->{ifaces}->{'vmbr1.100'} = { }; $config->{ifaces}->{'bond0.100'} = { + type => 'vlan', + mtu => 1300, + method => 'manual', + families => ['inet'], + 'vlan-protocol' => '802.1ad', + autostart => 1 +}; + +$config->{ifaces}->{'bond0.100.10'} = { type => 'vlan', mtu => 1300, method => 'manual', @@ -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