zhangzengfei
2023-05-22 acb15a431beb73159921477415c5d0f7d06c6768
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
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
)