[pve-devel] [PATCH installer 14/14] gui: add support for pinning network interface names
Christoph Heiss
c.heiss at proxmox.com
Wed Oct 22 11:40:02 CEST 2025
On Tue Oct 21, 2025 at 4:05 PM CEST, Michael Köppl wrote:
> 3 comments inline
>
> On Tue Oct 14, 2025 at 3:21 PM CEST, Christoph Heiss wrote:
[..]
>> + $dialog->signal_connect(
>> + response => sub {
>> + my $new_mapping = {};
>> + my $reverse_mapping = {};
>> + foreach my $mac (keys %$inputs) {
>> + my $name = $inputs->{$mac}->get_text();
>> +
>> + if (!defined($name) || $name eq '') {
>> + Proxmox::UI::message("interface name mapping for $mac cannot be empty");
>> + $inputs->{$mac}->grab_focus();
>> + return;
>> + }
>> +
>> + if ($reverse_mapping->{$name}) {
>> + Proxmox::UI::message(
>> + "duplicate interface name mapping '$name' for: $mac, $reverse_mapping->{$name}"
>> + );
>> + $inputs->{$mac}->grab_focus();
>> + return;
>> + }
>> +
>> + if (length($name) > MAX_IFNAME_LEN) {
>> + Proxmox::UI::message(
>> + "interface name mapping '$name' for $mac cannot be longer than "
>> + . MAX_IFNAME_LEN
>> + . " characters");
>> + $inputs->{$mac}->grab_focus();
>> + return;
>> + }
>
> same as for the TUI installer, imo the check for only-numeric interface
> names would make sense. Or is there a reason it was omitted?
No particular reason, I'll add it here too for v2.
IIRC that seems to just have slipped through, as the first draft was
with a fixed prefix, since our tooling didn't support fully custom names
back then.
[..]
>> - my $get_device_desc = sub {
>> - my $iface = shift;
>> - return "$iface->{name} - $iface->{mac} ($iface->{driver})";
>> + my $refresh_device_cb = sub {
>> + # clear all entries and re-add them with their new names
>> + my $active = $device_cb->get_active();
>> + $device_model->clear();
>> +
>> + my $mapping = Proxmox::Install::Config::get_network_interface_pin_map();
>> + my $i = 0;
>> + for my $index (sort keys $ipconf->{ifaces}->%*) {
>> + my $iface = $ipconf->{ifaces}->{$index};
>> + my $iter = $device_model->append();
>> +
>> + my $symbol = "$iface->{state}" eq "UP" ? "\x{25CF}" : ' ';
>> + my $name = $gtk_state->{network_pinning_enabled} ? $mapping->{ $iface->{mac} } : $iface->{name};
>
> This seems to need a `make tidy`?
>
I'll run it before sending v2, thanks :^)
More information about the pve-devel
mailing list