package vrrp import ( "net" "time" ) type VRRPVersion byte const ( VRRPv1 VRRPVersion = 1 VRRPv2 VRRPVersion = 2 VRRPv3 VRRPVersion = 3 ) func (v VRRPVersion) String() string { switch v { case VRRPv1: return "VRRPVersion1" case VRRPv2: return "VRRPVersion2" case VRRPv3: return "VRRPVersion3" default: return "unknown VRRP version" } } const ( IPv4 = 4 IPv6 = 6 ) const ( INIT = iota MASTER BACKUP ) const ( VRRPMultiTTL = 255 VRRPIPProtocolNumber = 112 ) var VRRPMultiAddrIPv4 = net.IPv4(224, 0, 0, 18) var VRRPMultiAddrIPv6 = net.ParseIP("FF02:0:0:0:0:0:0:12") var BaordcastHADDR, _ = net.ParseMAC("ff:ff:ff:ff:ff:ff") type EVENT byte const ( SHUTDOWN EVENT = iota START ) func (e EVENT) String() string { switch e { case START: return "START" case SHUTDOWN: return "SHUTDOWN" default: return "unknown event" } } const PACKETQUEUESIZE = 1000 const EVENTCHANNELSIZE = 1 type transition int func (t transition) String() string { switch t { case Master2Backup: return "master to backup" case Backup2Master: return "backup to master" case Init2Master: return "init to master" case Init2Backup: return "init to backup" case Backup2Init: return "backup to init" case Master2Init: return "master to init" default: return "unknown transition" } } const ( Master2Backup transition = iota Backup2Master Init2Master Init2Backup Master2Init Backup2Init ) var ( defaultPreempt = true defaultPriority byte = 100 defaultAdvertisementInterval = 1 * time.Second )