Claudio Jeker(cje...@diehard.n-r-g.com) on 2019.02.12 12:09:30 +0100:
> For testing I was running bgpd with no neighbors defined.
> In that case the peers pointer is NULL and so bgpctl is reporting suddenly
> 'no such neighbor' which is confusing for something like 'bgpctl show rib'.
> This is kind of a regression from adding group support in bgpctl.
>
> # bgpctl show rib
> flags: * = Valid, > = Selected, I = via IBGP, A = Announced,
>S = Stale, E = Error
> origin validation state: N = not-found, V = valid, ! = invalid
> origin: i = IGP, e = EGP, ? = Incomplete
>
> flags ovs destination gateway lpref med aspath origin
> no such neighbor
>
> With this diff the more expected behaviour is back:
> bgpctl show rib
> flags: * = Valid, > = Selected, I = via IBGP, A = Announced,
>S = Stale, E = Error
> origin validation state: N = not-found, V = valid, ! = invalid
> origin: i = IGP, e = EGP, ? = Incomplete
>
> flags ovs destination gateway lpref med aspath origin
> AI*>N 1.0.1.0/24 0.0.0.0100 0 i
> AI*>N 1.0.2.0/24 0.0.0.0100 0 i
>
> Anyone cares enough for such an edge case?
ok benno@
> --
> :wq Claudio
>
> Index: control.c
> ===
> RCS file: /cvs/src/usr.sbin/bgpd/control.c,v
> retrieving revision 1.94
> diff -u -p -r1.94 control.c
> --- control.c 20 Jan 2019 23:27:48 - 1.94
> +++ control.c 12 Feb 2019 11:00:19 -
> @@ -337,7 +337,7 @@ control_dispatch_msg(struct pollfd *pfd,
> }
> }
> }
> - if (!matched) {
> + if (!matched && peers != NULL) {
> control_result(c, CTL_RES_NOSUCHPEER);
> } else if (!neighbor || !neighbor->show_timers) {
> imsg_ctl_rde(IMSG_CTL_END, imsg.hdr.pid,
> @@ -461,7 +461,7 @@ control_dispatch_msg(struct pollfd *pfd,
> for (p = peers; p != NULL; p = p->next)
> if (peer_matched(p, neighbor))
> break;
> - if (p == NULL) {
> + if (p == NULL && peers != NULL) {
> control_result(c, CTL_RES_NOSUCHPEER);
> break;
> }
>