Newer
Older
MarkerLen = 16
HeaderLen = 19
MinLen = 19
MaxLen = 4096
NLRIMaxLen = 5
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
OpenMsg = 1
UpdateMsg = 2
NotificationMsg = 3
KeepaliveMsg = 4
MessageHeaderError = 1
OpenMessageError = 2
UpdateMessageError = 3
HoldTimeExpired = 4
FiniteStateMachineError = 5
Cease = 6
// Msg Header Errors
ConnectionNotSync = 1
BadMessageLength = 2
BadMessageType = 3
// Open Msg Errors
UnsupportedVersionNumber = 1
BadPeerAS = 2
BadBGPIdentifier = 3
UnsupportedOptionalParameter = 4
DeprecatedOpenMsgError5 = 5
UnacceptableHoldTime = 6
// Update Msg Errors
MalformedAttributeList = 1
UnrecognizedWellKnownAttr = 2
MissingWellKnonAttr = 3
AttrFlagsError = 4
AttrLengthError = 5
InvalidOriginAttr = 6
DeprecatedUpdateMsgError7 = 7
InvalidNextHopAttr = 8
OptionalAttrError = 9
InvalidNetworkField = 10
MalformedASPath = 11
// Notification Msg Subcodes
AdministrativeShutdown = 2
AdministrativeReset = 4
OriginAttr = 1
ASPathAttr = 2
NextHopAttr = 3
MEDAttr = 4
LocalPrefAttr = 5
AtomicAggrAttr = 6
AggregatorAttr = 7
CommunitiesAttr = 8
AS4PathAttr = 17
AS4AggregatorAttr = 18
LargeCommunitiesAttr = 32
// ORIGIN values
IGP = 0
EGP = 1
INCOMPLETE = 2
// ASPath Segment Types
ASSet = 1
ASSequence = 2
// NOTIFICATION Cease error SubCodes (RFC4486)
MaxPrefReached = 1
AdminShut = 2
PeerDeconfigured = 3
AdminReset = 4
ConnectionRejected = 5
OtherConfigChange = 8
ConnectionCollisionResolution = 7
OutOfResoutces = 8
IPv4AFI = 1
UnicastSAFI = 1
CapabilitiesParamType = 2
AddPathCapabilityCode = 69
AddPathReceive = 1
AddPathSend = 2
AddPathSendReceive = 3
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
)
type BGPError struct {
ErrorCode uint8
ErrorSubCode uint8
ErrorStr string
}
func (b BGPError) Error() string {
return b.ErrorStr
}
type BGPMessage struct {
Header *BGPHeader
Body interface{}
}
type BGPHeader struct {
Length uint16
Type uint8
}
type BGPOpen struct {
Version uint8
AS uint16
HoldTime uint16
BGPIdentifier uint32
OptParmLen uint8
OptParams []OptParam
}
type BGPNotification struct {
ErrorCode uint8
ErrorSubcode uint8
}
type BGPUpdate struct {
WithdrawnRoutesLen uint16
WithdrawnRoutes *NLRI
TotalPathAttrLen uint16
PathAttributes *PathAttribute
NLRI *NLRI
}
type BGPUpdateAddPath struct {
WithdrawnRoutesLen uint16
WithdrawnRoutes *NLRIAddPath
TotalPathAttrLen uint16
PathAttributes *PathAttribute
NLRI *NLRIAddPath
}
type PathAttribute struct {
Length uint16
Optional bool
Transitive bool
Partial bool
ExtendedLength bool
TypeCode uint8
Value interface{}
Next *PathAttribute
}
type NLRI struct {
type NLRIAddPath struct {
PathIdentifier uint32
IP uint32
Pfxlen uint8
Next *NLRIAddPath
}
type ASPath []ASPathSegment
type ASPathSegment struct {
Type uint8
Count uint8
ASNs []uint32
}
type Aggretator struct {
Addr uint32