BIRD-1.3.6 - show bgp summary command

Alexander V. Chernikov melifaro at ipfw.ru
Wed Mar 7 11:54:51 CET 2012


On 06.03.2012 20:33, Alexander Shikoff wrote:
> On Tue, Mar 06, 2012 at 10:14:21PM +0400, Alexander V. Chernikov wrote:
>> 'show bgp sum proto' gives us mapping for proto ->  peer address, but
>> what about reverse mapping?
>>
>> Like this:
>> bird>  show bgp summary
>> Proto      Peer                    AS Last state change   Prefixes
>> rcvd/best   State/Last error
>> b_7204     10.2.33.4            65001 22:00               0/0
>>          Idle          Received: No supported AFI/SAFI
>> b_7206     10.2.33.6            65001 22:00               8/3
>>          Established
>> b_mega     10.0.0.1             42678 22:00               0/0
>>          Connect
> The only reason why I've not included instance name in output
> is the urge to minimize it. It's easy to implement, if someone
> really needs instance name in an output.

Ok, so I vote for including protocol name to final version :)

>
>> P.S.
>> I've changed style a bit, new version attached.
>> +void
>> +bgp_sh_summary(struct symbol *sym)
>> +{
>> +  struct proto_config *pc = NULL;
>> +
>> +  if (sym)
>> +    {
>> +      if (sym->class != SYM_PROTO)
>> +        cf_error("%s: Not a protocol", sym->name);
>> +      pc = (struct proto_config *)sym->def;
>> +      if (pc->protocol !=&proto_bgp)
>> +        cf_error("%s: Not a BGP protocol", sym->name);
>> +    }
>> +  else
>> +    {
>> +      if (EMPTY_LIST(config->protos))
>> +	{
>> +	  cli_msg(1006, "No protocols match");
>> +	  return;
>> +	}
>> +    }
> In this case EMPTY_LIST will be applied to global protos list. Thus if
> you have only non-BGP protos then EMPTY_LIST(config->protos) will return 0
> and you'll get header string printed:

It seems sometimes it is better just go to sleep instead of writing 
patches :)

However, we can still define cli_msg as print_header macro before 
bgp_sh_summary() not to write it twice.

>
>> +
>> +#ifdef IPV6
>> +      cli_msg(-2002, "%-10s %s\n%12s %-19s %-20s %s", "Proto", "Peer", "AS", "Last state change", "Prefixes rcvd/best", "State/Last error" );
>> +#else
>> +      cli_msg(-2002, "%-10s %-15s %10s %-19s %-20s %s", "Proto", "Peer", "AS", "Last state change", "Prefixes rcvd/best", "State/Last error" );
>> +#endif
>
> ... and nothing after it. I tried to avoid that.
>
>> +  if (pc)
>> +    {
>> +      /* Show single protocol info */
>> +      bgp_sh_proto_summary(pc->proto);
>> +      cli_msg(0, "");
>> +      return;
>> +    }
>> +
>> +  WALK_LIST(pc, config->protos)
>> +    {
>> +      if ((pc->protocol !=&proto_bgp) || (!pc->proto))
>> +	continue;
>> +
>> +      bgp_sh_proto_summary(pc->proto);
>> +    }
>> +
>> +    cli_msg(0, "");
>> +}
>
>




More information about the Bird-users mailing list