X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=PVE%2FNetwork%2FSDN%2FVxlanPlugin.pm;h=b0b48c4f107f59fabf01139ce8418259f7b97f88;hb=d0b4e1c2ca586a1a39406a6b9425f5854807e332;hp=99cd2afd6057f8bb526c8bc0d65ece846d3cd042;hpb=87d8b62369bd7c275edb01b54d1155b1912beb4c;p=pve-network.git diff --git a/PVE/Network/SDN/VxlanPlugin.pm b/PVE/Network/SDN/VxlanPlugin.pm index 99cd2af..b0b48c4 100644 --- a/PVE/Network/SDN/VxlanPlugin.pm +++ b/PVE/Network/SDN/VxlanPlugin.pm @@ -235,6 +235,41 @@ sub on_update_hook { } } } + + # verify that router exist + if (defined($sdn_cfg->{ids}->{$transportid}->{router})) { + my $router = $sdn_cfg->{ids}->{$transportid}->{router}; + if (!defined($sdn_cfg->{ids}->{$router})) { + die "router $router don't exist"; + } else { + die "$router is not a router type" if $sdn_cfg->{ids}->{$router}->{type} ne 'frr'; + } + + #vrf && vrf-vxlan need to be defined with router + my $vrf = $sdn_cfg->{ids}->{$transportid}->{vrf}; + if (!defined($vrf)) { + die "missing vrf option"; + } else { + # verify that vrf is not already declared in another transport + foreach my $id (keys %{$sdn_cfg->{ids}}) { + next if $id eq $transportid; + die "vrf $vrf is already declared in $id" + if (defined($sdn_cfg->{ids}->{$id}->{vrf}) && $sdn_cfg->{ids}->{$id}->{vrf} eq $vrf); + } + } + + my $vrfvxlan = $sdn_cfg->{ids}->{$transportid}->{'vrf-vxlan'}; + if (!defined($vrfvxlan)) { + die "missing vrf-vxlan option"; + } else { + # verify that vrf-vxlan is not already declared in another transport + foreach my $id (keys %{$sdn_cfg->{ids}}) { + next if $id eq $transportid; + die "vrf-vxlan $vrfvxlan is already declared in $id" + if (defined($sdn_cfg->{ids}->{$id}->{'vrf-vxlan'}) && $sdn_cfg->{ids}->{$id}->{'vrf-vxlan'} eq $vrfvxlan); + } + } + } } 1;