diff options
author | Paul Jakma <paul.jakma@sun.com> | 2006-03-30 13:20:48 +0000 |
---|---|---|
committer | Paul Jakma <paul.jakma@sun.com> | 2006-03-30 13:20:48 +0000 |
commit | cbdfbaa51b600c7b217968b99a9b5a8fbf04bec4 (patch) | |
tree | bb8ce6ac1da775d34796315b1c5ac82e477bbd13 /bgpd/bgp_table.c | |
parent | 478ccfd61bd61fd6925c84811c2c0e893a38a38b (diff) | |
download | quagga-cbdfbaa5.tar.bz2 quagga-cbdfbaa5.tar.xz |
[bgpd] rearrange some structs for less padding, stats for table/attrs.
2006-03-12 Paul Jakma <paul.jakma@sun.com>
* bgp_attr.h: (struct attr) rearrange fields to avoid
wasted padding between them as much as possible.
(attr_count,attr_unknown_count) export new functions to
return number of counts of cached attributes.
* bgp_attr.c: (attr_count,attr_unknown_count) new functions to
return number of counts of cached attributes.
* bgp_route.h: (struct bgp_info) rearrange fields to avoid
wasted padding.
* bgp_table.h: (struct bgp_table) Add a count field, of number
of nodes in the table.
(struct bgp_node) rearrange fields to avoid
wasted padding between them, though I don't think there
was any in this case.
* bgp_table.c: (bgp_node_{delete,get}) Maintain the table node count.
(bgp_table_count) new function to access the table count.
Diffstat (limited to 'bgpd/bgp_table.c')
-rw-r--r-- | bgpd/bgp_table.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/bgpd/bgp_table.c b/bgpd/bgp_table.c index a3b489d5..810dab54 100644 --- a/bgpd/bgp_table.c +++ b/bgpd/bgp_table.c @@ -350,8 +350,10 @@ bgp_node_get (struct bgp_table *table, struct prefix *p) match = new; new = bgp_node_set (table, p); set_link (match, new); + table->count++; } } + table->count++; bgp_lock_node (new); return new; @@ -389,7 +391,9 @@ bgp_node_delete (struct bgp_node *node) } else node->table->top = child; - + + node->table->count--; + bgp_node_free (node); /* If parent node is stub then delete it also. */ @@ -492,3 +496,9 @@ bgp_route_next_until (struct bgp_node *node, struct bgp_node *limit) bgp_unlock_node (start); return NULL; } + +unsigned long +bgp_table_count (struct bgp_table *table) +{ + return table->count; +} |