From 1441afb6e4746ef67c5a026f841009d867742240 Mon Sep 17 00:00:00 2001 From: Vladimir Avtsenov Date: Wed, 12 Feb 2025 04:07:45 +0300 Subject: [PATCH] restore deleted rules --- netfilter-helper/iptables-cleaner.go | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/netfilter-helper/iptables-cleaner.go b/netfilter-helper/iptables-cleaner.go index 770b73f..ae3679f 100644 --- a/netfilter-helper/iptables-cleaner.go +++ b/netfilter-helper/iptables-cleaner.go @@ -27,11 +27,18 @@ func (nh *NetfilterHelper) CleanIPTables(chainPrefix string) error { } for _, rule := range rules { - if strings.Contains(rule, jumpToChainPrefix) { - err = nh.IPTables.Delete(table, chain, rule) - if err != nil { - return fmt.Errorf("rule deletion error: %w", err) - } + if !strings.Contains(rule, jumpToChainPrefix) { + continue + } + + ruleSlice := strings.Split(rule, " ") + if len(ruleSlice) < 2 || ruleSlice[0] != "-A" || ruleSlice[1] != chain { + continue + } + + err = nh.IPTables.Delete(table, chain, ruleSlice[2:]...) + if err != nil { + return fmt.Errorf("rule deletion error: %w", err) } } }