[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;
+}