From 665565b7dd5f2313aa4f1effa6e2cdfd651a5850 Mon Sep 17 00:00:00 2001 From: Adrian Moisey Date: Fri, 17 Jan 2025 20:38:28 +0200 Subject: [PATCH] Preserve results when NLM_F_DUMP_INTR is set Similar to https://github.com/vishvananda/netlink/pull/1018, but for ConntrackDeleteFilters() Relates to https://github.com/kubernetes/kubernetes/issues/129562 --- conntrack_linux.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/conntrack_linux.go b/conntrack_linux.go index 69c5eca0..c566b2a4 100644 --- a/conntrack_linux.go +++ b/conntrack_linux.go @@ -159,13 +159,18 @@ func (h *Handle) ConntrackDeleteFilter(table ConntrackTableType, family InetFami // ConntrackDeleteFilters deletes entries on the specified table matching any of the specified filters using the netlink handle passed // conntrack -D [table] parameters Delete conntrack or expectation func (h *Handle) ConntrackDeleteFilters(table ConntrackTableType, family InetFamily, filters ...CustomConntrackFilter) (uint, error) { + var errMsgs []string res, err := h.dumpConntrackTable(table, family) if err != nil { - return 0, err + if !errors.Is(err, ErrDumpInterrupted) { + return 0, err + } + // This allows us to at least do a best effort to try to clean the + // entries matching the filter. + errMsgs = append(errMsgs, err.Error()) } var matched uint - var errMsgs []string for _, dataRaw := range res { flow := parseRawData(dataRaw) for _, filter := range filters {