Version: v0.2.3 Latest Latest

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

Go to latest
Published: May 11, 2021 License: Apache-2.0 Imports: 14 Imported by: 0




View Source
const (
	// ConnectionFlagFwdmask indicates the mask in the connection
	// flags which is used by forwarding method bits.
	ConnectionFlagFwdMask = 0x0007

	// ConnectionFlagMasq is used for masquerade forwarding method.
	ConnectionFlagMasq = 0x0000

	// ConnectionFlagLocalNode is used for local node forwarding
	// method.
	ConnectionFlagLocalNode = 0x0001

	// ConnectionFlagTunnel is used for tunnel mode forwarding
	// method.
	ConnectionFlagTunnel = 0x0002

	// ConnectionFlagDirectRoute is used for direct routing
	// forwarding method.
	ConnectionFlagDirectRoute = 0x0003

Destination forwarding methods

View Source
const (
	// RoundRobin distributes jobs equally amongst the available
	// real servers.
	RoundRobin = "rr"

	// LeastConnection assigns more jobs to real servers with
	// fewer active jobs.
	LeastConnection = "lc"

	// DestinationHashing assigns jobs to servers through looking
	// up a statically assigned hash table by their destination IP
	// addresses.
	DestinationHashing = "dh"

	// SourceHashing assigns jobs to servers through looking up
	// a statically assigned hash table by their source IP
	// addresses.
	SourceHashing = "sh"
View Source
const (
	// ConnFwdMask is a mask for the fwd methods
	ConnFwdMask = 0x0007

	// ConnFwdMasq denotes forwarding via masquerading/NAT
	ConnFwdMasq = 0x0000

	// ConnFwdLocalNode denotes forwarding to a local node
	ConnFwdLocalNode = 0x0001

	// ConnFwdTunnel denotes forwarding via a tunnel
	ConnFwdTunnel = 0x0002

	// ConnFwdDirectRoute denotes forwarding via direct routing
	ConnFwdDirectRoute = 0x0003

	// ConnFwdBypass denotes forwarding while bypassing the cache
	ConnFwdBypass = 0x0004


This section is empty.


This section is empty.


type Config

type Config struct {
	TimeoutTCP    time.Duration
	TimeoutTCPFin time.Duration
	TimeoutUDP    time.Duration

Config defines IPVS timeout configuration

type Destination

type Destination struct {
	Address             net.IP
	Port                uint16
	Weight              int
	ConnectionFlags     uint32 // ipip/tunnel=2, masq/nat=0, route/gateway=3
	AddressFamily       uint16
	UpperThreshold      uint32
	LowerThreshold      uint32
	ActiveConnections   int
	InactiveConnections int
	Stats               DstStats

Destination defines an IPVS destination (real server) in its entirety.

type DstStats

type DstStats SvcStats

DstStats defines IPVS destination (real server) statistics

type Handle

type Handle struct {
	// contains filtered or unexported fields

Handle provides a namespace specific ipvs handle to program ipvs rules.

func New

func New(path string) (*Handle, error)

New provides a new ipvs handle in the namespace pointed to by the passed path. It will return a valid handle or an error in case an error occurred while creating the handle.

func (*Handle) Close

func (i *Handle) Close()

Close closes the ipvs handle. The handle is invalid after Close returns.

func (*Handle) DelDestination

func (i *Handle) DelDestination(s *Service, d *Destination) error

DelDestination deletes an already existing real server in the passed ipvs service in the passed handle.

func (*Handle) DelService

func (i *Handle) DelService(s *Service) error

DelService deletes an already existing service in the passed handle.

func (*Handle) Flush

func (i *Handle) Flush() error

Flush deletes all existing services in the passed handle.

func (*Handle) GetConfig

func (i *Handle) GetConfig() (*Config, error)

GetConfig returns the current timeout configuration

func (*Handle) GetDestinations

func (i *Handle) GetDestinations(s *Service) ([]*Destination, error)

GetDestinations returns an array of Destinations configured for this Service

func (*Handle) GetService

func (i *Handle) GetService(s *Service) (*Service, error)

GetService gets details of a specific IPVS services, useful in updating statisics etc.,

func (*Handle) GetServices

func (i *Handle) GetServices() ([]*Service, error)

GetServices returns an array of services configured on the Node

func (*Handle) IsServicePresent

func (i *Handle) IsServicePresent(s *Service) bool

IsServicePresent queries for the ipvs service in the passed handle.

func (*Handle) NewDestination

func (i *Handle) NewDestination(s *Service, d *Destination) error

NewDestination creates a new real server in the passed ipvs service which should already be existing in the passed handle.

func (*Handle) NewService

func (i *Handle) NewService(s *Service) error

NewService creates a new ipvs service in the passed handle.

func (*Handle) SetConfig

func (i *Handle) SetConfig(c *Config) error

SetConfig set the current timeout configuration. 0: no change

func (*Handle) UpdateDestination

func (i *Handle) UpdateDestination(s *Service, d *Destination) error

UpdateDestination updates an already existing real server in the passed ipvs service in the passed handle.

func (*Handle) UpdateService

func (i *Handle) UpdateService(s *Service) error

UpdateService updates an already existing service in the passed handle.

type Service

type Service struct {
	// Virtual service address.
	Address  net.IP
	Protocol uint16 // 6=tcp, 17=udp, 132=sctp
	Port     uint16
	FWMark   uint32 // Firewall mark of the service.

	// Virtual service options.
	SchedName     string
	Flags         uint32
	Timeout       uint32
	Netmask       uint32
	AddressFamily uint16 // 0x2=ipv6
	PEName        string
	Stats         SvcStats

Service defines an IPVS service in its entirety.

type SvcStats

type SvcStats struct {
	Connections uint32
	PacketsIn   uint32
	PacketsOut  uint32
	BytesIn     uint64
	BytesOut    uint64
	CPS         uint32
	BPSOut      uint32
	PPSIn       uint32
	PPSOut      uint32
	BPSIn       uint32

SvcStats defines an IPVS service statistics

Jump to

Keyboard shortcuts

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