On Mon, Jul 09, 2018 at 11:58:05PM +0200, Sebastian Benoit wrote:
> 
> compare the right things here: we want to know if the flag has changed.
> Found with claudios help and patience.
> 
> ok?

This is fucked up. :)
 
> (benno_claudio_rde_reconf_F_RIB_HASNOFIB.diff)
> 
> Index: rde.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpd/rde.c,v
> retrieving revision 1.386
> diff -u -p -u -1 -2 -r1.386 rde.c
> --- rde.c     9 Jul 2018 14:44:02 -0000       1.386
> +++ rde.c     9 Jul 2018 21:56:40 -0000
> @@ -758,25 +758,25 @@ rde_dispatch_imsg_parent(struct imsgbuf 
>                       }
>                       break;
>               case IMSG_RECONF_RIB:
>                       if (imsg.hdr.len - IMSG_HEADER_SIZE !=
>                           sizeof(struct rde_rib))
>                               fatalx("IMSG_RECONF_RIB bad len");
>                       memcpy(&rn, imsg.data, sizeof(rn));
>                       rib = rib_find(rn.name);
>                       if (rib == NULL)
>                               rib = rib_new(rn.name, rn.rtableid, rn.flags);
>                       else if (rib->rtableid != rn.rtableid ||
>                           (rib->flags & F_RIB_HASNOFIB) !=
> -                         (rib->flags & F_RIB_HASNOFIB)) {
> +                         (rn->flags & F_RIB_HASNOFIB)) {
>                               struct filter_head      *in_rules;
>                               struct rib_desc         *ribd = rib_desc(rib);
>                               /*
>                                * Big hammer in the F_RIB_HASNOFIB case but
>                                * not often enough used to optimise it more.
>                                * Need to save the filters so that they're not
>                                * lost.
>                                */
>                               in_rules = ribd->in_rules;
>                               ribd->in_rules = NULL;
>                               rde_rib_free(ribd);
>                               rib = rib_new(rn.name, rn.rtableid, rn.flags);
> 

-- 
:wq Claudio

Reply via email to