[pve-devel] [PATCH v3 pve-common 4/5] Inotify : add check vlan
Dennis Busch
dennis.busch at stacktrace.de
Tue Aug 28 11:58:21 CEST 2018
Hello Alexandre,
your patch kills the option to just create vlans by using e.g.
"bond0.111" as bridge_pots in a vmbr definition on the GUI because it
then complains about a bond0.111 that is not defined. Makes big trouble
at one of our customers. Could you please have another look at this?
Best regards
Dennis
stacktrace GmbH
Querstraße 3 | 96237 Ebersdorf
Amtsgericht Coburg, HRB 5043
Geschäftsführer: Dennis Busch | Jürgen Haas
Tel: +49 9562 78 48 010
Mobil: +49 171 12 62 761
E-Mail: dennis.busch at stacktrace.de
De-Mail: dennis.busch at gmx.de-mail.de
Am 05.07.2018 um 02:56 schrieb Alexandre Derumier:
> verify than parent interface exist
> verify than parent interface type is eth,bond,bridge
> verify than parent bridge is vlan aware if type bridge
> ---
> src/PVE/INotify.pm | 19 ++++++++++++++++
> test/etc_network_interfaces/t.create_network.pl | 30 ++++++++++++++++++++++++-
> 2 files changed, 48 insertions(+), 1 deletion(-)
>
> diff --git a/src/PVE/INotify.pm b/src/PVE/INotify.pm
> index f4a5945..f0f3144 100644
> --- a/src/PVE/INotify.pm
> +++ b/src/PVE/INotify.pm
> @@ -1358,6 +1358,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+$/) {
> + my $p = $1;
> + my $n = $ifaces->{$p};
> +
> + die "vlan '$iface' - unable to find parent '$p'\n"
> + if $n->{exists} eq 0;
> +
> + 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') {
> + die "vlan '$iface' - wrong interface type on parent '$p' " .
> + "('$n->{type}' != 'eth|bond|bridge' )\n";
> + }
> + }
> + }
> +
> # check bridgeport option
> my $bridgeports = {};
> my $bridges = {};
> diff --git a/test/etc_network_interfaces/t.create_network.pl b/test/etc_network_interfaces/t.create_network.pl
> index da47999..fda7237 100644
> --- a/test/etc_network_interfaces/t.create_network.pl
> +++ b/test/etc_network_interfaces/t.create_network.pl
> @@ -60,7 +60,6 @@ $config->{ifaces}->{vmbr1} = {
> autostart => 1
> };
>
> -
> $config->{ifaces}->{vmbr2} = {
> type => 'bridge',
> method => 'manual',
> @@ -116,6 +115,26 @@ $config->{ifaces}->{vxlan3} = {
> autostart => 1
> };
>
> +$config->{ifaces}->{'vmbr1.100'} = {
> + type => 'vlan',
> + method => 'manual',
> + families => ['inet'],
> + autostart => 1
> +};
> +
> +$config->{ifaces}->{'bond0.100'} = {
> + type => 'vlan',
> + method => 'manual',
> + families => ['inet'],
> + autostart => 1
> +};
> +
> +$config->{ifaces}->{'eth1.100'} = {
> + type => 'vlan',
> + method => 'manual',
> + families => ['inet'],
> + autostart => 1
> +};
>
> expect load('loopback') . <<"CHECK";
> source-directory interfaces.d
> @@ -134,6 +153,9 @@ iface eth2 inet manual
> auto eth3
> iface eth3 inet manual
>
> +auto eth1.100
> +iface eth1.100 inet manual
> +
> auto bond0
> iface bond0 inet manual
> bond-slaves eth2 eth3
> @@ -141,6 +163,9 @@ iface bond0 inet manual
> bond-mode 802.3ad
> bond-xmit-hash-policy layer3+4
>
> +auto bond0.100
> +iface bond0.100 inet manual
> +
> auto vmbr0
> iface vmbr0 inet static
> address 10.0.0.2
> @@ -172,6 +197,9 @@ iface vmbr3 inet manual
> bridge-vlan-aware yes
> bridge-vids 2-10
>
> +auto vmbr1.100
> +iface vmbr1.100 inet manual
> +
> auto vxlan1
> iface vxlan1 inet manual
> vxlan-id 1
>
More information about the pve-devel
mailing list