sdn: fix comparison of pending configuration values

The conditional assignment caused falsy values to be converted to
undef when comparing them. This led to the behavior that configuration
values that are interpreted by perl as falsy would get wrongly
compared and always show up as pending changes.

As an example the 'bgp-multipath-as-path-relax' or 'ebgp' keys of the
bgp controller configuration are booleans and get stored as 0 in the
controller configuration when they're turned off. They always showed
up as a pending change, because of the behavior described above.

Signed-off-by: Stefan Hanreich <s.hanreich@proxmox.com>
This commit is contained in:
Stefan Hanreich 2025-02-07 14:40:37 +01:00 committed by Thomas Lamprecht
parent 39fb956fb8
commit bd7c331536

View file

@ -115,8 +115,8 @@ sub pending_config {
my $config_object = $config_objects->{$id}; my $config_object = $config_objects->{$id};
foreach my $key (sort keys %{$config_object}) { foreach my $key (sort keys %{$config_object}) {
my $config_value = PVE::Network::SDN::encode_value(undef, $key, $config_object->{$key}) if $config_object->{$key}; my $config_value = PVE::Network::SDN::encode_value(undef, $key, $config_object->{$key});
my $running_value = PVE::Network::SDN::encode_value(undef, $key, $running_object->{$key}) if $running_object->{$key}; my $running_value = PVE::Network::SDN::encode_value(undef, $key, $running_object->{$key});
if($key eq 'type' || $key eq 'vnet') { if($key eq 'type' || $key eq 'vnet') {
$pending->{$id}->{$key} = $config_value; $pending->{$id}->{$key} = $config_value;
} else { } else {