On Thu, Apr 13, 2023 at 03:48:40PM +0200, Claudio Jeker wrote: > Seen while working on similar code. There is no need to make the > composition of IMSG_CTL_SHOW_RIB_COMMUNITIES so complicated.
ok > > -- > :wq Claudio > > Index: rde.c > =================================================================== > RCS file: /cvs/src/usr.sbin/bgpd/rde.c,v > retrieving revision 1.600 > diff -u -p -r1.600 rde.c > --- rde.c 7 Apr 2023 13:49:03 -0000 1.600 > +++ rde.c 13 Apr 2023 13:47:51 -0000 > @@ -2730,16 +2730,10 @@ rde_dump_rib_as(struct prefix *p, struct > struct rde_community *comm = prefix_communities(p); > size_t len = comm->nentries * sizeof(struct community); > if (comm->nentries > 0) { > - if ((wbuf = imsg_create(ibuf_se_ctl, > - IMSG_CTL_SHOW_RIB_COMMUNITIES, 0, pid, > - len)) == NULL) > + if (imsg_compose(ibuf_se_ctl, > + IMSG_CTL_SHOW_RIB_COMMUNITIES, 0, pid, -1, > + comm->communities, len) == -1) > return; > - if ((bp = ibuf_reserve(wbuf, len)) == NULL) { > - ibuf_free(wbuf); > - return; > - } > - memcpy(bp, comm->communities, len); > - imsg_close(ibuf_se_ctl, wbuf); > } > for (l = 0; l < asp->others_len; l++) { > if ((a = asp->others[l]) == NULL) >