diff options
author | Paul Jakma <paul.jakma@sun.com> | 2006-09-14 02:56:07 +0000 |
---|---|---|
committer | Paul Jakma <paul.jakma@sun.com> | 2006-09-14 02:56:07 +0000 |
commit | 2815e61ffbbf9c362896f3912d925cf78e125ee1 (patch) | |
tree | 8cc9c2cc857f12e3c22813f756fb8fd674757e1b /bgpd/bgp_aspath.c | |
parent | 9458b8191563eb5569f341172484a234ef2f743e (diff) |
[bgpd] Add RIB reporting commands, show bgp ... statistics
2006-09-13 Paul Jakma <paul.jakma@sun.com>
* bgp_aspath.c: (aspath_highest) new, return highest ASN in an
aspath.
* bgp_route.c: (bgp_peer_count_walker) new, do the walk done
in bgp_peer_counts as a thread.
(bgp_peer_counts) move walk to previous and call it via
thread_execute so this RIB walk shows up in thread stats.
(bgp_table_stats) New, gather some statistics for a given
RIB.
(bgp_table_stats_walker) New, RIB walker thread for former.
(bgp_table_stats_vty) Parsing front-end for 'show bgp ...',
useful model for future rationalisation of 'show ... bgp'.
(bgp_route_init) Add new RIB stats commands.
Diffstat (limited to 'bgpd/bgp_aspath.c')
-rw-r--r-- | bgpd/bgp_aspath.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/bgpd/bgp_aspath.c b/bgpd/bgp_aspath.c index 317e9f8d..327406fa 100644 --- a/bgpd/bgp_aspath.c +++ b/bgpd/bgp_aspath.c @@ -434,6 +434,26 @@ aspath_size (struct aspath *aspath) return size; } +/* Return highest public ASN in path */ +as_t +aspath_highest (struct aspath *aspath) +{ + struct assegment *seg = aspath->segments; + as_t highest = 0; + unsigned int i; + + while (seg) + { + for (i = 0; i < seg->length; i++) + if (seg->as[i] > highest + && (seg->as[i] < BGP_PRIVATE_AS_MIN + || seg->as[i] > BGP_PRIVATE_AS_MAX)) + highest = seg->as[i]; + seg = seg->next; + } + return highest; +} + /* Convert aspath structure to string expression. */ static char * aspath_make_str_count (struct aspath *as) |