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 D9EDA1FF13A for ; Wed, 13 May 2026 17:15:20 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id C704315669; Wed, 13 May 2026 17:14:58 +0200 (CEST) From: Stefan Hanreich To: pve-devel@lists.proxmox.com Subject: [PATCH proxmox-ve-rs v2 1/9] frr: ospf: add redistribute setting Date: Wed, 13 May 2026 17:13:51 +0200 Message-ID: <20260513151411.383388-2-s.hanreich@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260513151411.383388-1-s.hanreich@proxmox.com> References: <20260513151411.383388-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: 1778685254417 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.606 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_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [ospf.rs] Message-ID-Hash: D7RJ25ZVGSYJDTWAJPVMXZHRBFV3QDJF X-Message-ID-Hash: D7RJ25ZVGSYJDTWAJPVMXZHRBFV3QDJF 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: Implements redistributing routes from other protocols into the OSPF fabric. This can be useful when utilizing multiple routing protocol on the same node, but also if routes in addition to the loopback interface of the fabric should be distributed via OSPF. Signed-off-by: Stefan Hanreich --- proxmox-frr/src/ser/ospf.rs | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/proxmox-frr/src/ser/ospf.rs b/proxmox-frr/src/ser/ospf.rs index 8ab9136..c18725e 100644 --- a/proxmox-frr/src/ser/ospf.rs +++ b/proxmox-frr/src/ser/ospf.rs @@ -44,6 +44,35 @@ impl Area { } } +#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)] +#[serde(rename_all = "lowercase")] +/// OSPF redistribution source protocols +pub enum OspfRedistributionSource { + /// redistribute BGP routes + Bgp, + /// redistribute connected routes + Connected, + /// redistribute IS-IS routes + Isis, + /// redistribute kernel routes + Kernel, + /// redistribute Openfabric routes + Openfabric, + /// redistribute OSPF routes + Ospf, + /// redistribute static routes + Static, +} + +#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)] +pub struct OspfRedistribution { + pub source: OspfRedistributionSource, + #[serde(skip_serializing_if = "Option::is_none")] + pub metric: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub route_map: Option, +} + /// The OSPF router properties. /// /// Currently the only property of a OSPF router is the router_id. The router_id is used to @@ -53,11 +82,16 @@ impl Area { #[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)] pub struct OspfRouter { pub router_id: Ipv4Addr, + #[serde(default)] + pub redistribute: Vec, } impl OspfRouter { pub fn new(router_id: Ipv4Addr) -> Self { - Self { router_id } + Self { + router_id, + redistribute: Vec::new(), + } } pub fn router_id(&self) -> &Ipv4Addr { -- 2.47.3