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 CD8C91FF140 for ; Fri, 27 Mar 2026 11:47:51 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 27CFE57B9; Fri, 27 Mar 2026 11:48:15 +0100 (CET) Message-ID: Date: Fri, 27 Mar 2026 11:47:40 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH pve-network 09/13] sdn: generate route map / prefix list configuration on sdn apply To: Stefan Hanreich , pve-devel@lists.proxmox.com References: <20260325094142.174364-1-s.hanreich@proxmox.com> <20260325094142.174364-24-s.hanreich@proxmox.com> Content-Language: en-US From: Hannes Laimer In-Reply-To: <20260325094142.174364-24-s.hanreich@proxmox.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1774608411076 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.081 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: WLX4OSTVSOXZNEZZJAFND64POFKX5EQV X-Message-ID-Hash: WLX4OSTVSOXZNEZZJAFND64POFKX5EQV X-MailFrom: h.laimer@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: `has_pending_changes` should also include checks for route-maps or prefix-lists On 2026-03-25 10:44, Stefan Hanreich wrote: > 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, > ); > } >