On Mon, Feb 13, 2023 at 02:33:05PM +0100, Claudio Jeker wrote:
> Instead of passing the rib and new and old best prefix just pass the
> rib_entry to rde_generate_updates(). This simplifies a few things down
> that rabbit hole. This is also a step towards decoupling prefix_evaluate()
> and the Loc-RIB from rde_generate_updates() and the Adj-RIB-Out
> processing.
> 
> Since the rib_entry is passed there is now always a valid prefix pointer
> in re->prefix and a lot of the if (new) else if (old) cascades can be
> simplified a lot.

Very nice.

> There is a trivial fix requried in the regress test, that I have ready but
> did not share here.

thanks

ok, just a small comment below

> -- 
> :wq Claudio
> 
> Index: rde.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpd/rde.c,v
> retrieving revision 1.592
> diff -u -p -r1.592 rde.c
> --- rde.c     9 Feb 2023 13:43:23 -0000       1.592
> +++ rde.c     13 Feb 2023 11:14:18 -0000
> @@ -3888,14 +3888,13 @@ rde_softreconfig_in(struct rib_entry *re
>  static void
>  rde_softreconfig_out(struct rib_entry *re, void *arg)
>  {
> -     struct rib      *rib = arg;
>       struct prefix   *p;
>  
>       if ((p = prefix_best(re)) == NULL)
>               /* no valid path for prefix */
>               return;
>  
> -     rde_generate_updates(rib, p, NULL, NULL, NULL, EVAL_RECONF);
> +     rde_generate_updates(re, NULL, NULL, EVAL_RECONF);

Unless you want to use p in a follow-up diff, I suggest you garbage
collect it.

Reply via email to