tuple

package
v1.14.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 18, 2024 License: Apache-2.0 Imports: 6 Imported by: 11

Documentation

Overview

Package tuple defines keys used for connection tuples in multiple BPF maps. +groupName=maps

Index

Constants

View Source
const (
	TUPLE_F_OUT     = 0
	TUPLE_F_IN      = 1
	TUPLE_F_RELATED = 2
	TUPLE_F_SERVICE = 4
)

Variables

This section is empty.

Functions

This section is empty.

Types

type TupleKey

type TupleKey interface {
	bpf.MapKey

	// ToNetwork converts fields to network byte order.
	ToNetwork() TupleKey

	// ToHost converts fields to host byte order.
	ToHost() TupleKey

	// Dumps contents of key to sb. Returns true if successful.
	Dump(sb *strings.Builder, reverse bool) bool

	// Returns flags containing the direction of the tuple key.
	GetFlags() uint8
}

TupleKey is the interface describing keys to the conntrack and NAT maps.

type TupleKey4

type TupleKey4 struct {
	DestAddr   types.IPv4      `align:"daddr"`
	SourceAddr types.IPv4      `align:"saddr"`
	DestPort   uint16          `align:"dport"`
	SourcePort uint16          `align:"sport"`
	NextHeader u8proto.U8proto `align:"nexthdr"`
	Flags      uint8           `align:"flags"`
}

TupleKey4 represents the key for IPv4 entries in the local BPF conntrack map. Address field names are correct for return traffic, i.e., they are reversed compared to the original direction traffic.

func (TupleKey4) Dump

func (k TupleKey4) Dump(sb *strings.Builder, reverse bool) bool

Dump writes the contents of key to sb and returns true if the value for next header in the key is nonzero.

func (*TupleKey4) GetFlags

func (k *TupleKey4) GetFlags() uint8

GetFlags returns the tuple's flags.

func (*TupleKey4) New

func (k *TupleKey4) New() bpf.MapKey

func (*TupleKey4) String

func (k *TupleKey4) String() string

String returns the tuple's string representation, doh.

func (*TupleKey4) SwapAddresses

func (t *TupleKey4) SwapAddresses()

SwapAddresses swaps the tuple source and destination addresses.

func (*TupleKey4) ToHost

func (k *TupleKey4) ToHost() TupleKey

ToHost converts TupleKey4 ports to host byte order.

func (*TupleKey4) ToNetwork

func (k *TupleKey4) ToNetwork() TupleKey

ToNetwork converts TupleKey4 ports to network byte order.

type TupleKey4Global

type TupleKey4Global struct {
	TupleKey4
}

TupleKey4Global represents the key for IPv4 entries in the global BPF conntrack map.

func (TupleKey4Global) Dump

func (k TupleKey4Global) Dump(sb *strings.Builder, reverse bool) bool

Dump writes the contents of key to sb and returns true if the value for next header in the key is nonzero.

func (*TupleKey4Global) GetFlags

func (k *TupleKey4Global) GetFlags() uint8

GetFlags returns the tuple's flags.

func (*TupleKey4Global) String

func (k *TupleKey4Global) String() string

String returns the tuple's string representation, doh.

func (*TupleKey4Global) ToHost

func (k *TupleKey4Global) ToHost() TupleKey

ToHost converts ports to host byte order.

This is necessary to prevent callers from implicitly converting the TupleKey4Global type here into a local key type in the nested TupleKey4 field.

func (*TupleKey4Global) ToNetwork

func (k *TupleKey4Global) ToNetwork() TupleKey

ToNetwork converts ports to network byte order.

This is necessary to prevent callers from implicitly converting the TupleKey4Global type here into a local key type in the nested TupleKey4 field.

type TupleKey6

type TupleKey6 struct {
	DestAddr   types.IPv6      `align:"daddr"`
	SourceAddr types.IPv6      `align:"saddr"`
	DestPort   uint16          `align:"dport"`
	SourcePort uint16          `align:"sport"`
	NextHeader u8proto.U8proto `align:"nexthdr"`
	Flags      uint8           `align:"flags"`
}

TupleKey6 represents the key for IPv6 entries in the local BPF conntrack map. Address field names are correct for return traffic, i.e., they are reversed compared to the original direction traffic.

func (TupleKey6) Dump

func (k TupleKey6) Dump(sb *strings.Builder, reverse bool) bool

Dump writes the contents of key to sb and returns true if the value for next header in the key is nonzero.

func (*TupleKey6) GetFlags

func (k *TupleKey6) GetFlags() uint8

GetFlags returns the tuple's flags.

func (*TupleKey6) New

func (k *TupleKey6) New() bpf.MapKey

func (*TupleKey6) String

func (k *TupleKey6) String() string

String returns the tuple's string representation, doh.

func (*TupleKey6) SwapAddresses

func (t *TupleKey6) SwapAddresses()

SwapAddresses swaps the tuple source and destination addresses.

func (*TupleKey6) ToHost

func (k *TupleKey6) ToHost() TupleKey

ToHost converts TupleKey6 ports to network byte order.

func (*TupleKey6) ToNetwork

func (k *TupleKey6) ToNetwork() TupleKey

ToNetwork converts TupleKey6 ports to network byte order.

type TupleKey6Global

type TupleKey6Global struct {
	TupleKey6
}

TupleKey6Global represents the key for IPv6 entries in the global BPF conntrack map.

func (TupleKey6Global) Dump

func (k TupleKey6Global) Dump(sb *strings.Builder, reverse bool) bool

Dump writes the contents of key to sb and returns true if the value for next header in the key is nonzero.

func (*TupleKey6Global) GetFlags

func (k *TupleKey6Global) GetFlags() uint8

GetFlags returns the tuple's flags.

func (*TupleKey6Global) String

func (k *TupleKey6Global) String() string

String returns the tuple's string representation, doh.

func (*TupleKey6Global) ToHost

func (k *TupleKey6Global) ToHost() TupleKey

ToHost converts ports to host byte order.

This is necessary to prevent callers from implicitly converting the TupleKey6Global type here into a local key type in the nested TupleKey6 field.

func (*TupleKey6Global) ToNetwork

func (k *TupleKey6Global) ToNetwork() TupleKey

ToNetwork converts ports to network byte order.

This is necessary to prevent callers from implicitly converting the TupleKey6Global type here into a local key type in the nested TupleKey6 field.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL