[PATCH proxmox-ve-rs v5 08/46] frr: implement support for call and exit action

Stefan Hanreich
2026-05-05T15:40:19Z

They're required internally for implementing route maps for EVPN zones
with an exit node configured, but users can also utilize them to
create complex route maps via the pve-network API / section-config
format.

Signed-off-by: Stefan Hanreich <s.hanreich@proxmox.com>
---
proxmox-frr/src/ser/route_map.rs | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)

diff --git a/proxmox-frr/src/ser/route_map.rs b/proxmox-frr/src/ser/route_map.rs
index bceff18..7a3a30d 100644
--- a/proxmox-frr/src/ser/route_map.rs
+++ b/proxmox-frr/src/ser/route_map.rs
@@ -137,6 +137,21 @@ pub enum RouteMapSet {
Community(String),
}

+/// The exit action for a route map.
+///
+/// This can be optionally specified to override the default behavior of FRR to terminate
+/// evaluating the route map if an entry matches.
+#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
+#[serde(tag = "key", content = "value")]
+pub enum RouteMapExitAction {
+ #[serde(rename = "on-match next")]
+ OnMatchNext,
+ #[serde(rename = "on-match goto")]
+ OnMatchGoto(u16),
+ #[serde(rename = "continue")]
+ Continue(u16),
+}
+
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
pub struct RouteMapName(String);

@@ -160,5 +175,9 @@ pub struct RouteMapEntry {
#[serde(default)]
pub sets: Vec<RouteMapSet>,
#[serde(default)]
+ pub call: Option<RouteMapName>,
+ #[serde(default)]
+ pub exit_action: Option<RouteMapExitAction>,
+ #[serde(default)]
pub custom_frr_config: Vec<String>,
}
--
2.47.3