]> git.proxmox.com Git - pve-network.git/blobdiff - PVE/Network/SDN/FrrPlugin.pm
add update_delete hook on frr related options
[pve-network.git] / PVE / Network / SDN / FrrPlugin.pm
index 0ea6d4898db0c59d82b326c8bfcec275ce76f991..a628cf297c2fcf1c324a8791f04190caaf9d5039 100644 (file)
@@ -73,13 +73,27 @@ sub generate_frr_config {
 }
 
 sub on_delete_hook {
-    my ($class, $transportid, $sdn_cfg) = @_;
+    my ($class, $routerid, $sdn_cfg) = @_;
 
+    # verify that transport is associated to this router
+    foreach my $id (keys %{$sdn_cfg->{ids}}) {
+        my $sdn = $sdn_cfg->{ids}->{$id};
+        die "router $routerid is used by $id"
+            if (defined($sdn->{router}) && $sdn->{router} eq $routerid);
+    }
 }
 
 sub on_update_hook {
-    my ($class, $transportid, $sdn_cfg) = @_;
-
+    my ($class, $routerid, $sdn_cfg) = @_;
+
+    # verify that asn is not already used by another router
+    my $asn = $sdn_cfg->{ids}->{$routerid}->{asn};
+    foreach my $id (keys %{$sdn_cfg->{ids}}) {
+       next if $id eq $routerid;
+        my $sdn = $sdn_cfg->{ids}->{$id};
+        die "asn $asn is already used by $id"
+            if (defined($sdn->{asn}) && $sdn->{asn} eq $asn);
+    }
 }
 
 1;