Index | Thread | Search

From:
Claudio Jeker <cjeker@diehard.n-r-g.com>
Subject:
bgpd: don't fatal in rde_dump_ctx_new() for bad imsg types in the adj-rib-out case
To:
tech@openbsd.org
Date:
Wed, 13 May 2026 15:44:45 +0200

Download raw body.

Thread
In rde_dump_ctx_new() the adj-rib-out case only covers some of the
possible imsg types rde_dump_ctx_new() can be called with. So ship back an
error instead of the fatalx call.

The error could be refined but I think "operation not supported" is fine
for now.
-- 
:wq Claudio

Index: rde.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/rde.c,v
diff -u -p -r1.699 rde.c
--- rde.c	12 May 2026 20:27:31 -0000	1.699
+++ rde.c	13 May 2026 12:10:46 -0000
@@ -3385,7 +3385,12 @@ rde_dump_ctx_new(struct ctl_show_rib_req
 			free(ctx);
 			return;
 		default:
-			fatalx("%s: unsupported imsg type", __func__);
+			log_warnx("%s: bad imsg type %d", __func__, req->type);
+			error = CTL_RES_OPNOTSUPP;
+			imsg_compose(ibuf_se_ctl, IMSG_CTL_RESULT, 0, pid, -1,
+			    &error, sizeof(error));
+			free(ctx);
+			return;
 		}
 
 		LIST_INSERT_HEAD(&rde_dump_h, ctx, entry);