From: Christoph Heiss <c.heiss@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [PATCH installer 08/15] install: network: set up management bond if requested
Date: Tue, 8 Sep 2026 12:16:22 +0200 [thread overview]
Message-ID: <20260908101647.1057780-9-c.heiss@proxmox.com> (raw)
In-Reply-To: <20260908101647.1057780-1-c.heiss@proxmox.com>
Adds the necessary configuration to /etc/network/interfaces when bonding
is enabled in the installation config.
A bond named 'bond0' will be created, with the default bridge (as
before) 'vmbr0' on top of that.
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
---
Proxmox/Install.pm | 43 ++++++++++++++++++++++++++++++++++++++++---
1 file changed, 40 insertions(+), 3 deletions(-)
diff --git a/Proxmox/Install.pm b/Proxmox/Install.pm
index 04264a9..9c2b244 100644
--- a/Proxmox/Install.pm
+++ b/Proxmox/Install.pm
@@ -829,8 +829,39 @@ my sub setup_ifupdown2_config {
&& ($_->{protocol} // '') eq 'ra';
} $gateways6->@*;
+ my $bond_opts = Proxmox::Install::Config::get_mngmt_bond_opt();
+ my $bond_enabled = Proxmox::Install::Config::get_mngmt_bond_enabled();
+ if ($bond_enabled) {
+ # When setting up bridged networking, the bond is attached to the main bridge as port.
+ # Otherwise, the bond represents the main management interface, i.e. with the address
+ # configured directly on it.
+
+ $ethdev = 'bond0';
+ my $addr_method = $iso_env->{cfg}->{bridged_network} ? 'manual' : 'static';
+
+ # translate all bond members MACs to their final interface name, either pinned or not
+ my @members;
+ for my $mac ($bond_opts->{members}->@*) {
+ $mac = lc($mac); # normalize into lowercase
+
+ if (defined($netif_pin_map) && defined($netif_pin_map->{$mac})) {
+ push @members, $netif_pin_map->{$mac};
+ } else {
+ my ($if) = grep { $_->{mac} eq $mac } values %$interfaces;
+ push @members, $if->{name};
+ }
+ }
+
+ $ifaces .=
+ "auto $ethdev\niface $ethdev inet $addr_method\n"
+ . "\tbond-ports "
+ . join(' ', @members) . "\n"
+ . "\tbond-mode $bond_opts->{mode}\n"
+ . "\tbond-miimon 100\n";
+ }
+
if ($iso_env->{cfg}->{bridged_network}) {
- $ifaces .= "iface $ethdev $ntype manual\n";
+ $ifaces .= "\niface $ethdev $ntype manual\n" if !$bond_enabled;
$ifaces .=
"\nauto vmbr0\niface vmbr0 $ntype static\n"
@@ -839,11 +870,17 @@ my sub setup_ifupdown2_config {
. "\tbridge-ports $ethdev\n"
. "\tbridge-stp off\n"
. "\tbridge-fd 0\n";
- } else {
- $ifaces .= "auto $ethdev\n" . #
+ } elsif (!$bond_enabled) {
+ $ifaces .= "\nauto $ethdev\n" . #
"iface $ethdev $ntype static\n" . #
"\taddress $cidr\n";
+ if (!$is_gateway6_from_ra) {
+ $ifaces .= "\tgateway $gateway\n";
+ }
+ } else {
+ $ifaces .= "\taddress $cidr\n";
+
if (!$is_gateway6_from_ra) {
$ifaces .= "\tgateway $gateway\n";
}
--
2.55.0
next prev parent reply other threads:[~2026-09-08 10:18 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-08 10:16 [PATCH installer/proxmox 00/15] partially fix #2164: add bond setup across all installers Christoph Heiss
2026-09-08 10:16 ` [PATCH proxmox 01/15] installer-types: use `MacAddress` type where applicable Christoph Heiss
2026-09-08 10:16 ` [PATCH proxmox 02/15] installer-types: answer: add options for configuring management bond Christoph Heiss
2026-09-08 10:16 ` [PATCH installer 03/15] install: run make tidy Christoph Heiss
2026-09-08 10:16 ` [PATCH installer 04/15] tree-wide: use `MacAddress` type instead of string for MAC addresses Christoph Heiss
2026-09-08 10:16 ` [PATCH installer 05/15] install: factor out /etc/network/interfaces setup into own subroutine Christoph Heiss
2026-09-08 10:16 ` [PATCH installer 06/15] install: do not rely on interface name map to be fully populated Christoph Heiss
2026-09-08 10:16 ` [PATCH installer 07/15] install: config: add option for setting up bond on management interface Christoph Heiss
2026-09-08 10:16 ` Christoph Heiss [this message]
2026-09-08 10:16 ` [PATCH installer 09/15] gui: network: factor out name pinning into advanced options dialog Christoph Heiss
2026-09-08 10:16 ` [PATCH installer 10/15] gui: network: add bond setup options to " Christoph Heiss
2026-09-08 10:16 ` [PATCH installer 11/15] auto: pass trough management network bond options to low-level installer Christoph Heiss
2026-09-08 10:16 ` [PATCH installer 12/15] tui: drop long obsolete comment about logo formatting Christoph Heiss
2026-09-08 10:16 ` [PATCH installer 13/15] tui: views: add widget for displaying a group of checkboxes Christoph Heiss
2026-09-08 10:16 ` [PATCH installer 14/15] tui: network: factor out name pinning into advanced options dialog Christoph Heiss
2026-09-08 10:16 ` [PATCH installer 15/15] tui: network: add bond setup options to advanced network dialog 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=20260908101647.1057780-9-c.heiss@proxmox.com \
--to=c.heiss@proxmox.com \
--cc=pve-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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox