package netlink import ( "fmt" "github.com/mdlayher/netlink" "github.com/ti-mo/netfilter" "golang.org/x/sys/unix" ) func (n *NetLink) FlushConntrack() error { conn, err := netfilter.Dial(nil) if err != nil { return fmt.Errorf("dialing netfilter: %w", err) } defer conn.Close() const ipCtnlMsgCtDelete = netfilter.MessageType(2) header := netfilter.Header{ SubsystemID: netfilter.NFSubsysCTNetlink, MessageType: ipCtnlMsgCtDelete, Family: unix.AF_UNSPEC, Flags: netlink.Request | netlink.Acknowledge, } request, err := netfilter.MarshalNetlink(header, nil) if err != nil { return fmt.Errorf("encoding netlink request: %w", err) } _, err = conn.Query(request) if err != nil { return fmt.Errorf("querying netlink request: %w", err) } return nil }