Index | Thread | Search

From:
Theo Buehler <tb@theobuehler.org>
Subject:
Re: bgpd: fix bitmap stat collection
To:
tech@openbsd.org
Date:
Fri, 6 Mar 2026 13:22:19 +0100

Download raw body.

Thread
On Fri, Mar 06, 2026 at 01:17:10PM +0100, Claudio Jeker wrote:
> Doh, I changed the code last minute to not use rdemem in bitmap.c since
> that binds the code directly to the rde. Instead local variables have been
> used and now I need to export those to rdemem before shipping the result
> to bgpctl.
> 
> The types are a bit messed up because rdemem ususe long long for all the
> things. Maybe the size members should be switched to size_t and the counts
> should probably be unsigned long long. This is probably something to
> tackle later.

It's not pretty but fine as a stopgap measure.

ok tb

> 
> -- 
> :wq Claudio
> 
> Index: bgpd.h
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpd/bgpd.h,v
> diff -u -p -r1.535 bgpd.h
> --- bgpd.h	5 Mar 2026 09:54:06 -0000	1.535
> +++ bgpd.h	5 Mar 2026 19:56:55 -0000
> @@ -1616,6 +1616,8 @@ void		 bitmap_id_put(struct bitmap *, ui
>  void		 bitmap_init(struct bitmap *);
>  void		 bitmap_reset(struct bitmap *);
>  
> +void		 bitmap_get_stats(long long *, long long *);
> +
>  /* rde_sets.c */
>  struct as_set	*as_sets_lookup(struct as_set_head *, const char *);
>  struct as_set	*as_sets_new(struct as_set_head *, const char *, size_t,
> Index: bitmap.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpd/bitmap.c,v
> diff -u -p -r1.2 bitmap.c
> --- bitmap.c	5 Mar 2026 09:54:06 -0000	1.2
> +++ bitmap.c	5 Mar 2026 19:58:17 -0000
> @@ -244,3 +244,10 @@ bitmap_reset(struct bitmap *map)
>  	bitmap_free(map);
>  	bitmap_init(map);
>  }
> +
> +void
> +bitmap_get_stats(long long *cnt, long long *size)
> +{
> +	*cnt = bitmap_cnt;
> +	*size = bitmap_size;
> +}
> Index: rde.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpd/rde.c,v
> diff -u -p -r1.688 rde.c
> --- rde.c	2 Mar 2026 10:00:31 -0000	1.688
> +++ rde.c	5 Mar 2026 19:56:27 -0000
> @@ -741,6 +741,8 @@ badnetdel:
>  			    peerid, pid, -1, &stats, sizeof(stats));
>  			break;
>  		case IMSG_CTL_SHOW_RIB_MEM:
> +			bitmap_get_stats(&rdemem.bitmap_cnt,
> +			    &rdemem.bitmap_size);
>  			imsg_compose(ibuf_se_ctl, IMSG_CTL_SHOW_RIB_MEM, 0,
>  			    pid, -1, &rdemem, sizeof(rdemem));
>  			break;
>