From ddaa1c276d7974ce76c07daa78161439c9998c7a Mon Sep 17 00:00:00 2001 From: Christoph Petrausch <christoph.petrausch@inovex.de> Date: Tue, 29 May 2018 10:26:19 +0200 Subject: [PATCH] Added support for RFC 8203 in notification decoder --- protocols/bgp/packet/bgp.go | 4 ++++ protocols/bgp/packet/decoder.go | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/protocols/bgp/packet/bgp.go b/protocols/bgp/packet/bgp.go index 41a2113f..3b6e0129 100644 --- a/protocols/bgp/packet/bgp.go +++ b/protocols/bgp/packet/bgp.go @@ -50,6 +50,10 @@ const ( InvalidNetworkField = 10 MalformedASPath = 11 + // Notification Msg Subcodes + AdministrativeShutdown = 2 + AdministrativeReset = 4 + // Attribute Type Codes OriginAttr = 1 ASPathAttr = 2 diff --git a/protocols/bgp/packet/decoder.go b/protocols/bgp/packet/decoder.go index 961789b3..31583bf1 100644 --- a/protocols/bgp/packet/decoder.go +++ b/protocols/bgp/packet/decoder.go @@ -114,7 +114,7 @@ func decodeNotificationMsg(buf *bytes.Buffer) (*BGPNotification, error) { return invalidErrCode(msg) } case Cease: - if msg.ErrorSubcode != 0 { + if !(msg.ErrorSubcode == 0 || msg.ErrorSubcode == AdministrativeShutdown || msg.ErrorSubcode == AdministrativeReset) { return invalidErrCode(msg) } default: -- GitLab