Claudio Jeker([email protected]) on 2021.06.24 17:06:36 +0200:
> The network flush code only operates on peerself (like all the other
> network commands). Instead of passing a peer to the tree walker just
> default to peerself in network_flush_upcall().
> This makes the code more obivous that it operates on peerself.
>
ok
> --
> :wq Claudio
>
> Index: rde.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpd/rde.c,v
> retrieving revision 1.528
> diff -u -p -r1.528 rde.c
> --- rde.c 24 Jun 2021 13:03:31 -0000 1.528
> +++ rde.c 24 Jun 2021 15:00:32 -0000
> @@ -517,7 +517,7 @@ badnetdel:
> break;
> }
> if (rib_dump_new(RIB_ADJ_IN, AID_UNSPEC,
> - RDE_RUNNER_ROUNDS, peerself, network_flush_upcall,
> + RDE_RUNNER_ROUNDS, NULL, network_flush_upcall,
> NULL, NULL) == -1)
> log_warn("rde_dispatch: IMSG_NETWORK_FLUSH");
> break;
> @@ -4065,13 +4065,12 @@ network_dump_upcall(struct rib_entry *re
> static void
> network_flush_upcall(struct rib_entry *re, void *ptr)
> {
> - struct rde_peer *peer = ptr;
> struct bgpd_addr addr;
> struct prefix *p;
> u_int32_t i;
> u_int8_t prefixlen;
>
> - p = prefix_bypeer(re, peer);
> + p = prefix_bypeer(re, peerself);
> if (p == NULL)
> return;
> if ((prefix_aspath(p)->flags & F_ANN_DYNAMIC) != F_ANN_DYNAMIC)
> @@ -4084,14 +4083,14 @@ network_flush_upcall(struct rib_entry *r
> struct rib *rib = rib_byid(i);
> if (rib == NULL)
> continue;
> - if (prefix_withdraw(rib, peer, &addr, prefixlen) == 1)
> - rde_update_log("flush announce", i, peer,
> + if (prefix_withdraw(rib, peerself, &addr, prefixlen) == 1)
> + rde_update_log("flush announce", i, peerself,
> NULL, &addr, prefixlen);
> }
>
> - if (prefix_withdraw(rib_byid(RIB_ADJ_IN), peer, &addr,
> + if (prefix_withdraw(rib_byid(RIB_ADJ_IN), peerself, &addr,
> prefixlen) == 1)
> - peer->prefix_cnt--;
> + peerself->prefix_cnt--;
> }
>
> /* clean up */
>