Documentation ¶
Overview ¶
Package flowtrack contains types for tracking TCP/UDP flows by 4-tuples.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Cache ¶
type Cache[Value any] struct { // MaxEntries is the maximum number of cache entries before // an item is evicted. Zero means no limit. MaxEntries int // contains filtered or unexported fields }
Cache is an LRU cache keyed by Tuple.
The zero value is valid to use.
It is not safe for concurrent access.
func (*Cache[Value]) Add ¶
Add adds a value to the cache, set or updating its associated value.
If MaxEntries is non-zero and the length of the cache is greater after any addition, the least recently used value is evicted.
func (*Cache[Value]) Get ¶
Get looks up a key's value from the cache, also reporting whether it was present.
func (*Cache[Value]) RemoveOldest ¶
func (c *Cache[Value]) RemoveOldest()
RemoveOldest removes the oldest item from the cache, if any.
type Tuple ¶
type Tuple struct {
// contains filtered or unexported fields
}
Tuple is a 5-tuple of proto, source and destination IP and port.
This struct originally used netip.AddrPort, but that was about twice as slow when used as a map key due to the alignment and extra space for the IPv6 zone pointers (unneeded for all our current 2024-06-17 flowtrack needs).
This struct is packed optimally and doesn't contain gaps or pointers.