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..0193e580 100644 --- a/lib/table.h +++ b/lib/table.h @@ -55,7 +55,6 @@ struct route_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 +64,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 *, @@ -75,4 +73,22 @@ extern struct route_node *route_node_match_ipv6 (struct route_table *, struct in6_addr *); #endif /* HAVE_IPV6 */ + + +/* 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); +} + #endif /* _ZEBRA_TABLE_H */ |