While looking for something else I noticed this error. The holdtime is written into the buffer with ibuf_add_n16() so the htons() call is done in the ibuf add call. So there is no need for the htons() when assigning holdtime.
-- :wq Claudio Index: session.c =================================================================== RCS file: /cvs/src/usr.sbin/bgpd/session.c,v retrieving revision 1.451 diff -u -p -u -5 -r1.451 session.c --- session.c 19 Oct 2023 07:02:45 -0000 1.451 +++ session.c 27 Oct 2023 09:24:20 -0000 @@ -1570,13 +1570,13 @@ session_open(struct peer *p) bgp_fsm(p, EVNT_CON_FATAL); return; } if (p->conf.holdtime) - holdtime = htons(p->conf.holdtime); + holdtime = p->conf.holdtime; else - holdtime = htons(conf->holdtime); + holdtime = conf->holdtime; errs += ibuf_add_n8(buf->buf, 4); errs += ibuf_add_n16(buf->buf, p->conf.local_short_as); errs += ibuf_add_n16(buf->buf, holdtime); /* is already in network byte order */