X-Git-Url: https://git.proxmox.com/?p=pve-firewall.git;a=blobdiff_plain;f=src%2FPVE%2FFirewall.pm;h=97b15b064db06fc2d52bb55ef5f74bfdfe9d5bb2;hp=834acba2e6368619a0619ee78040ec5a813d593f;hb=9bf7d929d03458b8c91d4581683d7b01c4016a5c;hpb=df7cb349158bf0d804db1eb30e048aba797f0294;ds=sidebyside diff --git a/src/PVE/Firewall.pm b/src/PVE/Firewall.pm index 834acba..97b15b0 100644 --- a/src/PVE/Firewall.pm +++ b/src/PVE/Firewall.pm @@ -869,6 +869,15 @@ sub iptables_get_chains { return wantarray ? ($res, $hooks) : $res; } +sub iptables_chain_digest { + my ($rules) = @_; + my $digest = Digest::SHA->new('sha1'); + foreach my $rule (@$rules) { # order is important + $digest->add($rule); + } + return $digest->b64digest; +} + sub ipset_chain_digest { my ($rules) = @_; my $digest = Digest::SHA->new('sha1'); @@ -2261,7 +2270,13 @@ sub get_ruleset_status { my $statushash = {}; foreach my $chain (sort keys %$ruleset) { - my $sig = ipset_chain_digest($ruleset->{$chain}); + my $sig; + if ($ipset) { + $sig = ipset_chain_digest($ruleset->{$chain}); + } else { + $sig = iptables_chain_digest($ruleset->{$chain}); + } + $statushash->{$chain}->{sig} = $sig; my $oldsig = $active_chains->{$chain};