[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.
diff --git a/bgpd/bgp_table.c b/bgpd/bgp_table.c
index a3b489d..810dab5 100644
--- a/bgpd/bgp_table.c
+++ b/bgpd/bgp_table.c
@@ -350,8 +350,10 @@
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 @@
}
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_unlock_node (start);
return NULL;
}
+
+unsigned long
+bgp_table_count (struct bgp_table *table)
+{
+ return table->count;
+}