Documentation ¶
Overview ¶
Package nat implements the BPF NAT map interaction code. +groupName=maps
Index ¶
- Constants
- func DeleteMapping4(m *Map, ctKey *tuple.TupleKey4Global) error
- func DeleteMapping6(m *Map, ctKey *tuple.TupleKey6Global) error
- func DeleteSwappedMapping4(m *Map, ctKey *tuple.TupleKey4Global) error
- func DeleteSwappedMapping6(m *Map, ctKey *tuple.TupleKey6Global) error
- func DoDumpEntries(m NatMap) (string, error)
- func NatDumpCreated(dumpStart, entryCreated uint64) string
- type Map
- type NatEntry
- type NatEntry4
- func (in *NatEntry4) DeepCopy() *NatEntry4
- func (in *NatEntry4) DeepCopyInto(out *NatEntry4)
- func (in *NatEntry4) DeepCopyMapValue() bpf.MapValue
- func (n *NatEntry4) Dump(key NatKey, start uint64) string
- func (n *NatEntry4) GetValuePtr() unsafe.Pointer
- func (n *NatEntry4) String() string
- func (n *NatEntry4) ToHost() NatEntry
- type NatEntry6
- func (in *NatEntry6) DeepCopy() *NatEntry6
- func (in *NatEntry6) DeepCopyInto(out *NatEntry6)
- func (in *NatEntry6) DeepCopyMapValue() bpf.MapValue
- func (n *NatEntry6) Dump(key NatKey, start uint64) string
- func (n *NatEntry6) GetValuePtr() unsafe.Pointer
- func (n *NatEntry6) String() string
- func (n *NatEntry6) ToHost() NatEntry
- type NatKey
- type NatKey4
- func (in *NatKey4) DeepCopy() *NatKey4
- func (in *NatKey4) DeepCopyInto(out *NatKey4)
- func (in *NatKey4) DeepCopyMapKey() bpf.MapKey
- func (k *NatKey4) GetKeyPtr() unsafe.Pointer
- func (k *NatKey4) GetNextHeader() u8proto.U8proto
- func (k *NatKey4) NewValue() bpf.MapValue
- func (k *NatKey4) ToHost() NatKey
- func (k *NatKey4) ToNetwork() NatKey
- type NatKey6
- func (in *NatKey6) DeepCopy() *NatKey6
- func (in *NatKey6) DeepCopyInto(out *NatKey6)
- func (in *NatKey6) DeepCopyMapKey() bpf.MapKey
- func (k *NatKey6) GetKeyPtr() unsafe.Pointer
- func (k *NatKey6) GetNextHeader() u8proto.U8proto
- func (k *NatKey6) NewValue() bpf.MapValue
- func (k *NatKey6) ToHost() NatKey
- func (k *NatKey6) ToNetwork() NatKey
- type NatMap
- type NatMapRecord
Constants ¶
const ( // MapNameSnat4Global represents global IPv4 NAT table. MapNameSnat4Global = "cilium_snat_v4_external" // MapNameSnat6Global represents global IPv6 NAT table. MapNameSnat6Global = "cilium_snat_v6_external" // MinPortSnatDefault represents default min port from range. MinPortSnatDefault = 1024 // MaxPortSnatDefault represents default max port from range. MaxPortSnatDefault = 65535 )
const SizeofNatEntry4 = int(unsafe.Sizeof(NatEntry4{}))
SizeofNatEntry4 is the size of the NatEntry4 type in bytes.
const SizeofNatEntry6 = int(unsafe.Sizeof(NatEntry6{}))
SizeofNatEntry6 is the size of the NatEntry6 type in bytes.
const SizeofNatKey4 = int(unsafe.Sizeof(NatKey4{}))
SizeofNatKey4 is the size of the NatKey4 type in bytes.
const SizeofNatKey6 = int(unsafe.Sizeof(NatKey6{}))
SizeofNatKey6 is the size of the NatKey6 type in bytes.
Variables ¶
This section is empty.
Functions ¶
func DeleteMapping4 ¶ added in v1.13.9
func DeleteMapping4(m *Map, ctKey *tuple.TupleKey4Global) error
func DeleteMapping6 ¶ added in v1.13.9
func DeleteMapping6(m *Map, ctKey *tuple.TupleKey6Global) error
func DeleteSwappedMapping4 ¶ added in v1.13.9
func DeleteSwappedMapping4(m *Map, ctKey *tuple.TupleKey4Global) error
Expects ingress tuple
func DeleteSwappedMapping6 ¶ added in v1.13.9
func DeleteSwappedMapping6(m *Map, ctKey *tuple.TupleKey6Global) error
Expects ingress tuple
func DoDumpEntries ¶
DoDumpEntries iterates through Map m and writes the values of the nat entries in m to a string.
func NatDumpCreated ¶
NatDumpCreated returns time in seconds when NAT entry was created.
Types ¶
type Map ¶
Map represents a NAT map. It also implements the NatMap interface.
func GlobalMaps ¶
GlobalMaps returns all global NAT maps.
func (*Map) DumpEntries ¶
DumpEntries iterates through Map m and writes the values of the nat entries in m to a string.
func (*Map) DumpReliablyWithCallback ¶
type NatEntry ¶
type NatEntry interface { bpf.MapValue // ToHost converts fields to host byte order. ToHost() NatEntry // Dumps the Nat entry as string. Dump(key NatKey, start uint64) string }
NatEntry is the interface describing values to the NAT map.
type NatEntry4 ¶
type NatEntry4 struct { Created uint64 `align:"created"` NeedsCT uint64 `align:"needs_ct"` Pad1 uint64 `align:"pad1"` Pad2 uint64 `align:"pad2"` Addr types.IPv4 `align:"to_saddr"` Port uint16 `align:"to_sport"` }
NatEntry4 represents an IPv4 entry in the NAT table. +k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapValue
func (*NatEntry4) DeepCopy ¶ added in v1.5.1
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NatEntry4.
func (*NatEntry4) DeepCopyInto ¶ added in v1.5.1
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*NatEntry4) DeepCopyMapValue ¶ added in v1.5.1
DeepCopyMapValue is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapValue.
func (*NatEntry4) GetValuePtr ¶ added in v1.5.0
GetValuePtr returns the unsafe.Pointer for n.
type NatEntry6 ¶
type NatEntry6 struct { Created uint64 `align:"created"` NeedsCT uint64 `align:"needs_ct"` Pad1 uint64 `align:"pad1"` Pad2 uint64 `align:"pad2"` Addr types.IPv6 `align:"to_saddr"` Port uint16 `align:"to_sport"` }
NatEntry6 represents an IPv6 entry in the NAT table. +k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapValue
func (*NatEntry6) DeepCopy ¶ added in v1.5.1
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NatEntry6.
func (*NatEntry6) DeepCopyInto ¶ added in v1.5.1
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*NatEntry6) DeepCopyMapValue ¶ added in v1.5.1
DeepCopyMapValue is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapValue.
func (*NatEntry6) GetValuePtr ¶ added in v1.5.0
GetValuePtr returns the unsafe.Pointer for n.
type NatKey ¶
type NatKey interface { bpf.MapKey // ToNetwork converts fields to network byte order. ToNetwork() NatKey // ToHost converts fields to host byte order. ToHost() NatKey // Dump contents of key to sb. Returns true if successful. Dump(sb *strings.Builder, reverse bool) bool // GetFlags flags containing the direction of the TupleKey. GetFlags() uint8 // GetNextHeader returns the proto of the NatKey GetNextHeader() u8proto.U8proto }
type NatKey4 ¶
type NatKey4 struct {
tuple.TupleKey4Global
}
NatKey4 is needed to provide NatEntry type to Lookup values +k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapKey
func (*NatKey4) DeepCopy ¶ added in v1.6.0
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NatKey4.
func (*NatKey4) DeepCopyInto ¶ added in v1.6.0
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*NatKey4) DeepCopyMapKey ¶ added in v1.6.0
DeepCopyMapKey is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapKey.
func (*NatKey4) GetNextHeader ¶
type NatKey6 ¶
type NatKey6 struct {
tuple.TupleKey6Global
}
NatKey6 is needed to provide NatEntry type to Lookup values +k8s:deepcopy-gen=true +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapKey
func (*NatKey6) DeepCopy ¶ added in v1.6.0
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NatKey6.
func (*NatKey6) DeepCopyInto ¶ added in v1.6.0
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*NatKey6) DeepCopyMapKey ¶ added in v1.6.0
DeepCopyMapKey is an autogenerated deepcopy function, copying the receiver, creating a new bpf.MapKey.
func (*NatKey6) GetNextHeader ¶
type NatMap ¶
type NatMap interface { Open() error Close() error Path() (string, error) DumpEntries() (string, error) DumpWithCallback(bpf.DumpCallback) error }
NatMap interface represents a NAT map, and can be reused to implement mock maps for unit tests.
type NatMapRecord ¶
A "Record" designates a map entry (key + value), but avoid "entry" because of possible confusion with "NatEntry" (actually the value part). This type is used for JSON dump and mock maps.