diff options
Diffstat (limited to 'lib/table.h')
-rw-r--r-- | lib/table.h | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/lib/table.h b/lib/table.h index 45ec6067..320a0d96 100644 --- a/lib/table.h +++ b/lib/table.h @@ -52,10 +52,27 @@ struct route_node void *aggregate; }; + +/* Lock node. */ +static inline struct route_node * +route_lock_node (struct route_node *node) +{ + node->lock++; + return node; +} + +/* Unlock node. */ +static inline void +route_unlock_node (struct route_node *node) +{ + if (--node->lock == 0) + route_node_delete (node); +} + + /* Prototypes. */ extern struct route_table *route_table_init (void); extern void route_table_finish (struct route_table *); -extern void route_unlock_node (struct route_node *node); extern void route_node_delete (struct route_node *node); extern struct route_node *route_top (struct route_table *); extern struct route_node *route_next (struct route_node *); @@ -65,7 +82,6 @@ extern struct route_node *route_node_get (struct route_table *, struct prefix *); extern struct route_node *route_node_lookup (struct route_table *, struct prefix *); -extern struct route_node *route_lock_node (struct route_node *node); extern struct route_node *route_node_match (struct route_table *, struct prefix *); extern struct route_node *route_node_match_ipv4 (struct route_table *, |