From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id C57281FF136 for ; Mon, 04 May 2026 18:08:21 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id A2EE03B5B; Mon, 4 May 2026 18:05:26 +0200 (CEST) From: Stefan Hanreich To: pve-devel@lists.proxmox.com Subject: [PATCH pve-network v4 33/47] sdn: generate route map / prefix list configuration on sdn apply Date: Mon, 4 May 2026 18:03:30 +0200 Message-ID: <20260504160350.395470-34-s.hanreich@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260504160350.395470-1-s.hanreich@proxmox.com> References: <20260504160350.395470-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: 1777910534878 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.827 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 URIBL_BLACK 3 Contains an URL listed in the URIBL blacklist [sdn.pm] Message-ID-Hash: 5IYPCFFHII2RZI54BLJK4JI75MI4PXJF X-Message-ID-Hash: 5IYPCFFHII2RZI54BLJK4JI75MI4PXJF 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 | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/PVE/Network/SDN.pm b/src/PVE/Network/SDN.pm index ab97a59..2b3dead 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; @@ -427,9 +435,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 = {}; @@ -440,7 +450,11 @@ 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