From 9bf7d929d03458b8c91d4581683d7b01c4016a5c Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Mon, 31 Mar 2014 11:52:57 +0200 Subject: [PATCH] new method iptables_chain_digest() to compute digest Note: My previous commit introcuded a bug, using ipset_chain_digest() for the iptables ruleset - this is a fix for that. --- src/PVE/Firewall.pm | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) 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}; -- 2.39.2