Index | Thread | Search

From:
Claudio Jeker <cjeker@diehard.n-r-g.com>
Subject:
bgpctl: properly show extended messages capability
To:
tech@openbsd.org
Date:
Wed, 13 May 2026 17:37:10 +0200

Download raw body.

Thread
When adding the extended capabillity handling I forgot to add the
capability to the monster if check that validates that the peer has a
capability negotiated.

In general as4byte and rrefres are turned on by default so one needs to
really work hard to trigger this.
-- 
:wq Claudio

Index: output.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpctl/output.c,v
diff -u -p -r1.74 output.c
--- output.c	31 Mar 2026 09:32:12 -0000	1.74
+++ output.c	13 May 2026 15:31:35 -0000
@@ -345,7 +345,8 @@ show_neighbor_full(struct peer *p, struc
 	}
 	if (hascapamp || hascapaap || p->capa.peer.grestart.restart ||
 	    p->capa.peer.refresh || p->capa.peer.enhanced_rr ||
-	    p->capa.peer.as4byte || p->capa.peer.policy) {
+	    p->capa.peer.as4byte || p->capa.peer.policy ||
+	    p->capa.peer.ext_msg) {
 		printf("  Neighbor capabilities:\n");
 		if (hascapamp)
 			show_neighbor_capa_mp(&p->capa.peer);
@@ -377,7 +378,8 @@ show_neighbor_full(struct peer *p, struc
 	}
 	if (hascapamp || hascapaap || p->capa.neg.grestart.restart ||
 	    p->capa.neg.refresh || p->capa.neg.enhanced_rr ||
-	    p->capa.neg.as4byte || p->capa.neg.policy) {
+	    p->capa.neg.as4byte || p->capa.neg.policy ||
+	    p->capa.neg.ext_msg) {
 		printf("  Negotiated capabilities:\n");
 		if (hascapamp)
 			show_neighbor_capa_mp(&p->capa.neg);
Index: output_json.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpctl/output_json.c,v
diff -u -p -r1.63 output_json.c
--- output_json.c	17 Mar 2026 09:30:11 -0000	1.63
+++ output_json.c	13 May 2026 15:30:34 -0000
@@ -53,7 +53,8 @@ json_neighbor_capabilities(struct capabi
 			hascapaap = 1;
 	}
 	if (!hascapamp && !hascapaap && !capa->grestart.restart &&
-	    !capa->refresh && !capa->enhanced_rr && !capa->as4byte)
+	    !capa->refresh && !capa->enhanced_rr && !capa->as4byte &&
+	    !capa->ext_msg)
 		return;
 
 	json_do_object("capabilities", 0);