From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id A52691FF13B for ; Wed, 25 Mar 2026 10:44:30 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 8BC5510654; Wed, 25 Mar 2026 10:42:48 +0100 (CET) From: Stefan Hanreich To: pve-devel@lists.proxmox.com Subject: [PATCH pve-network 09/13] sdn: generate route map / prefix list configuration on sdn apply Date: Wed, 25 Mar 2026 10:41:34 +0100 Message-ID: <20260325094142.174364-24-s.hanreich@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260325094142.174364-1-s.hanreich@proxmox.com> References: <20260325094142.174364-1-s.hanreich@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1774431664638 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.719 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: SMBCEE2MSK7AESALASNCW2SIGA62MEWI X-Message-ID-Hash: SMBCEE2MSK7AESALASNCW2SIGA62MEWI X-MailFrom: s.hanreich@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Commit the newly introduced configuration files to the running configuration when applying the SDN configuration, so the FRR config generation logic can use them to generate the FRR configuration for them. Signed-off-by: Stefan Hanreich --- src/PVE/Network/SDN.pm | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/PVE/Network/SDN.pm b/src/PVE/Network/SDN.pm index 0bb36bf..93b6698 100644 --- a/src/PVE/Network/SDN.pm +++ b/src/PVE/Network/SDN.pm @@ -25,6 +25,8 @@ use PVE::Network::SDN::Subnets; use PVE::Network::SDN::Dhcp; use PVE::Network::SDN::Frr; use PVE::Network::SDN::Fabrics; +use PVE::Network::SDN::RouteMaps; +use PVE::Network::SDN::PrefixLists; my $RUNNING_CFG_FILENAME = "sdn/.running-config"; @@ -207,12 +209,16 @@ sub compile_running_cfg { my $controllers_cfg = PVE::Network::SDN::Controllers::config(); my $subnets_cfg = PVE::Network::SDN::Subnets::config(); my $fabrics_cfg = PVE::Network::SDN::Fabrics::config(); + my $route_maps_cfg = PVE::Network::SDN::RouteMaps::config(); + my $prefix_lists_cfg = PVE::Network::SDN::PrefixLists::config(); my $vnets = { ids => $vnets_cfg->{ids} }; my $zones = { ids => $zones_cfg->{ids} }; my $controllers = { ids => $controllers_cfg->{ids} }; my $subnets = { ids => $subnets_cfg->{ids} }; my $fabrics = { ids => $fabrics_cfg->to_sections() }; + my $route_maps = { ids => $route_maps_cfg->to_sections() }; + my $prefix_lists = { ids => $prefix_lists_cfg->to_sections() }; $cfg = { version => $version, @@ -221,6 +227,8 @@ sub compile_running_cfg { controllers => $controllers, subnets => $subnets, fabrics => $fabrics, + 'route-maps' => $route_maps, + 'prefix-lists' => $prefix_lists, }; return $cfg; @@ -425,9 +433,11 @@ configuration. =cut sub generate_frr_raw_config { - my ($running_config, $fabric_config) = @_; + my ($running_config, $fabric_config, $route_map_config, $prefix_list_config) = @_; $running_config = PVE::Network::SDN::running_config() if !$running_config; + $prefix_list_config = PVE::Network::SDN::PrefixLists::config(1) if !$prefix_list_config; + $route_map_config = PVE::Network::SDN::RouteMaps::config(1) if !$route_map_config; $fabric_config = PVE::Network::SDN::Fabrics::config(1) if !$fabric_config; my $frr_config = {}; @@ -438,7 +448,7 @@ sub generate_frr_raw_config { my $nodename = PVE::INotify::nodename(); return PVE::RS::SDN::get_frr_raw_config( - $frr_config->{'frr'}, $fabric_config, $nodename, + $frr_config->{'frr'}, $prefix_list_config, $route_map_config, $fabric_config, $nodename, ); } -- 2.47.3