mirror of
https://github.com/netbirdio/netbird.git
synced 2025-07-22 16:44:26 +02:00
adds NetFlow functionality to track and log network traffic information between peers, with features including: - Flow logging for TCP, UDP, and ICMP traffic - Integration with connection tracking system - Resource ID tracking in NetFlow events - DNS and exit node collection configuration - Flow API and Redis cache in management - Memory-based flow storage implementation - Kernel conntrack counters and userspace counters - TCP state machine improvements for more accurate tracking - Migration from net.IP to netip.Addr in the userspace firewall
36 lines
913 B
Go
36 lines
913 B
Go
package cache
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/eko/gocache/lib/v4/store"
|
|
)
|
|
|
|
type Marshaler interface {
|
|
Get(ctx context.Context, key any, returnObj any) (any, error)
|
|
Set(ctx context.Context, key, object any, options ...store.Option) error
|
|
Delete(ctx context.Context, key any) error
|
|
}
|
|
|
|
type cacher[T any] interface {
|
|
Get(ctx context.Context, key any) (T, error)
|
|
Set(ctx context.Context, key any, object T, options ...store.Option) error
|
|
Delete(ctx context.Context, key any) error
|
|
}
|
|
|
|
type marshalerWraper struct {
|
|
cache cacher[any]
|
|
}
|
|
|
|
func (m marshalerWraper) Get(ctx context.Context, key any, _ any) (any, error) {
|
|
return m.cache.Get(ctx, key)
|
|
}
|
|
|
|
func (m marshalerWraper) Set(ctx context.Context, key, object any, options ...store.Option) error {
|
|
return m.cache.Set(ctx, key, object, options...)
|
|
}
|
|
|
|
func (m marshalerWraper) Delete(ctx context.Context, key any) error {
|
|
return m.cache.Delete(ctx, key)
|
|
}
|