summaryrefslogtreecommitdiffstats
path: root/bgpd/bgp_table.c
diff options
context:
space:
mode:
authorPaul Jakma <paul.jakma@sun.com>2006-03-30 13:20:48 +0000
committerPaul Jakma <paul.jakma@sun.com>2006-03-30 13:20:48 +0000
commitcbdfbaa51b600c7b217968b99a9b5a8fbf04bec4 (patch)
treebb8ce6ac1da775d34796315b1c5ac82e477bbd13 /bgpd/bgp_table.c
parent478ccfd61bd61fd6925c84811c2c0e893a38a38b (diff)
downloadquagga-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.c12
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;
+}