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 35DB41FF136 for ; Mon, 04 May 2026 18:32:25 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id F24C8B876; Mon, 4 May 2026 18:32:10 +0200 (CEST) From: Stefan Hanreich To: pve-devel@lists.proxmox.com Subject: [PATCH proxmox-ve-rs 1/9] frr: ospf: add redistribute setting Date: Mon, 4 May 2026 18:31:46 +0200 Message-ID: <20260504163157.429628-2-s.hanreich@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260504163157.429628-1-s.hanreich@proxmox.com> References: <20260504163157.429628-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: 1777912219482 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.657 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: QAGYADBACJGVGGMOMZPKK665EH2XC4GM X-Message-ID-Hash: QAGYADBACJGVGGMOMZPKK665EH2XC4GM 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