From: Theo Buehler Subject: Re: bgpd: always call peer_dump_done in peer_dump To: tech@openbsd.org Date: Tue, 21 Jul 2026 09:56:40 +0200 On Tue, Jul 21, 2026 at 09:22:01AM +0200, Claudio Jeker wrote: > 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. Makes sense. ok tb > -- > :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); >