Documentation
¶
Index ¶
- Constants
- Variables
- func SetLogLevel(level logrus.Level)
- type AddrAnnouncer
- type AddrResponder
- type AddrSpeaker
- type Event
- type IPConnection
- type IPv4AddrAnnouncer
- type IPv4Con
- type IPv6AddrAnnouncer
- type IPv6Con
- type Option
- func WithAdvInterval(interval time.Duration) Option
- func WithIPvX(ipvx byte) Option
- func WithIPvXAddr(ips ...net.IP) Option
- func WithInterface(iface string) Option
- func WithMasterAdvInterval(interval time.Duration) Option
- func WithOwner(owner bool) Option
- func WithPreemtpMode(flag bool) Option
- func WithPriority(priority byte) Option
- func WithVRID(id byte) Option
- type PseudoHeader
- type Transition
- type VRRPPacket
- func (packet *VRRPPacket) AddIPvXAddr(version byte, ip net.IP) error
- 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 Version)
- func (packet *VRRPPacket) SetVirtualRouterID(VirtualRouterID byte)
- func (packet *VRRPPacket) ToBytes() []byte
- func (packet *VRRPPacket) ValidateCheckSum(pshdr *PseudoHeader) bool
- type Version
- type VirtualRouter
Constants ¶
View Source
const ( IPv4 = 4 IPv6 = 6 )
View Source
const ( INIT = iota MASTER BACKUP )
View Source
const ( MultiTTL = 255 IPProtocolNumber = 112 )
View Source
const EventChannelSize = 1
View Source
const PacketQueueSize = 1000
Variables ¶
View Source
var BroadcastHADDR, _ = net.ParseMAC("ff:ff:ff:ff:ff:ff")
View Source
var MultiAddrIPv4 = net.IPv4(224, 0, 0, 18)
View Source
var MultiAddrIPv6 = net.ParseIP("FF02:0:0:0:0:0:0:12")
Functions ¶
func SetLogLevel ¶
Types ¶
type AddrAnnouncer ¶
type AddrAnnouncer interface {
AnnounceAll(vr *VirtualRouter) error
}
type AddrResponder ¶ added in v0.2.0
type AddrResponder interface {
Respond(ctx context.Context, vr *VirtualRouter) error
}
type AddrSpeaker ¶ added in v0.2.0
type AddrSpeaker interface { AddrAnnouncer AddrResponder }
type IPConnection ¶
type IPConnection interface { WriteMessage(*VRRPPacket) error ReadMessage() (*VRRPPacket, error) }
func NewIPv4Conn ¶
func NewIPv4Conn(local, remote net.IP) (IPConnection, error)
type IPv4AddrAnnouncer ¶
type IPv4AddrAnnouncer struct {
// contains filtered or unexported fields
}
func NewIPv4AddrAnnouncer ¶
func NewIPv4AddrAnnouncer(nif *net.Interface) (*IPv4AddrAnnouncer, error)
func (*IPv4AddrAnnouncer) AnnounceAll ¶
func (ar *IPv4AddrAnnouncer) AnnounceAll(vr *VirtualRouter) error
AnnounceAll send gratuitous ARP response for all protected IPv4 addresses
func (*IPv4AddrAnnouncer) Respond ¶ added in v0.2.0
func (ar *IPv4AddrAnnouncer) Respond(ctx context.Context, vr *VirtualRouter) error
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 NewIPv6AddrAnnouncer ¶
func NewIPv6AddrAnnouncer(nif *net.Interface) (*IPv6AddrAnnouncer, error)
func (*IPv6AddrAnnouncer) AnnounceAll ¶
func (nd *IPv6AddrAnnouncer) AnnounceAll(vr *VirtualRouter) error
func (*IPv6AddrAnnouncer) Respond ¶ added in v0.2.0
func (nd *IPv6AddrAnnouncer) Respond(ctx context.Context, vr *VirtualRouter) error
type IPv6Con ¶
func (*IPv6Con) ReadMessage ¶
func (con *IPv6Con) ReadMessage() (*VRRPPacket, error)
func (*IPv6Con) WriteMessage ¶
func (con *IPv6Con) WriteMessage(packet *VRRPPacket) error
type Option ¶
type Option func(r *VirtualRouter) error
func WithAdvInterval ¶
func WithIPvXAddr ¶
func WithInterface ¶
func WithMasterAdvInterval ¶
func WithPreemtpMode ¶
func WithPriority ¶
type PseudoHeader ¶
func (*PseudoHeader) ToBytes ¶
func (psh *PseudoHeader) ToBytes() []byte
type Transition ¶
type Transition int
const ( Master2Backup Transition = iota Backup2Master Init2Master Init2Backup Master2Init Backup2Init )
func (Transition) String ¶
func (t Transition) String() string
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) error
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 Version)
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 VirtualRouter ¶
type VirtualRouter struct {
// contains filtered or unexported fields
}
func NewVirtualRouter ¶
func NewVirtualRouter(opts ...Option) (*VirtualRouter, error)
NewVirtualRouter create a new virtual router with designated parameters
func (*VirtualRouter) StartWithEventLoop ¶
func (r *VirtualRouter) StartWithEventLoop()
func (*VirtualRouter) StartWithEventSelector ¶
func (r *VirtualRouter) StartWithEventSelector(ch chan Transition)
func (*VirtualRouter) Stop ¶
func (r *VirtualRouter) Stop()
Source Files
¶
Click to show internal directories.
Click to hide internal directories.