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