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.

-- 
: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 */

Reply via email to