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 D7BFA1FF13F for ; Wed, 14 Jan 2026 15:52:53 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 80E171593E; Wed, 14 Jan 2026 15:52:55 +0100 (CET) From: Christoph Heiss To: pve-devel@lists.proxmox.com Date: Wed, 14 Jan 2026 15:51:56 +0100 Message-ID: <20260114145208.1500825-1-c.heiss@proxmox.com> X-Mailer: git-send-email 2.52.0 MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1768402294964 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.052 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 Subject: [pve-devel] [PATCH installer] auto: answer: netif pinning: transform mac addresses into lowercase X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" Users may specify MAC addresses in the network interface pinning map in an uppercase format, which is more common than lowercase in some environments. This would then cause the auto-installer to mistakenly consider these addresses as unknown - thus just unconditionally convert all MAC addresses to lowercase while parsing. Reported-by: Aaron Lauterer Signed-off-by: Christoph Heiss --- proxmox-auto-installer/src/answer.rs | 7 ++++- proxmox-auto-installer/tests/parse-answer.rs | 1 + ...terface_pinning_uppercase_mac_address.json | 30 +++++++++++++++++++ ...terface_pinning_uppercase_mac_address.toml | 22 ++++++++++++++ 4 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 proxmox-auto-installer/tests/resources/parse_answer/network_interface_pinning_uppercase_mac_address.json create mode 100644 proxmox-auto-installer/tests/resources/parse_answer/network_interface_pinning_uppercase_mac_address.toml diff --git a/proxmox-auto-installer/src/answer.rs b/proxmox-auto-installer/src/answer.rs index 1e455ca..d12e088 100644 --- a/proxmox-auto-installer/src/answer.rs +++ b/proxmox-auto-installer/src/answer.rs @@ -225,8 +225,13 @@ impl TryFrom for Network { let interface_name_pinning = match network.interface_name_pinning { Some(opts) if opts.enabled => { let opts = NetworkInterfacePinningOptions { - mapping: opts.mapping, + mapping: opts + .mapping + .iter() + .map(|(k, v)| (k.to_lowercase(), v.clone())) + .collect(), }; + opts.verify()?; Some(opts) } diff --git a/proxmox-auto-installer/tests/parse-answer.rs b/proxmox-auto-installer/tests/parse-answer.rs index 696fe1f..7dd4a9d 100644 --- a/proxmox-auto-installer/tests/parse-answer.rs +++ b/proxmox-auto-installer/tests/parse-answer.rs @@ -130,6 +130,7 @@ mod tests { hashed_root_password, minimal, network_interface_pinning, + network_interface_pinning_uppercase_mac_address, nic_matching, specific_nic, zfs, diff --git a/proxmox-auto-installer/tests/resources/parse_answer/network_interface_pinning_uppercase_mac_address.json b/proxmox-auto-installer/tests/resources/parse_answer/network_interface_pinning_uppercase_mac_address.json new file mode 100644 index 0000000..76723c8 --- /dev/null +++ b/proxmox-auto-installer/tests/resources/parse_answer/network_interface_pinning_uppercase_mac_address.json @@ -0,0 +1,30 @@ +{ + "autoreboot": 1, + "cidr": "192.168.1.114/24", + "country": "at", + "dns": "192.168.1.254", + "domain": "testinstall", + "filesys": "ext4", + "gateway": "192.168.1.1", + "hdsize": 223.57088470458984, + "existing_storage_auto_rename": 1, + "hostname": "pveauto", + "keymap": "de", + "mailto": "mail@no.invalid", + "mngmt_nic": "mgmt", + "network_interface_pin_map": { + "1c:34:da:5c:5e:24": "nic2", + "1c:34:da:5c:5e:25": "nic3", + "24:8a:07:1e:05:bc": "lan0", + "24:8a:07:1e:05:bd": "lan1", + "5a:47:32:dd:c7:47": "nic8", + "a0:36:9f:0a:b3:82": "nic6", + "a0:36:9f:0a:b3:83": "nic7", + "b4:2e:99:ac:ad:b4": "mgmt", + "b4:2e:99:ac:ad:b5": "nic1" + }, + "root_password": { "plain": "12345678" }, + "target_hd": "/dev/sda", + "timezone": "Europe/Vienna", + "first_boot": { "enabled": 0 } +} diff --git a/proxmox-auto-installer/tests/resources/parse_answer/network_interface_pinning_uppercase_mac_address.toml b/proxmox-auto-installer/tests/resources/parse_answer/network_interface_pinning_uppercase_mac_address.toml new file mode 100644 index 0000000..6681fe9 --- /dev/null +++ b/proxmox-auto-installer/tests/resources/parse_answer/network_interface_pinning_uppercase_mac_address.toml @@ -0,0 +1,22 @@ +[global] +keyboard = "de" +country = "at" +fqdn = "pveauto.testinstall" +mailto = "mail@no.invalid" +timezone = "Europe/Vienna" +root-password = "12345678" + +[network] +source = "from-dhcp" + +[network.interface-name-pinning] +enabled = true + +[network.interface-name-pinning.mapping] +"24:8A:07:1E:05:BC" = "lan0" +"24:8A:07:1E:05:BD" = "lan1" +"B4:2E:99:AC:AD:B4" = "mgmt" + +[disk-setup] +filesystem = "ext4" +disk-list = ["sda"] -- 2.52.0 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel