Documentation ¶
Index ¶
- Constants
- Variables
- func NewDNAT44Descriptor(natHandler vppcalls.NatVppAPI, log logging.PluginLogger) *kvs.KVDescriptor
- func NewNAT44AddressPoolDescriptor(nat44GlobalDesc *NAT44GlobalDescriptor, natHandler vppcalls.NatVppAPI, ...) *kvs.KVDescriptor
- func NewNAT44GlobalAddressDescriptor(natHandler vppcalls.NatVppAPI, log logging.PluginLogger) *kvs.KVDescriptor
- func NewNAT44GlobalInterfaceDescriptor(natHandler vppcalls.NatVppAPI, log logging.PluginLogger) *kvs.KVDescriptor
- func NewNAT44InterfaceDescriptor(nat44GlobalDesc *NAT44GlobalDescriptor, natHandler vppcalls.NatVppAPI, ...) *kvs.KVDescriptor
- func ParseIPv4(str string) (net.IP, error)
- type DNAT44Descriptor
- func (d *DNAT44Descriptor) Create(key string, dnat *nat.DNat44) (metadata interface{}, err error)
- func (d *DNAT44Descriptor) Delete(key string, dnat *nat.DNat44, metadata interface{}) error
- func (d *DNAT44Descriptor) Dependencies(key string, dnat *nat.DNat44) (dependencies []kvs.Dependency)
- func (d *DNAT44Descriptor) EquivalentDNAT44(key string, oldDNAT, newDNAT *nat.DNat44) bool
- func (d *DNAT44Descriptor) IsRetriableFailure(err error) bool
- func (d *DNAT44Descriptor) Retrieve(correlate []adapter.DNAT44KVWithMetadata) (retrieved []adapter.DNAT44KVWithMetadata, err error)
- func (d *DNAT44Descriptor) Update(key string, oldDNAT, newDNAT *nat.DNat44, oldMetadata interface{}) (newMetadata interface{}, err error)
- func (d *DNAT44Descriptor) Validate(key string, dnat *nat.DNat44) error
- type NAT44AddressPoolDescriptor
- func (d *NAT44AddressPoolDescriptor) Create(key string, natAddr *nat.Nat44AddressPool) (metadata interface{}, err error)
- func (d *NAT44AddressPoolDescriptor) Delete(key string, natAddr *nat.Nat44AddressPool, metadata interface{}) error
- func (d *NAT44AddressPoolDescriptor) Dependencies(key string, natAddr *nat.Nat44AddressPool) (deps []kvs.Dependency)
- func (d *NAT44AddressPoolDescriptor) DerivedValues(key string, addrPool *nat.Nat44AddressPool) (derValues []kvs.KeyValuePair)
- func (d *NAT44AddressPoolDescriptor) Retrieve(correlate []adapter.NAT44AddressPoolKVWithMetadata) (retrieved []adapter.NAT44AddressPoolKVWithMetadata, err error)
- func (d *NAT44AddressPoolDescriptor) Validate(key string, natAddr *nat.Nat44AddressPool) error
- type NAT44GlobalAddressDescriptor
- func (d *NAT44GlobalAddressDescriptor) Create(key string, natAddr *nat.Nat44Global_Address) (metadata interface{}, err error)
- func (d *NAT44GlobalAddressDescriptor) Delete(key string, natAddr *nat.Nat44Global_Address, metadata interface{}) error
- func (d *NAT44GlobalAddressDescriptor) Dependencies(key string, natAddr *nat.Nat44Global_Address) (deps []kvs.Dependency)
- func (d *NAT44GlobalAddressDescriptor) IsNat44DerivedAddressKey(key string) bool
- func (d *NAT44GlobalAddressDescriptor) Validate(key string, natAddr *nat.Nat44Global_Address) error
- type NAT44GlobalDescriptor
- func (d *NAT44GlobalDescriptor) Create(key string, globalCfg *nat.Nat44Global) (metadata interface{}, err error)
- func (d *NAT44GlobalDescriptor) Delete(key string, globalCfg *nat.Nat44Global, metadata interface{}) error
- func (d *NAT44GlobalDescriptor) DerivedValues(key string, globalCfg *nat.Nat44Global) (derValues []kvs.KeyValuePair)
- func (d *NAT44GlobalDescriptor) EquivalentNAT44Global(key string, oldGlobalCfg, newGlobalCfg *nat.Nat44Global) bool
- func (d *NAT44GlobalDescriptor) Retrieve(correlate []adapter.NAT44GlobalKVWithMetadata) ([]adapter.NAT44GlobalKVWithMetadata, error)
- func (d *NAT44GlobalDescriptor) Update(key string, oldGlobalCfg, newGlobalCfg *nat.Nat44Global, ...) (newMetadata interface{}, err error)
- func (d *NAT44GlobalDescriptor) UpdateWithRecreate(key string, oldGlobalCfg, newGlobalCfg *nat.Nat44Global, metadata interface{}) bool
- func (d *NAT44GlobalDescriptor) Validate(key string, globalCfg *nat.Nat44Global) error
- type NAT44GlobalInterfaceDescriptor
- func (d *NAT44GlobalInterfaceDescriptor) Create(key string, natIface *nat.Nat44Global_Interface) (metadata interface{}, err error)
- func (d *NAT44GlobalInterfaceDescriptor) Delete(key string, natIface *nat.Nat44Global_Interface, metadata interface{}) error
- func (d *NAT44GlobalInterfaceDescriptor) Dependencies(key string, natIface *nat.Nat44Global_Interface) []kvs.Dependency
- func (d *NAT44GlobalInterfaceDescriptor) IsNAT44DerivedInterfaceKey(key string) bool
- type NAT44InterfaceDescriptor
- func (d *NAT44InterfaceDescriptor) Create(key string, natIface *nat.Nat44Interface) (metadata interface{}, err error)
- func (d *NAT44InterfaceDescriptor) Delete(key string, natIface *nat.Nat44Interface, metadata interface{}) (err error)
- func (d *NAT44InterfaceDescriptor) Dependencies(key string, natIface *nat.Nat44Interface) (deps []kvs.Dependency)
- func (d *NAT44InterfaceDescriptor) Retrieve(correlate []adapter.NAT44InterfaceKVWithMetadata) (retrieved []adapter.NAT44InterfaceKVWithMetadata, err error)
- func (d *NAT44InterfaceDescriptor) Validate(key string, natIface *nat.Nat44Interface) error
Constants ¶
const ( // DNAT44DescriptorName is the name of the descriptor for VPP NAT44 // Destination-NAT configurations. DNAT44DescriptorName = "vpp-nat44-dnat" )
const (
// NAT44AddressPoolDescriptorName is the name of the descriptor for NAT44 IP address pools.
NAT44AddressPoolDescriptorName = "vpp-nat44-address-pool"
)
const ( // NAT44GlobalAddressDescriptorName is the name of the descriptor for IP addresses // from the VPP NAT44 address pool. NAT44GlobalAddressDescriptorName = "vpp-nat44-global-address" )
const ( // NAT44GlobalDescriptorName is the name of the descriptor for VPP NAT44 global // configuration. NAT44GlobalDescriptorName = "vpp-nat44-global" )
const ( // NAT44GlobalInterfaceDescriptorName is the name of the descriptor for VPP NAT44 // features applied to interfaces. NAT44GlobalInterfaceDescriptorName = "vpp-nat44-global-interface" )
const (
// NAT44InterfaceDescriptorName is the name of the descriptor for VPP NAT44 features applied to interfaces.
NAT44InterfaceDescriptorName = "vpp-nat44-interface"
)
Variables ¶
var ( // ErrDNAT44WithEmptyLabel is returned when NAT44 DNAT configuration is defined // with empty label ErrDNAT44WithEmptyLabel = errors.New("NAT44 DNAT configuration defined with empty label") // ErrDNAT44TwiceNATPoolIPNeedsTwiceNAT is returned when NAT44 DNAT static configuration is defined // with non-empty twiceNAT pool IP, but twiceNAT is not enabled for given static mapping. ErrDNAT44TwiceNATPoolIPNeedsTwiceNAT = errors.New("NAT44 DNAT static mapping configuration with " + "non-empty twiceNAT pool IP have to have also enabled twiceNAT (use enabled, not self-twiceNAT)") // ErrDNAT44TwiceNATPoolIPIsNotSupportedForLBStMappings is returned when twiceNAT pool IP is used with // loadbalanced version of static mapping. This combination is not supported by VPP. ErrDNAT44TwiceNATPoolIPIsNotSupportedForLBStMappings = errors.New("NAT44 DNAT static mapping's " + "twiceNAT pool IP feature is not supported(by VPP) when the loadbalanced version of static mapping " + "is used. Use non-loadbalanced version of static mappings(<=>len(local IP)<=1) or don't use twiceNAT " + "pool IP feature.") )
A list of non-retriable errors:
var ( // ErrNATInterfaceFeatureCollision is returned when VPP NAT features assigned // to a single interface collide. ErrNATInterfaceFeatureCollision = errors.New("VPP NAT interface feature collision") // ErrDuplicateNATAddress is returned when VPP NAT address pool contains duplicate // IP addresses. ErrDuplicateNATAddress = errors.New("Duplicate VPP NAT address") )
A list of non-retriable errors:
var ( // ErrInvalidNATAddress is returned when IP address from VPP NAT address pool // cannot be parsed. ErrInvalidNATAddress = errors.New("Invalid VPP NAT address") )
A list of non-retriable errors:
Functions ¶
func NewDNAT44Descriptor ¶
func NewDNAT44Descriptor(natHandler vppcalls.NatVppAPI, log logging.PluginLogger) *kvs.KVDescriptor
NewDNAT44Descriptor creates a new instance of the DNAT44 descriptor.
func NewNAT44AddressPoolDescriptor ¶
func NewNAT44AddressPoolDescriptor(nat44GlobalDesc *NAT44GlobalDescriptor, natHandler vppcalls.NatVppAPI, log logging.PluginLogger) *kvs.KVDescriptor
NewNAT44AddressPoolDescriptor creates a new instance of the NAT44AddressPoolDescriptor.
func NewNAT44GlobalAddressDescriptor ¶
func NewNAT44GlobalAddressDescriptor(natHandler vppcalls.NatVppAPI, log logging.PluginLogger) *kvs.KVDescriptor
NewNAT44GlobalAddressDescriptor creates a new instance of the NAT44Address descriptor. Deprecated. Functionality moved to NAT44AddressPoolDescriptor. Kept for backward compatibility.
func NewNAT44GlobalInterfaceDescriptor ¶
func NewNAT44GlobalInterfaceDescriptor(natHandler vppcalls.NatVppAPI, log logging.PluginLogger) *kvs.KVDescriptor
NewNAT44GlobalInterfaceDescriptor creates a new instance of the NAT44GlobalInterface descriptor. Deprecated. Functionality moved to NAT44InterfaceDescriptor. Kept for backward compatibility.
func NewNAT44InterfaceDescriptor ¶
func NewNAT44InterfaceDescriptor(nat44GlobalDesc *NAT44GlobalDescriptor, natHandler vppcalls.NatVppAPI, log logging.PluginLogger) *kvs.KVDescriptor
NewNAT44InterfaceDescriptor creates a new instance of the NAT44Interface descriptor.
Types ¶
type DNAT44Descriptor ¶
type DNAT44Descriptor struct {
// contains filtered or unexported fields
}
DNAT44Descriptor teaches KVScheduler how to configure Destination NAT44 in VPP.
func (*DNAT44Descriptor) Create ¶
func (d *DNAT44Descriptor) Create(key string, dnat *nat.DNat44) (metadata interface{}, err error)
Create adds new destination-NAT44 configuration.
func (*DNAT44Descriptor) Delete ¶
func (d *DNAT44Descriptor) Delete(key string, dnat *nat.DNat44, metadata interface{}) error
Delete removes existing destination-NAT44 configuration.
func (*DNAT44Descriptor) Dependencies ¶
func (d *DNAT44Descriptor) Dependencies(key string, dnat *nat.DNat44) (dependencies []kvs.Dependency)
Dependencies lists endpoint-dependent mode, external interfaces and non-zero VRFs from mappings as dependencies.
func (*DNAT44Descriptor) EquivalentDNAT44 ¶
func (d *DNAT44Descriptor) EquivalentDNAT44(key string, oldDNAT, newDNAT *nat.DNat44) bool
EquivalentDNAT44 compares two instances of DNAT44 for equality.
func (*DNAT44Descriptor) IsRetriableFailure ¶
func (d *DNAT44Descriptor) IsRetriableFailure(err error) bool
IsRetriableFailure returns <false> for errors related to invalid configuration.
func (*DNAT44Descriptor) Retrieve ¶
func (d *DNAT44Descriptor) Retrieve(correlate []adapter.DNAT44KVWithMetadata) ( retrieved []adapter.DNAT44KVWithMetadata, err error, )
Retrieve returns the current NAT44 global configuration.
type NAT44AddressPoolDescriptor ¶
type NAT44AddressPoolDescriptor struct {
// contains filtered or unexported fields
}
NAT44AddressPoolDescriptor teaches KVScheduler how to add/remove VPP NAT44 IP addresses pools.
func (*NAT44AddressPoolDescriptor) Create ¶
func (d *NAT44AddressPoolDescriptor) Create(key string, natAddr *nat.Nat44AddressPool) (metadata interface{}, err error)
Create adds IP address pool into VPP NAT44 address pools.
func (*NAT44AddressPoolDescriptor) Delete ¶
func (d *NAT44AddressPoolDescriptor) Delete(key string, natAddr *nat.Nat44AddressPool, metadata interface{}) error
Delete removes IP address pool from VPP NAT44 address pools.
func (*NAT44AddressPoolDescriptor) Dependencies ¶
func (d *NAT44AddressPoolDescriptor) Dependencies(key string, natAddr *nat.Nat44AddressPool) (deps []kvs.Dependency)
Dependencies lists endpoint-dependent mode and non-zero/non-all-ones VRF as dependencies.
func (*NAT44AddressPoolDescriptor) DerivedValues ¶ added in v3.2.0
func (d *NAT44AddressPoolDescriptor) DerivedValues(key string, addrPool *nat.Nat44AddressPool) (derValues []kvs.KeyValuePair)
DerivedValues derives:
- for twiceNAT address pool the pool itself with exposed IP addresses and VRF in derived key
func (*NAT44AddressPoolDescriptor) Retrieve ¶
func (d *NAT44AddressPoolDescriptor) Retrieve(correlate []adapter.NAT44AddressPoolKVWithMetadata) ( retrieved []adapter.NAT44AddressPoolKVWithMetadata, err error)
Retrieve returns VPP IP address pools configured on VPP.
func (*NAT44AddressPoolDescriptor) Validate ¶
func (d *NAT44AddressPoolDescriptor) Validate(key string, natAddr *nat.Nat44AddressPool) error
Validate validates configuration for NAT44 IP addresses pool.
type NAT44GlobalAddressDescriptor ¶
type NAT44GlobalAddressDescriptor struct {
// contains filtered or unexported fields
}
NAT44GlobalAddressDescriptor teaches KVScheduler how to add/remove IP addresses to/from the VPP NAT44 address pool. Deprecated. Functionality moved to NAT44AddressPoolDescriptor. Kept for backward compatibility.
func (*NAT44GlobalAddressDescriptor) Create ¶
func (d *NAT44GlobalAddressDescriptor) Create(key string, natAddr *nat.Nat44Global_Address) (metadata interface{}, err error)
Create adds IP address into the NAT44 address pool.
func (*NAT44GlobalAddressDescriptor) Delete ¶
func (d *NAT44GlobalAddressDescriptor) Delete(key string, natAddr *nat.Nat44Global_Address, metadata interface{}) error
Delete removes IP address from the NAT44 address pool.
func (*NAT44GlobalAddressDescriptor) Dependencies ¶
func (d *NAT44GlobalAddressDescriptor) Dependencies(key string, natAddr *nat.Nat44Global_Address) (deps []kvs.Dependency)
Dependencies lists endpoint-dependent mode and non-zero VRF as dependencies.
func (*NAT44GlobalAddressDescriptor) IsNat44DerivedAddressKey ¶
func (d *NAT44GlobalAddressDescriptor) IsNat44DerivedAddressKey(key string) bool
IsNat44DerivedAddressKey returns true if the key is identifying configuration for a single address from the NAT44 address pool.
func (*NAT44GlobalAddressDescriptor) Validate ¶
func (d *NAT44GlobalAddressDescriptor) Validate(key string, natAddr *nat.Nat44Global_Address) error
Validate validates configuration for NAT44 address.
type NAT44GlobalDescriptor ¶
type NAT44GlobalDescriptor struct { // UseDeprecatedAPI tracks whether deprecated global API (NAT interfaces, addresses) is being used on NB. // Used to orchestrate which data should be dumped from which descriptor on Retrieve. UseDeprecatedAPI bool // contains filtered or unexported fields }
NAT44GlobalDescriptor teaches KVScheduler how to configure global options for VPP NAT44.
func NewNAT44GlobalDescriptor ¶
func NewNAT44GlobalDescriptor(natHandler vppcalls.NatVppAPI, log logging.PluginLogger) (*NAT44GlobalDescriptor, *kvs.KVDescriptor)
NewNAT44GlobalDescriptor creates a new instance of the NAT44Global descriptor.
func (*NAT44GlobalDescriptor) Create ¶
func (d *NAT44GlobalDescriptor) Create(key string, globalCfg *nat.Nat44Global) (metadata interface{}, err error)
Create applies NAT44 global options.
func (*NAT44GlobalDescriptor) Delete ¶
func (d *NAT44GlobalDescriptor) Delete(key string, globalCfg *nat.Nat44Global, metadata interface{}) error
Delete sets NAT44 global options back to the defaults.
func (*NAT44GlobalDescriptor) DerivedValues ¶
func (d *NAT44GlobalDescriptor) DerivedValues(key string, globalCfg *nat.Nat44Global) (derValues []kvs.KeyValuePair)
DerivedValues derives:
- nat.NatAddress for every IP address to be added into the NAT address pool,
- nat.NatInterface for every interface with assigned NAT configuration.
- empty proto value if NAT44 runs in the endpoint-dependent mode
func (*NAT44GlobalDescriptor) EquivalentNAT44Global ¶
func (d *NAT44GlobalDescriptor) EquivalentNAT44Global(key string, oldGlobalCfg, newGlobalCfg *nat.Nat44Global) bool
EquivalentNAT44Global compares two NAT44 global configs for equality.
func (*NAT44GlobalDescriptor) Retrieve ¶
func (d *NAT44GlobalDescriptor) Retrieve(correlate []adapter.NAT44GlobalKVWithMetadata) ([]adapter.NAT44GlobalKVWithMetadata, error)
Retrieve returns the current NAT44 global configuration.
func (*NAT44GlobalDescriptor) Update ¶
func (d *NAT44GlobalDescriptor) Update(key string, oldGlobalCfg, newGlobalCfg *nat.Nat44Global, oldMetadata interface{}) (newMetadata interface{}, err error)
Update updates NAT44 global options.
func (*NAT44GlobalDescriptor) UpdateWithRecreate ¶ added in v3.3.0
func (d *NAT44GlobalDescriptor) UpdateWithRecreate(key string, oldGlobalCfg, newGlobalCfg *nat.Nat44Global, metadata interface{}) bool
Change in the endpoint-dependency mode requires NAT44 plugin to be disabled and re-enabled.
func (*NAT44GlobalDescriptor) Validate ¶
func (d *NAT44GlobalDescriptor) Validate(key string, globalCfg *nat.Nat44Global) error
Validate validates VPP NAT44 global configuration.
type NAT44GlobalInterfaceDescriptor ¶
type NAT44GlobalInterfaceDescriptor struct {
// contains filtered or unexported fields
}
NAT44GlobalInterfaceDescriptor teaches KVScheduler how to configure VPP NAT interface features. Deprecated. Functionality moved to NAT44InterfaceDescriptor. Kept for backward compatibility.
func (*NAT44GlobalInterfaceDescriptor) Create ¶
func (d *NAT44GlobalInterfaceDescriptor) Create(key string, natIface *nat.Nat44Global_Interface) (metadata interface{}, err error)
Create enables NAT44 for an interface.
func (*NAT44GlobalInterfaceDescriptor) Delete ¶
func (d *NAT44GlobalInterfaceDescriptor) Delete(key string, natIface *nat.Nat44Global_Interface, metadata interface{}) error
Delete disables NAT44 for an interface.
func (*NAT44GlobalInterfaceDescriptor) Dependencies ¶
func (d *NAT44GlobalInterfaceDescriptor) Dependencies(key string, natIface *nat.Nat44Global_Interface) []kvs.Dependency
Dependencies lists the interface as the only dependency.
func (*NAT44GlobalInterfaceDescriptor) IsNAT44DerivedInterfaceKey ¶
func (d *NAT44GlobalInterfaceDescriptor) IsNAT44DerivedInterfaceKey(key string) bool
IsNAT44DerivedInterfaceKey returns true if the key is identifying NAT-44 configuration for interface.
type NAT44InterfaceDescriptor ¶
type NAT44InterfaceDescriptor struct {
// contains filtered or unexported fields
}
NAT44InterfaceDescriptor teaches KVScheduler how to configure VPP NAT interface features.
func (*NAT44InterfaceDescriptor) Create ¶
func (d *NAT44InterfaceDescriptor) Create(key string, natIface *nat.Nat44Interface) (metadata interface{}, err error)
Create enables NAT44 on an interface.
func (*NAT44InterfaceDescriptor) Delete ¶
func (d *NAT44InterfaceDescriptor) Delete(key string, natIface *nat.Nat44Interface, metadata interface{}) (err error)
Delete disables NAT44 on an interface.
func (*NAT44InterfaceDescriptor) Dependencies ¶
func (d *NAT44InterfaceDescriptor) Dependencies(key string, natIface *nat.Nat44Interface) (deps []kvs.Dependency)
Dependencies lists the interface and the NAT44 global configuration as dependencies.
func (*NAT44InterfaceDescriptor) Retrieve ¶
func (d *NAT44InterfaceDescriptor) Retrieve(correlate []adapter.NAT44InterfaceKVWithMetadata) ( retrieved []adapter.NAT44InterfaceKVWithMetadata, err error)
Retrieve returns the current NAT44 interface configuration.
func (*NAT44InterfaceDescriptor) Validate ¶
func (d *NAT44InterfaceDescriptor) Validate(key string, natIface *nat.Nat44Interface) error
Validate validates VPP NAT44 interface configuration.