From 5ad35ce4beea609dabec2ce1b8d6620748761a1b Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Mon, 29 Aug 2022 13:16:47 +0200 Subject: [PATCH] scripts/update-cmd.pl: run update two times Removing an IP address can clear device routes with matching network/mask. Running the update a second time ensures that they get recreated Signed-off-by: Felix Fietkau --- scripts/update-cmd.pl | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/scripts/update-cmd.pl b/scripts/update-cmd.pl index b908ff4..788a921 100755 --- a/scripts/update-cmd.pl +++ b/scripts/update-cmd.pl @@ -188,23 +188,25 @@ my $json = $ARGV[0]; my $platform = `uname`; my $data = JSON::PP::decode_json($json) or die "Failed to decode JSON data\n"; -my $delete = create_state(); -my $add = create_state(); - -if ($platform =~ /Darwin/) { - fetch_active_data_darwin($data->{ifname}, $delete); -} elsif ($platform =~ /Linux/) { - fetch_active_data_linux($data->{ifname}, $delete); -} else { - die "Unsupported platform $platform\n"; -} +foreach my $round (1 .. 2) { + my $delete = create_state(); + my $add = create_state(); + + if ($platform =~ /Darwin/) { + fetch_active_data_darwin($data->{ifname}, $delete); + } elsif ($platform =~ /Linux/) { + fetch_active_data_linux($data->{ifname}, $delete); + } else { + die "Unsupported platform $platform\n"; + } -update_data($data, $delete, $add); + update_data($data, $delete, $add); -if ($platform =~ /Darwin/) { - set_active_data_darwin($data->{ifname}, $delete, $add); -} elsif ($platform =~ /Linux/) { - set_active_data_linux($data->{ifname}, $delete, $add); + if ($platform =~ /Darwin/) { + set_active_data_darwin($data->{ifname}, $delete, $add); + } elsif ($platform =~ /Linux/) { + set_active_data_linux($data->{ifname}, $delete, $add); + } } # print Data::Dumper->Dump([$add, $delete], ["add", "delete"])."\n"; -- 2.30.2