Index | Thread | Search

From:
Theo Buehler <tb@theobuehler.org>
Subject:
Re: bgpd: drop PREFIX_FLAG_DEAD from rib walker callbacks
To:
tech@openbsd.org
Date:
Fri, 14 Nov 2025 17:17:29 +0100

Download raw body.

Thread
On Fri, Nov 14, 2025 at 02:01:16PM +0100, Claudio Jeker wrote:
> No need to check for PREFIX_FLAG_DEAD in the prefix tree walker
> callbacks. prefix_dump_r() already skips those via prefix_is_dead().

ok tb

> 
> -- 
> :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;
>