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;
> 

Reply via email to