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 57E1F1FF13A for ; Wed, 01 Apr 2026 16:43:23 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 478C432B8A; Wed, 1 Apr 2026 16:41:13 +0200 (CEST) From: Stefan Hanreich To: pve-devel@lists.proxmox.com Subject: [PATCH pve-network v2 20/34] controller: bgp: evpn: adapt to new match / set frr config syntax Date: Wed, 1 Apr 2026 16:39:29 +0200 Message-ID: <20260401143957.386809-21-s.hanreich@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260401143957.386809-1-s.hanreich@proxmox.com> References: <20260401143957.386809-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: 1775054349178 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.707 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: EU2Y6YWIXXNHJCBNJKAAC27XUTD65MLR X-Message-ID-Hash: EU2Y6YWIXXNHJCBNJKAAC27XUTD65MLR 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: proxmox-frr has changed the representation of match / set statements in its structs. It has changed to generic key / value fields, where the keys specify the literal name of the key in the FRR configuration. Adapt the controllers to use the new fields so the configuration gets generated properly. Signed-off-by: Stefan Hanreich --- src/PVE/Network/SDN/Controllers/BgpPlugin.pm | 7 +++--- src/PVE/Network/SDN/Controllers/EvpnPlugin.pm | 24 ++++++++----------- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/src/PVE/Network/SDN/Controllers/BgpPlugin.pm b/src/PVE/Network/SDN/Controllers/BgpPlugin.pm index 8891541..d54c9ec 100644 --- a/src/PVE/Network/SDN/Controllers/BgpPlugin.pm +++ b/src/PVE/Network/SDN/Controllers/BgpPlugin.pm @@ -136,13 +136,12 @@ sub generate_frr_config { $config->{frr}->{protocol_routemaps}->{bgp}->{v4} = "correct_src"; my $routemap_config = { - protocol_type => 'ip', - match_type => 'address', - value => { list_type => 'prefixlist', list_name => 'loopbacks_ips' }, + key => 'ip address prefix-list', + value => 'loopbacks_ips', }; my $routemap = { matches => [$routemap_config], - sets => [{ set_type => 'src', value => $ifaceip }], + sets => [{ key => 'src', value => $ifaceip }], action => "permit", seq => 1, }; diff --git a/src/PVE/Network/SDN/Controllers/EvpnPlugin.pm b/src/PVE/Network/SDN/Controllers/EvpnPlugin.pm index d2825f5..3e643b1 100644 --- a/src/PVE/Network/SDN/Controllers/EvpnPlugin.pm +++ b/src/PVE/Network/SDN/Controllers/EvpnPlugin.pm @@ -329,9 +329,8 @@ sub generate_zone_frr_config { if (!$exitnodes_primary || $exitnodes_primary eq $local_node) { # Filter default route coming from other exit nodes on primary node my $routemap_config_v6 = { - protocol_type => 'ipv6', - match_type => 'address', - value => { list_type => 'prefixlist', list_name => 'only_default_v6' }, + key => 'ipv6 address prefix-list', + value => 'only_default_v6', }; my $routemap_v6 = { seq => 1, matches => [$routemap_config_v6], action => "deny" }; unshift( @@ -339,23 +338,21 @@ sub generate_zone_frr_config { ); my $routemap_config = { - protocol_type => 'ip', - match_type => 'address', - value => { list_type => 'prefixlist', list_name => 'only_default' }, + key => 'ip address prefix-list', + value => 'only_default', }; my $routemap = { seq => 1, matches => [$routemap_config], action => "deny" }; unshift(@{ $config->{frr}->{routemaps}->{'MAP_VTEP_IN'} }, $routemap); } elsif ($exitnodes_primary ne $local_node) { my $routemap_config_v6 = { - protocol_type => 'ipv6', - match_type => 'address', - value => { list_type => 'prefixlist', list_name => 'only_default_v6' }, + key => 'ipv6 address prefix-list', + value => 'only_default_v6', }; my $routemap_v6 = { seq => 1, matches => [$routemap_config_v6], - sets => [{ set_type => 'metric', value => 200 }], + sets => [{ key => 'metric', value => 200 }], action => "permit", }; unshift( @@ -363,14 +360,13 @@ sub generate_zone_frr_config { ); my $routemap_config = { - protocol_type => 'ip', - match_type => 'address', - value => { list_type => 'prefixlist', list_name => 'only_default' }, + key => 'ip address prefix-list', + value => 'only_default', }; my $routemap = { seq => 1, matches => [$routemap_config], - sets => [{ set_type => 'metric', value => 200 }], + sets => [{ key => 'metric', value => 200 }], action => "permit", }; unshift(@{ $config->{frr}->{routemaps}->{'MAP_VTEP_OUT'} }, $routemap); -- 2.47.3