From: Christoph Heiss <c.heiss@proxmox.com>
To: pbs-devel@lists.proxmox.com
Subject: [PATCH proxmox v2 1/3] fix #6121: network-api: api: add `bond-miimon` option for interfaces
Date: Mon, 9 Nov 2026 15:28:14 +0100 [thread overview]
Message-ID: <20261109143117.778971-2-c.heiss@proxmox.com> (raw)
In-Reply-To: <20261109143117.778971-1-c.heiss@proxmox.com>
Partially fixes #6121 [0].
Adds a new 'bond-miimon' option to the network interface API for
specifying the link monitoring interval.
Linux restricts the miimon value to 0..INT_MAX [0], which is reflected
in the API.
[0] https://bugzilla.proxmox.com/show_bug.cgi?id=6121
[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/bonding/bond_options.c?h=v7.3#n404
Reviewed-by: Christian Ebner <c.ebner@proxmox.com>
Tested-by: Christian Ebner <c.ebner@proxmox.com>
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
---
Changes v1 -> v2:
* changed underlying miimon value type from u8 to u32, restricting it
to INT_MAX
proxmox-network-api/src/api_impl.rs | 9 +++++++++
proxmox-network-api/src/api_types.rs | 22 ++++++++++++++++++++++
2 files changed, 31 insertions(+)
diff --git a/proxmox-network-api/src/api_impl.rs b/proxmox-network-api/src/api_impl.rs
index 78f499c5..0a603017 100644
--- a/proxmox-network-api/src/api_impl.rs
+++ b/proxmox-network-api/src/api_impl.rs
@@ -162,6 +162,9 @@ pub fn create_interface(iface: String, config: InterfaceUpdater) -> Result<(), E
interface.bond_xmit_hash_policy = config.bond_xmit_hash_policy;
}
}
+ if config.bond_miimon.is_some() {
+ interface.bond_miimon = config.bond_miimon;
+ }
if let Some(slaves) = &config.slaves {
interface.set_bond_slave_list(slaves)?;
}
@@ -295,6 +298,9 @@ pub fn update_interface(
DeletableInterfaceProperty::BondXmitHashPolicy => {
interface.bond_xmit_hash_policy = None
}
+ DeletableInterfaceProperty::BondMiimon => {
+ interface.bond_miimon = None;
+ }
}
}
}
@@ -335,6 +341,9 @@ pub fn update_interface(
}
interface.bond_xmit_hash_policy = update.bond_xmit_hash_policy;
}
+ if update.bond_miimon.is_some() {
+ interface.bond_miimon = update.bond_miimon;
+ }
}
if let Some(cidr) = update.cidr {
diff --git a/proxmox-network-api/src/api_types.rs b/proxmox-network-api/src/api_types.rs
index 58dd7c94..9b267458 100644
--- a/proxmox-network-api/src/api_types.rs
+++ b/proxmox-network-api/src/api_types.rs
@@ -166,6 +166,14 @@ pub const NETWORK_INTERFACE_LIST_SCHEMA: Schema =
type: BondXmitHashPolicy,
optional: true,
},
+ "bond-miimon": {
+ description: "Link monitoring interval in milliseconds for bond interfaces.",
+ type: Integer,
+ optional: true,
+ default: 100,
+ minimum: 0,
+ maximum: i32::MAX as i64,
+ },
altnames: {
description: "List of altnames for this interface",
type: Array,
@@ -240,6 +248,8 @@ pub struct Interface {
pub bond_primary: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bond_xmit_hash_policy: Option<BondXmitHashPolicy>,
+ #[serde(rename = "bond-miimon", skip_serializing_if = "Option::is_none")]
+ pub bond_miimon: Option<u32>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub altnames: Vec<String>,
@@ -271,6 +281,7 @@ impl Interface {
bond_mode: None,
bond_primary: None,
bond_xmit_hash_policy: None,
+ bond_miimon: None,
altnames: Vec::new(),
}
}
@@ -363,6 +374,8 @@ pub enum DeletableInterfaceProperty {
/// Delete bond transmit hash policy
#[serde(rename = "bond_xmit_hash_policy")]
BondXmitHashPolicy,
+ /// Delete bond miimon (set to default 100)
+ BondMiimon,
}
#[api(
@@ -447,6 +460,14 @@ pub enum DeletableInterfaceProperty {
type: BondXmitHashPolicy,
optional: true,
},
+ "bond-miimon": {
+ description: "Link monitoring interval in milliseconds for bond interfaces.",
+ type: Integer,
+ optional: true,
+ default: 100,
+ minimum: 0,
+ maximum: i32::MAX as i64,
+ },
slaves: {
schema: NETWORK_INTERFACE_LIST_SCHEMA,
optional: true,
@@ -480,5 +501,6 @@ pub struct InterfaceUpdater {
pub bond_primary: Option<String>,
#[serde(rename = "bond_xmit_hash_policy")]
pub bond_xmit_hash_policy: Option<BondXmitHashPolicy>,
+ pub bond_miimon: Option<u32>,
pub slaves: Option<String>,
}
--
2.56.0
next prev parent reply other threads:[~2026-11-09 14:31 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-09 14:28 [PATCH proxmox{,-backup} v2 0/3] fix #6121: add 'bond-miimon' option for network interfaces Christoph Heiss
2026-11-09 14:28 ` Christoph Heiss [this message]
2026-11-09 14:28 ` [PATCH proxmox v2 2/3] fix #6121: network-api: config: add support for `bond-miimon` option Christoph Heiss
2026-11-09 14:57 ` Gabriel Goller
2026-11-10 10:13 ` Christoph Heiss
2026-11-10 10:58 ` Gabriel Goller
2026-11-09 14:28 ` [PATCH proxmox-backup v2 3/3] api: network: reuse interface create/update methods from network-api Christoph Heiss
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261109143117.778971-2-c.heiss@proxmox.com \
--to=c.heiss@proxmox.com \
--cc=pbs-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.