summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/table.c2
-rw-r--r--lib/table.h1
2 files changed, 3 insertions, 0 deletions
diff --git a/lib/table.c b/lib/table.c
index 075c5584a8..7f789dd3cd 100644
--- a/lib/table.c
+++ b/lib/table.c
@@ -78,6 +78,8 @@ route_node_set (struct route_table *table, const struct prefix *prefix)
static void
route_node_free (struct route_table *table, struct route_node *node)
{
+ if (table->cleanup)
+ table->cleanup(table, node);
table->delegate->destroy_node (table->delegate, table, node);
}
diff --git a/lib/table.h b/lib/table.h
index 6997b6bdd5..1691a8e20a 100644
--- a/lib/table.h
+++ b/lib/table.h
@@ -62,6 +62,7 @@ struct route_table
* Delegate that performs certain functions for this table.
*/
route_table_delegate_t *delegate;
+ void (*cleanup)(struct route_table *, struct route_node *);
unsigned long count;