Documentation ¶
Index ¶
- Constants
- Variables
- type AddrAnnouncer
- type EVENT
- type IPConnection
- type IPv4AddrAnnouncer
- type IPv4Con
- type IPv6AddrAnnouncer
- type IPv6Con
- type PseudoHeader
- type VRRPPacket
- func (packet *VRRPPacket) AddIPvXAddr(version byte, ip net.IP)
- func (packet *VRRPPacket) GetAdvertisementInterval() uint16
- func (packet *VRRPPacket) GetCheckSum() uint16
- func (packet *VRRPPacket) GetIPvXAddr(version byte) (addrs []net.IP)
- func (packet *VRRPPacket) GetIPvXAddrCount() byte
- func (packet *VRRPPacket) GetPriority() byte
- func (packet *VRRPPacket) GetType() byte
- func (packet *VRRPPacket) GetVersion() byte
- func (packet *VRRPPacket) GetVirtualRouterID() byte
- func (packet *VRRPPacket) SetAdvertisementInterval(interval uint16)
- func (packet *VRRPPacket) SetCheckSum(pshdr *PseudoHeader)
- func (packet *VRRPPacket) SetPriority(Priority byte)
- func (packet *VRRPPacket) SetType()
- func (packet *VRRPPacket) SetVersion(Version VRRPVersion)
- func (packet *VRRPPacket) SetVirtualRouterID(VirtualRouterID byte)
- func (packet *VRRPPacket) ToBytes() []byte
- func (packet *VRRPPacket) ValidateCheckSum(pshdr *PseudoHeader) bool
- type VRRPVersion
- type VirtualRouter
- func (r *VirtualRouter) AddIPvXAddr(ip net.IP)
- func (r *VirtualRouter) Enroll(transition2 transition, handler func()) bool
- func (r *VirtualRouter) RemoveIPvXAddr(ip net.IP)
- func (r *VirtualRouter) SetAdvInterval(Interval time.Duration) *VirtualRouter
- func (r *VirtualRouter) SetPreemptMode(flag bool) *VirtualRouter
- func (r *VirtualRouter) SetPriorityAndMasterAdvInterval(priority byte, interval time.Duration) *VirtualRouter
- func (vr *VirtualRouter) StartWithEventLoop()
- func (vr *VirtualRouter) StartWithEventSelector()
- func (vr *VirtualRouter) Stop()
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 IPConnection ¶
type IPConnection interface { WriteMessage(*VRRPPacket) error ReadMessage() (*VRRPPacket, error) }
func NewIPv4Conn ¶
func NewIPv4Conn(local, remote net.IP) IPConnection
type IPv4AddrAnnouncer ¶
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 ¶
func NewIPv6Con ¶
func (*IPv6Con) ReadMessage ¶
func (con *IPv6Con) ReadMessage() (*VRRPPacket, error)
func (*IPv6Con) WriteMessage ¶
func (con *IPv6Con) WriteMessage(packet *VRRPPacket) error
type PseudoHeader ¶
func (*PseudoHeader) ToBytes ¶
func (psh *PseudoHeader) ToBytes() []byte
type VRRPPacket ¶
type VRRPPacket struct { Header [8]byte IPAddress [][4]byte Pshdr *PseudoHeader }
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()
Click to show internal directories.
Click to hide internal directories.