Index | Thread | Search

From:
Claudio Jeker <cjeker@diehard.n-r-g.com>
Subject:
bgpd: drop PREFIX_FLAG_DEAD from rib walker callbacks
To:
tech@openbsd.org
Date:
Fri, 14 Nov 2025 14:01:16 +0100

Download raw body.

Thread
No need to check for PREFIX_FLAG_DEAD in the prefix tree walker
callbacks. prefix_dump_r() already skips those via prefix_is_dead().

-- 
:wq Claudio

Index: rde.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/rde.c,v
diff -u -p -r1.663 rde.c
--- rde.c	12 Nov 2025 21:50:47 -0000	1.663
+++ rde.c	14 Nov 2025 12:54:16 -0000
@@ -3050,7 +3050,7 @@ rde_dump_adjout_upcall(struct prefix *p,
 
 	if ((p->flags & PREFIX_FLAG_ADJOUT) == 0)
 		fatalx("%s: prefix without PREFIX_FLAG_ADJOUT hit", __func__);
-	if (p->flags & (PREFIX_FLAG_WITHDRAW | PREFIX_FLAG_DEAD))
+	if (p->flags & PREFIX_FLAG_WITHDRAW)
 		return;
 	rde_dump_filter(p, &ctx->req, 1);
 }
Index: rde_peer.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/rde_peer.c,v
diff -u -p -r1.51 rde_peer.c
--- rde_peer.c	24 Sep 2025 14:04:04 -0000	1.51
+++ rde_peer.c	14 Nov 2025 12:53:21 -0000
@@ -520,9 +520,7 @@ peer_blast_upcall(struct prefix *p, void
 {
 	struct rde_peer		*peer;
 
-	if (p->flags & PREFIX_FLAG_DEAD) {
-		/* ignore dead prefixes, they will go away soon */
-	} else if ((p->flags & PREFIX_FLAG_MASK) == 0) {
+	if ((p->flags & PREFIX_FLAG_MASK) == 0) {
 		peer = prefix_peer(p);
 		/* put entries on the update queue if not already on a queue */
 		p->flags |= PREFIX_FLAG_UPDATE;