From 44a16bff6cbf3f5ae8db21ffcec602bc51295d0a Mon Sep 17 00:00:00 2001 From: Job Snijders Date: Sun, 18 Feb 2024 09:00:10 +0100 Subject: [PATCH] BGP: Update SendHoldTimer BGP Error code IANA registered an "Early Allocation" BGP Error code for 'Send Hold Timer Expired' event. Update BIRD to use that error code. --- proto/bgp/bgp.c | 7 ++++--- proto/bgp/packets.c | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/proto/bgp/bgp.c b/proto/bgp/bgp.c index e97b45e6..bd6e90d6 100644 --- a/proto/bgp/bgp.c +++ b/proto/bgp/bgp.c @@ -1059,12 +1059,13 @@ bgp_send_hold_timeout(timer *t) struct bgp_conn *conn = t->data; struct bgp_proto *p = conn->bgp; + DBG("BGP: Send hold timeout\n"); + if (conn->state == BS_CLOSE) return; - /* Error codes not yet assigned by IANA */ - uint code = 4; - uint subcode = 1; + uint code = 8; + uint subcode = 0; /* Like bgp_error() but without NOTIFICATION */ bgp_log_error(p, BE_BGP_TX, "Error", code, subcode, NULL, 0); diff --git a/proto/bgp/packets.c b/proto/bgp/packets.c index 18a226fb..f1e03621 100644 --- a/proto/bgp/packets.c +++ b/proto/bgp/packets.c @@ -3275,7 +3275,6 @@ static struct { { 3, 10, "Invalid network field" }, { 3, 11, "Malformed AS_PATH" }, { 4, 0, "Hold timer expired" }, - { 4, 1, "Send hold timer expired" }, /* Provisional [draft-ietf-idr-bgp-sendholdtimer] */ { 5, 0, "Finite state machine error" }, /* Subcodes are according to [RFC6608] */ { 5, 1, "Unexpected message in OpenSent state" }, { 5, 2, "Unexpected message in OpenConfirm state" }, @@ -3290,7 +3289,8 @@ static struct { { 6, 7, "Connection collision resolution" }, { 6, 8, "Out of Resources" }, { 7, 0, "Invalid ROUTE-REFRESH message" }, /* [RFC7313] */ - { 7, 1, "Invalid ROUTE-REFRESH message length" } /* [RFC7313] */ + { 7, 1, "Invalid ROUTE-REFRESH message length" }, /* [RFC7313] */ + { 8, 0, "Send hold timer expired" }, /* [draft-ietf-idr-bgp-sendholdtimer] */ }; /**