Skip to content

Commit

Permalink
capture and returns errors in ConntrackDeleteFilters
Browse files Browse the repository at this point in the history
Signed-off-by: Daman Arora <aroradaman@gmail.com>
  • Loading branch information
aroradaman committed Sep 5, 2024
1 parent e194da5 commit 0bbe568
Showing 1 changed file with 12 additions and 5 deletions.
17 changes: 12 additions & 5 deletions conntrack_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -158,21 +158,28 @@ func (h *Handle) ConntrackDeleteFilters(table ConntrackTableType, family InetFam
}

var matched uint
var errs []error
for _, dataRaw := range res {
flow := parseRawData(dataRaw)
for _, filter := range filters {
if match := filter.MatchConntrackFlow(flow); match {
req2 := h.newConntrackRequest(table, family, nl.IPCTNL_MSG_CT_DELETE, unix.NLM_F_ACK)
// skip the first 4 byte that are the netfilter header, the newConntrackRequest is adding it already
req2.AddRawData(dataRaw[4:])
req2.Execute(unix.NETLINK_NETFILTER, 0)
matched++
// flow is already deleted, no need to match on other filters and continue to the next flow.
break
_, err = req2.Execute(unix.NETLINK_NETFILTER, 0)
if err != nil {
errs = append(errs, fmt.Errorf("failed to delete conntrack flow '%s': %w", flow.String(), err))
} else {
matched++
// flow is already deleted, no need to match on other filters and continue to the next flow.
break
}
}
}
}

if len(errs) > 0 {
return matched, errors.Join(errs...)

Check failure on line 181 in conntrack_linux.go

View workflow job for this annotation

GitHub Actions / build

undefined: errors.Join
}
return matched, nil
}

Expand Down

0 comments on commit 0bbe568

Please sign in to comment.