ok
Claudio Jeker([email protected]) on 2018.10.12 13:08:15 +0200:
> Some time ago I busted mrt dumps. This fixes them again.
>
> Run the mrt rib_dump_r runner in the poll loop before checking for queued
> imsgs. This makes sure that data is produced and pushed out quickly. Only
> run the runner when the mrt state is not MRT_STATE_REMOVE (since that
> would restart the dump) and there are no queued messages.
>
> --
> :wq Claudio
>
> Index: rde.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpd/rde.c,v
> retrieving revision 1.433
> diff -u -p -r1.433 rde.c
> --- rde.c 3 Oct 2018 11:36:39 -0000 1.433
> +++ rde.c 12 Oct 2018 07:45:15 -0000
> @@ -282,6 +281,11 @@ rde_main(int debug, int verbose)
> i = PFD_PIPE_COUNT;
> for (mctx = LIST_FIRST(&rde_mrts); mctx != 0; mctx = xmctx) {
> xmctx = LIST_NEXT(mctx, entry);
> +
> + if (mctx->mrt.state != MRT_STATE_REMOVE &&
> + mctx->mrt.wbuf.queued == 0)
> + rib_dump_r(&mctx->ribctx);
> +
> if (mctx->mrt.wbuf.queued) {
> pfd[i].fd = mctx->mrt.wbuf.fd;
> pfd[i].events = POLLOUT;
>