Documentation
¶
Overview ¶
Package flowtrack contains types for tracking TCP/UDP flows by 4-tuples.
Index ¶
- type Cache
- type Tuple
- func (t Tuple) Dst() netip.AddrPort
- func (t Tuple) DstAddr() netip.Addr
- func (t Tuple) DstPort() uint16
- func (t Tuple) MarshalJSON() ([]byte, error)
- func (t Tuple) Proto() ipproto.Proto
- func (t Tuple) Src() netip.AddrPort
- func (t Tuple) SrcAddr() netip.Addr
- func (t Tuple) SrcPort() uint16
- func (t Tuple) String() string
- func (t *Tuple) UnmarshalJSON(b []byte) error
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.