From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [IPv6:2a0f:8001:1:32::40]) by lore.proxmox.com (Postfix) with ESMTPS id 26DB21FF09C for ; Mon, 02 Nov 2026 13:45:55 +0100 (CET) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 9AB1C21716; Mon, 02 Nov 2026 13:45:53 +0100 (CET) From: Christoph Heiss To: pve-devel@lists.proxmox.com Subject: [PATCH installer/proxmox v4 00/30] fix #2164: add bond setup across all installers Date: Mon, 2 Nov 2026 13:45:06 +0100 Message-ID: <20261102124539.1008075-1-c.heiss@proxmox.com> X-Mailer: git-send-email 2.55.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1793623545106 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.235 Adjusted score from AWL reputation of From: address DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment (newer systems) RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust 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: OM577TNGOFOIZOBWFMNUKA3MIPC4LD3M X-Message-ID-Hash: OM577TNGOFOIZOBWFMNUKA3MIPC4LD3M X-MailFrom: c.heiss@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: Fixes #2164 [0] by adding the possibility to set up a bond and set a VLAN ID for the management interface during the installation, for all of GUI, TUI and auto-installer. For the GUI and TUI, the current name pinning dialog is converted into a full-fledged advanced network options dialog, in the same vein as with the bootdisk options. This makes it practical to then add additional networking options, in this case bond and VLAN options. The auto-installer gains two new sections under [network]: [network.bond] members-list = ["ab:cd:ef:12:34:56", "ab:cd:ef:12:34:57"] # or, alternatively members-filter.ID_NET_DRIVER = "igc" members-filter-match = "all" # general bond options mode = "active-backup" hash-policy = "layer2+3" primary-interface = "ab:cd:ef:12:34:57" [network.vlan] vid = 5 Both being of course independent of each other. The respective PDM integration will be sent separately. [0] https://bugzilla.proxmox.com/show_bug.cgi?id=2164 History ======= v3: off-list review sample v2: https://lore.proxmox.com/pve-devel/20261020112327.641633-1-c.heiss@proxmox.com/ v1: https://lore.proxmox.com/pve-devel/20260908101647.1057780-1-c.heiss@proxmox.com/ Notable changes v3 -> v4: * add some `Display` derives for proxmox-installer-types * fixed expanding of tab page contents, which caused unnecessary padding Notable changes v2 -> v3: * added VLAN configuration support * rebased atop @Thomas changes, including some patches from him * split bond member selection into static list and udev filters Notable changes v1 -> v2: * rebased on latest masters for each repo * fixed a bug in the GUI installer, passing an invalid index to GTK with a bond set up Questions ========= 1. Since we now discourage the use of the 'balance-alb' and 'balance-tlb' modes in combination with a Linux bridge (as of [1]), should these not even be available for selection here? 2. For the Rust part, it reuses the already existing bond types from the 'proxmox-network-api' crate. Given that they are pretty universal rather, than just completely API-specific, would it make sense to move them into 'proxmox-network-types' instead? @Stefan might have some comment on this as well, as we discussed that off-list recently as well. [1] https://lore.proxmox.com/pve-devel/20260828095721.263382-1-m.sandoval@proxmox.com/ Diffstat ======== proxmox: Christoph Heiss (8): installer-types: clippy: use .is_multiple_of() instead of manual modulo installer-types: use `MacAddress` type where applicable installer-types: derive Display for RebootMode and FilterMatch installer-types: answer: add options for configuring management bond installer-types: answer: add options for configuring management vlan installer-types: bump fetch schema for bond and VLAN answer options installer-types: bump version to 0.3.0-1 network-api: derive Display and FromStr for network bond types Cargo.toml | 1 + proxmox-installer-types/Cargo.toml | 3 +- proxmox-installer-types/debian/changelog | 21 + proxmox-installer-types/debian/control | 18 +- proxmox-installer-types/src/answer.rs | 486 ++++++++++++++++++++++- proxmox-installer-types/src/post_hook.rs | 4 +- proxmox-network-api/Cargo.toml | 1 + proxmox-network-api/debian/control | 6 +- proxmox-network-api/src/api_types.rs | 27 +- 9 files changed, 524 insertions(+), 43 deletions(-) pve-installer: Christoph Heiss (22): install: run make tidy tree-wide: use `MacAddress` type instead of string for MAC addresses install: factor out ifupdown2 config generation into own subroutine install: do not rely on interface name map to be fully populated install: config: add option for setting up bond on management interface install: config: add option for setting up vlan on management interface install: network: set up management bond if requested install: network: set up vlan on management interface if requested gui: network: factor out name pinning into advanced options dialog gui: network: add bond setup options to advanced options dialog gui: network: add vlan setup options to advanced network dialog auto: pass through management network bond options to low-level installer auto: pass through management network vlan options to low-level installer tui: drop long obsolete comment about logo formatting tui: views: add widget for displaying a group of checkboxes tui: network: factor out name pinning into advanced options dialog tui: network: add bond setup options to advanced network dialog tui: network: add vlan setup options to advanced network dialog gui: network: split advanced options dialog into tabs tui: network: split advanced options dialog into tabs gui: network: list bond member candidates sharing a MAC address once tui: network: list bond member candidates sharing a MAC address once Cargo.toml | 4 +- Proxmox/Install.pm | 244 ++++-- Proxmox/Install/Config.pm | 79 ++ Proxmox/Sys/Net.pm | 43 + debian/control | 3 +- proxinstall | 491 +++++++++-- proxmox-auto-installer/Cargo.toml | 1 + proxmox-auto-installer/src/utils.rs | 115 ++- proxmox-auto-installer/tests/parse-answer.rs | 12 +- .../resources/parse_answer/network_bond.json | 25 + .../resources/parse_answer/network_bond.toml | 20 + .../parse_answer/network_bond_and_vlan.json | 29 + .../parse_answer/network_bond_and_vlan.toml | 23 + .../network_bond_with_filter.json | 24 + .../network_bond_with_filter.toml | 22 + ...ace_pinning_mixed_case_mac_addresses.json} | 0 ...ace_pinning_mixed_case_mac_addresses.toml} | 4 +- .../resources/parse_answer/network_vlan.json | 23 + .../resources/parse_answer/network_vlan.toml | 17 + .../network_bond_invalid_hash_policy.json | 3 + .../network_bond_invalid_hash_policy.toml | 20 + .../network_bond_invalid_mode.json | 3 + .../network_bond_invalid_mode.toml | 18 + .../network_bond_primary_not_member.json | 3 + .../network_bond_primary_not_member.toml | 19 + .../network_bond_single_interface.json | 3 + .../network_bond_single_interface.toml | 18 + ...rface_pinning_overlong_interface_name.json | 2 +- .../network_vlan_invalid_vid.json | 3 + .../network_vlan_invalid_vid.toml | 17 + proxmox-installer-common/Cargo.toml | 1 + proxmox-installer-common/src/options.rs | 117 +-- proxmox-installer-common/src/setup.rs | 99 ++- proxmox-post-hook/src/main.rs | 2 +- proxmox-tui-installer/Cargo.toml | 1 + proxmox-tui-installer/src/main.rs | 9 +- proxmox-tui-installer/src/options.rs | 51 +- proxmox-tui-installer/src/setup.rs | 20 +- proxmox-tui-installer/src/views/mod.rs | 141 +++- proxmox-tui-installer/src/views/network.rs | 762 ++++++++++++++---- .../src/views/tabbed_view.rs | 7 + test/Makefile | 6 +- test/generate-ifupdown2-config.pl | 541 +++++++++++++ 43 files changed, 2661 insertions(+), 384 deletions(-) create mode 100644 proxmox-auto-installer/tests/resources/parse_answer/network_bond.json create mode 100644 proxmox-auto-installer/tests/resources/parse_answer/network_bond.toml create mode 100644 proxmox-auto-installer/tests/resources/parse_answer/network_bond_and_vlan.json create mode 100644 proxmox-auto-installer/tests/resources/parse_answer/network_bond_and_vlan.toml create mode 100644 proxmox-auto-installer/tests/resources/parse_answer/network_bond_with_filter.json create mode 100644 proxmox-auto-installer/tests/resources/parse_answer/network_bond_with_filter.toml rename proxmox-auto-installer/tests/resources/parse_answer/{network_interface_pinning_uppercase_mac_address.json => network_interface_pinning_mixed_case_mac_addresses.json} (100%) rename proxmox-auto-installer/tests/resources/parse_answer/{network_interface_pinning_uppercase_mac_address.toml => network_interface_pinning_mixed_case_mac_addresses.toml} (85%) create mode 100644 proxmox-auto-installer/tests/resources/parse_answer/network_vlan.json create mode 100644 proxmox-auto-installer/tests/resources/parse_answer/network_vlan.toml create mode 100644 proxmox-auto-installer/tests/resources/parse_answer_fail/network_bond_invalid_hash_policy.json create mode 100644 proxmox-auto-installer/tests/resources/parse_answer_fail/network_bond_invalid_hash_policy.toml create mode 100644 proxmox-auto-installer/tests/resources/parse_answer_fail/network_bond_invalid_mode.json create mode 100644 proxmox-auto-installer/tests/resources/parse_answer_fail/network_bond_invalid_mode.toml create mode 100644 proxmox-auto-installer/tests/resources/parse_answer_fail/network_bond_primary_not_member.json create mode 100644 proxmox-auto-installer/tests/resources/parse_answer_fail/network_bond_primary_not_member.toml create mode 100644 proxmox-auto-installer/tests/resources/parse_answer_fail/network_bond_single_interface.json create mode 100644 proxmox-auto-installer/tests/resources/parse_answer_fail/network_bond_single_interface.toml create mode 100644 proxmox-auto-installer/tests/resources/parse_answer_fail/network_vlan_invalid_vid.json create mode 100644 proxmox-auto-installer/tests/resources/parse_answer_fail/network_vlan_invalid_vid.toml create mode 100755 test/generate-ifupdown2-config.pl