On 2019/09/23 22:48, Stuart Henderson wrote: > "bgpctl XX nei" functions can now take "group XX" - when used as > "show nei group XX terse" you can't tell which entry relates to each > neighbour. > > OK to add the address to the end of the line where it's reasonably > out of the way of existing parsers?
missing free, pointed out by benno. (not that bgpctl will stick around for long anyway :) Index: bgpctl.8 =================================================================== RCS file: /cvs/src/usr.sbin/bgpctl/bgpctl.8,v retrieving revision 1.89 diff -u -p -r1.89 bgpctl.8 --- bgpctl.8 28 Jun 2019 12:12:06 -0000 1.89 +++ bgpctl.8 24 Sep 2019 09:06:13 -0000 @@ -289,7 +289,8 @@ Show statistics in an easily parseable t The printed numbers are the sent and received open, sent and received notifications, sent and received updates, sent and received keepalives, and sent and received route refresh messages plus the current and maximum -prefix count, the number of sent and received updates, and withdraws. +prefix count, the number of sent and received updates, sent and +received withdraws, and finally the neighbor's address. .It Cm timers Show the BGP timers. .El Index: bgpctl.c =================================================================== RCS file: /cvs/src/usr.sbin/bgpctl/bgpctl.c,v retrieving revision 1.243 diff -u -p -r1.243 bgpctl.c --- bgpctl.c 5 Aug 2019 12:51:32 -0000 1.243 +++ bgpctl.c 24 Sep 2019 09:06:13 -0000 @@ -601,12 +601,26 @@ int show_neighbor_terse(struct imsg *imsg) { struct peer *p; + char *s; switch (imsg->hdr.type) { case IMSG_CTL_SHOW_NEIGHBOR: p = imsg->data; + if ((p->conf.remote_addr.aid == AID_INET && + p->conf.remote_masklen != 32) || + (p->conf.remote_addr.aid == AID_INET6 && + p->conf.remote_masklen != 128)) { + if (asprintf(&s, "%s/%u", + log_addr(&p->conf.remote_addr), + p->conf.remote_masklen) == -1) + err(1, NULL); + } else + if ((s = strdup(log_addr(&p->conf.remote_addr))) == + NULL) + err(1, "strdup"); + printf("%llu %llu %llu %llu %llu %llu %llu " - "%llu %llu %llu %u %u %llu %llu %llu %llu\n", + "%llu %llu %llu %u %u %llu %llu %llu %llu %s\n", p->stats.msg_sent_open, p->stats.msg_rcvd_open, p->stats.msg_sent_notification, p->stats.msg_rcvd_notification, @@ -616,7 +630,8 @@ show_neighbor_terse(struct imsg *imsg) p->stats.prefix_cnt, p->conf.max_prefix, p->stats.prefix_sent_update, p->stats.prefix_rcvd_update, p->stats.prefix_sent_withdraw, - p->stats.prefix_rcvd_withdraw); + p->stats.prefix_rcvd_withdraw, s); + free(s); break; case IMSG_CTL_END: return (1);