Download raw body.
bgpd: always call peer_dump_done in peer_dump
There is some confusion on how to finish a peer_dump run for
EXPORT_NONE and EXPORT_DEFAULT_ROUTE.
Just call peer_dump_done() in both cases since this is what is required to
finalize a dump. Especially the use of peer_blast() in EXPORT_NONE is not
great since this is causing a adj-rib-out walk for no reason.
peer_dump_done() calls peer_blast_done() and it issues the End-Of-RIB
marker. Nothing else is needed.
Noticed on the NLNOG looking glass which uses export none on most
sessions.
--
:wq Claudio
Index: rde_peer.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/rde_peer.c,v
diff -u -p -r1.80 rde_peer.c
--- rde_peer.c 15 Jul 2026 11:59:27 -0000 1.80
+++ rde_peer.c 20 Jul 2026 13:41:47 -0000
@@ -670,10 +670,10 @@ peer_dump(struct rde_peer *peer, uint8_t
peer->throttled = 1;
if (peer->export_type == EXPORT_NONE) {
- peer_blast(peer, aid);
+ peer_dump_done(peer, aid);
} else if (peer->export_type == EXPORT_DEFAULT_ROUTE) {
up_generate_default(peer, aid);
- peer_blast_done(peer, aid);
+ peer_dump_done(peer, aid);
} else if (aid == AID_FLOWSPECv4 || aid == AID_FLOWSPECv6) {
prefix_flowspec_dump(aid, peer, peer_dump_upcall,
peer_dump_done);
bgpd: always call peer_dump_done in peer_dump