vrrp

package
v0.0.0-...-f472ab0 Latest Latest
Warning

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

Go to latest
Published: May 14, 2023 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	IPv4 = 4
	IPv6 = 6
)
View Source
const (
	INIT = iota
	MASTER
	BACKUP
)
View Source
const (
	VRRPMultiTTL         = 255
	VRRPIPProtocolNumber = 112
)
View Source
const (
	Master2Backup transition = iota
	Backup2Master
	Init2Master
	Init2Backup
	Master2Init
	Backup2Init
)
View Source
const EVENTCHANNELSIZE = 1
View Source
const PACKETQUEUESIZE = 1000

Variables

View Source
var BaordcastHADDR, _ = net.ParseMAC("ff:ff:ff:ff:ff:ff")
View Source
var VRRPMultiAddrIPv4 = net.IPv4(224, 0, 0, 18)
View Source
var VRRPMultiAddrIPv6 = net.ParseIP("FF02:0:0:0:0:0:0:12")

Functions

This section is empty.

Types

type AddrAnnouncer

type AddrAnnouncer interface {
	AnnounceAll(vr *VirtualRouter) error
}

type EVENT

type EVENT byte
const (
	SHUTDOWN EVENT = iota
	START
)

func (EVENT) String

func (e EVENT) String() string

type IPConnection

type IPConnection interface {
	WriteMessage(*VRRPPacket) error
	ReadMessage() (*VRRPPacket, error)
}

func NewIPv4Conn

func NewIPv4Conn(local, remote net.IP) IPConnection

type IPv4AddrAnnouncer

type IPv4AddrAnnouncer struct {
	ARPClient *arp.Client
}

func NewIPv4AddrAnnouncer

func NewIPv4AddrAnnouncer(nif *net.Interface) *IPv4AddrAnnouncer

func (*IPv4AddrAnnouncer) AnnounceAll

func (ar *IPv4AddrAnnouncer) AnnounceAll(vr *VirtualRouter) error

AnnounceAll send gratuitous ARP response for all protected IPv4 addresses

type IPv4Con

type IPv4Con struct {
	SendCon    *net.IPConn
	ReceiveCon *net.IPConn
	// contains filtered or unexported fields
}

func (*IPv4Con) ReadMessage

func (conn *IPv4Con) ReadMessage() (*VRRPPacket, error)

func (*IPv4Con) WriteMessage

func (conn *IPv4Con) WriteMessage(packet *VRRPPacket) error

type IPv6AddrAnnouncer

type IPv6AddrAnnouncer struct {
	// contains filtered or unexported fields
}

func NewIPIPv6AddrAnnouncer

func NewIPIPv6AddrAnnouncer(nif *net.Interface) *IPv6AddrAnnouncer

func (*IPv6AddrAnnouncer) AnnounceAll

func (nd *IPv6AddrAnnouncer) AnnounceAll(vr *VirtualRouter) error

type IPv6Con

type IPv6Con struct {
	Con *net.IPConn
	// contains filtered or unexported fields
}

func NewIPv6Con

func NewIPv6Con(local, remote net.IP) *IPv6Con

func (*IPv6Con) ReadMessage

func (con *IPv6Con) ReadMessage() (*VRRPPacket, error)

func (*IPv6Con) WriteMessage

func (con *IPv6Con) WriteMessage(packet *VRRPPacket) error

type PseudoHeader

type PseudoHeader struct {
	Saddr    net.IP
	Daddr    net.IP
	Zero     uint8
	Protocol uint8
	Len      uint16
}

func (*PseudoHeader) ToBytes

func (psh *PseudoHeader) ToBytes() []byte

type VRRPPacket

type VRRPPacket struct {
	Header    [8]byte
	IPAddress [][4]byte
	Pshdr     *PseudoHeader
}

func FromBytes

func FromBytes(IPvXVersion byte, octets []byte) (*VRRPPacket, error)

func (*VRRPPacket) AddIPvXAddr

func (packet *VRRPPacket) AddIPvXAddr(version byte, ip net.IP)

func (*VRRPPacket) GetAdvertisementInterval

func (packet *VRRPPacket) GetAdvertisementInterval() uint16

func (*VRRPPacket) GetCheckSum

func (packet *VRRPPacket) GetCheckSum() uint16

func (*VRRPPacket) GetIPvXAddr

func (packet *VRRPPacket) GetIPvXAddr(version byte) (addrs []net.IP)

func (*VRRPPacket) GetIPvXAddrCount

func (packet *VRRPPacket) GetIPvXAddrCount() byte

func (*VRRPPacket) GetPriority

func (packet *VRRPPacket) GetPriority() byte

func (*VRRPPacket) GetType

func (packet *VRRPPacket) GetType() byte

func (*VRRPPacket) GetVersion

func (packet *VRRPPacket) GetVersion() byte

func (*VRRPPacket) GetVirtualRouterID

func (packet *VRRPPacket) GetVirtualRouterID() byte

func (*VRRPPacket) SetAdvertisementInterval

func (packet *VRRPPacket) SetAdvertisementInterval(interval uint16)

func (*VRRPPacket) SetCheckSum

func (packet *VRRPPacket) SetCheckSum(pshdr *PseudoHeader)

func (*VRRPPacket) SetPriority

func (packet *VRRPPacket) SetPriority(Priority byte)

func (*VRRPPacket) SetType

func (packet *VRRPPacket) SetType()

func (*VRRPPacket) SetVersion

func (packet *VRRPPacket) SetVersion(Version VRRPVersion)

func (*VRRPPacket) SetVirtualRouterID

func (packet *VRRPPacket) SetVirtualRouterID(VirtualRouterID byte)

func (*VRRPPacket) ToBytes

func (packet *VRRPPacket) ToBytes() []byte

func (*VRRPPacket) ValidateCheckSum

func (packet *VRRPPacket) ValidateCheckSum(pshdr *PseudoHeader) bool

type VRRPVersion

type VRRPVersion byte
const (
	VRRPv1 VRRPVersion = 1
	VRRPv2 VRRPVersion = 2
	VRRPv3 VRRPVersion = 3
)

func (VRRPVersion) String

func (v VRRPVersion) String() string

type VirtualRouter

type VirtualRouter struct {
	// contains filtered or unexported fields
}

func NewVirtualRouter

func NewVirtualRouter(VRID byte, nif string, Owner bool, IPvX byte) *VirtualRouter

NewVirtualRouter create a new virtual router with designated parameters

func (*VirtualRouter) AddIPvXAddr

func (r *VirtualRouter) AddIPvXAddr(ip net.IP)

func (*VirtualRouter) Enroll

func (r *VirtualRouter) Enroll(transition2 transition, handler func()) bool

func (*VirtualRouter) RemoveIPvXAddr

func (r *VirtualRouter) RemoveIPvXAddr(ip net.IP)

func (*VirtualRouter) SetAdvInterval

func (r *VirtualRouter) SetAdvInterval(Interval time.Duration) *VirtualRouter

func (*VirtualRouter) SetPreemptMode

func (r *VirtualRouter) SetPreemptMode(flag bool) *VirtualRouter

func (*VirtualRouter) SetPriorityAndMasterAdvInterval

func (r *VirtualRouter) SetPriorityAndMasterAdvInterval(priority byte, interval time.Duration) *VirtualRouter

func (*VirtualRouter) StartWithEventLoop

func (vr *VirtualRouter) StartWithEventLoop()

func (*VirtualRouter) StartWithEventSelector

func (vr *VirtualRouter) StartWithEventSelector()

func (*VirtualRouter) Stop

func (vr *VirtualRouter) Stop()

Jump to

Keyboard shortcuts

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