To generate the IMSG_CTL_SHOW_RIB_ATTR message just use attr_writebuf()
instead of going via ibuf_reserve() and attr_write().
While there make a pointer != NULL check more obvious.
--
:wq Claudio
Index: rde.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/rde.c,v
retrieving revision 1.605
diff -u -p -r1.605 rde.c
--- rde.c 20 Apr 2023 15:44:45 -0000 1.605
+++ rde.c 10 Jun 2023 08:26:14 -0000
@@ -2828,7 +2828,6 @@ rde_dump_rib_as(struct prefix *p, struct
struct rib_entry *re;
struct prefix *xp;
struct rde_peer *peer;
- void *bp;
time_t staletime;
size_t aslen;
uint8_t l;
@@ -2934,12 +2933,8 @@ rde_dump_rib_as(struct prefix *p, struct
IMSG_CTL_SHOW_RIB_ATTR, 0, pid,
attr_optlen(a))) == NULL)
return;
- if ((bp = ibuf_reserve(wbuf, attr_optlen(a))) == NULL) {
- ibuf_free(wbuf);
- return;
- }
- if (attr_write(bp, attr_optlen(a), a->flags,
- a->type, a->data, a->len) == -1) {
+ if (attr_writebuf(wbuf, a->flags, a->type, a->data,
+ a->len) == -1) {
ibuf_free(wbuf);
return;
}
Index: rde_attr.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/rde_attr.c,v
retrieving revision 1.132
diff -u -p -r1.132 rde_attr.c
--- rde_attr.c 14 Dec 2022 12:37:15 -0000 1.132
+++ rde_attr.c 10 Jun 2023 08:19:25 -0000
@@ -85,7 +85,7 @@ attr_writebuf(struct ibuf *buf, uint8_t
if (ibuf_add(buf, hdr, flags & ATTR_EXTLEN ? 4 : 3) == -1)
return (-1);
- if (data && ibuf_add(buf, data, data_len) == -1)
+ if (data != NULL && ibuf_add(buf, data, data_len) == -1)
return (-1);
return (0);
}