On Mon, Apr 18, 2016 at 01:50:09AM +0200, Sebastian Benoit wrote: > If you do that, then you can also just parse the output of "bgpctl show > sum", no? >
The idea of terse is that you don't need to parse. So in a way I agree with the diff. What I don't like is the inclusion of the number of prefixes. That count requires a roundtrip to the RDE to find and sometimes this takes a while. I would prefer if we could leave that out. > /Benno > > Denis Fondras(open...@ledeuns.net) on 2016.04.17 18:09:18 +0200: > > Hello, > > > > When monitoring my bgpd, I need to check the session duration and the > > number of > > prefixes. Here is a patch that add these informations to "bgpctl show sum > > terse" > > > > Before : > > # bgpctl show sum terse > > 10.20.30.254 65003 Established > > > > After : > > # bgpctl show sum terse > > 10.20.30.254 65003 Established 10 3 > > > > Denis > > > > > > Index: bgpctl/bgpctl.c > > =================================================================== > > RCS file: /cvs/src/usr.sbin/bgpctl/bgpctl.c,v > > retrieving revision 1.187 > > diff -u -p -r1.187 bgpctl.c > > --- bgpctl/bgpctl.c 5 Dec 2015 13:17:05 -0000 1.187 > > +++ bgpctl/bgpctl.c 17 Apr 2016 15:55:59 -0000 > > @@ -186,11 +186,9 @@ main(int argc, char *argv[]) > > /* NOTREACHED */ > > case SHOW: > > case SHOW_SUMMARY: > > - imsg_compose(ibuf, IMSG_CTL_SHOW_NEIGHBOR, 0, 0, -1, NULL, 0); > > show_summary_head(); > > - break; > > case SHOW_SUMMARY_TERSE: > > - imsg_compose(ibuf, IMSG_CTL_SHOW_TERSE, 0, 0, -1, NULL, 0); > > + imsg_compose(ibuf, IMSG_CTL_SHOW_NEIGHBOR, 0, 0, -1, NULL, 0); > > break; > > case SHOW_FIB: > > if (!res->addr.aid) { > > @@ -584,8 +582,9 @@ show_summary_terse_msg(struct imsg *imsg > > p = imsg->data; > > s = fmt_peer(p->conf.descr, &p->conf.remote_addr, > > p->conf.remote_masklen, nodescr); > > - printf("%s %s %s\n", s, log_as(p->conf.remote_as), > > - p->conf.template ? "Template" : statenames[p->state]); > > + printf("%s %s %s %llu %u\n", s, log_as(p->conf.remote_as), > > + p->conf.template ? "Template" : statenames[p->state], > > + (time(NULL) - p->stats.last_updown), p->stats.prefix_cnt); > > free(s); > > break; > > case IMSG_CTL_END: > > Index: bgpd/bgpd.h > > =================================================================== > > RCS file: /cvs/src/usr.sbin/bgpd/bgpd.h,v > > retrieving revision 1.292 > > diff -u -p -r1.292 bgpd.h > > --- bgpd/bgpd.h 6 Nov 2015 16:23:26 -0000 1.292 > > +++ bgpd/bgpd.h 17 Apr 2016 15:55:59 -0000 > > @@ -374,7 +374,6 @@ enum imsg_type { > > IMSG_CTL_SHOW_RIB_COMMUNITY, > > IMSG_CTL_SHOW_NETWORK, > > IMSG_CTL_SHOW_RIB_MEM, > > - IMSG_CTL_SHOW_TERSE, > > IMSG_CTL_SHOW_TIMER, > > IMSG_CTL_LOG_VERBOSE, > > IMSG_CTL_SHOW_FIB_TABLES, > > Index: bgpd/control.c > > =================================================================== > > RCS file: /cvs/src/usr.sbin/bgpd/control.c,v > > retrieving revision 1.82 > > diff -u -p -r1.82 control.c > > --- bgpd/control.c 5 Dec 2015 18:28:04 -0000 1.82 > > +++ bgpd/control.c 17 Apr 2016 15:55:59 -0000 > > @@ -245,7 +245,6 @@ control_dispatch_msg(struct pollfd *pfd, > > case IMSG_CTL_SHOW_RIB_MEM: > > case IMSG_CTL_SHOW_RIB_COMMUNITY: > > case IMSG_CTL_SHOW_NETWORK: > > - case IMSG_CTL_SHOW_TERSE: > > case IMSG_CTL_SHOW_TIMER: > > break; > > default: > > @@ -306,12 +305,6 @@ control_dispatch_msg(struct pollfd *pfd, > > imsg_ctl_rde(IMSG_CTL_END, imsg.hdr.pid, > > NULL, 0); > > } > > - break; > > - case IMSG_CTL_SHOW_TERSE: > > - for (p = peers; p != NULL; p = p->next) > > - imsg_compose(&c->ibuf, IMSG_CTL_SHOW_NEIGHBOR, > > - 0, 0, -1, p, sizeof(struct peer)); > > - imsg_compose(&c->ibuf, IMSG_CTL_END, 0, 0, -1, NULL, 0); > > break; > > case IMSG_CTL_FIB_COUPLE: > > case IMSG_CTL_FIB_DECOUPLE: > > > > -- > -- :wq Claudio