forked from Mirror/frr
lib: inline route_node_lock()/route_node_unlock()
Avoid function calls. Signed-off-by: Jorge Boncompte <jbonor@gmail.com>
This commit is contained in:
parent
7fe9e03556
commit
01dccc0b19
20
lib/table.c
20
lib/table.c
|
@ -31,7 +31,6 @@
|
|||
DEFINE_MTYPE(LIB, ROUTE_TABLE, "Route table")
|
||||
DEFINE_MTYPE(LIB, ROUTE_NODE, "Route node")
|
||||
|
||||
static void route_node_delete(struct route_node *);
|
||||
static void route_table_free(struct route_table *);
|
||||
|
||||
static int route_table_hash_cmp(const void *a, const void *b)
|
||||
|
@ -187,23 +186,6 @@ static void set_link(struct route_node *node, struct route_node *new)
|
|||
new->parent = node;
|
||||
}
|
||||
|
||||
/* Lock node. */
|
||||
struct route_node *route_lock_node(struct route_node *node)
|
||||
{
|
||||
node->lock++;
|
||||
return node;
|
||||
}
|
||||
|
||||
/* Unlock node. */
|
||||
void route_unlock_node(struct route_node *node)
|
||||
{
|
||||
assert(node->lock > 0);
|
||||
node->lock--;
|
||||
|
||||
if (node->lock == 0)
|
||||
route_node_delete(node);
|
||||
}
|
||||
|
||||
/* Find matched prefix. */
|
||||
struct route_node *route_node_match(const struct route_table *table,
|
||||
union prefixconstptr pu)
|
||||
|
@ -348,7 +330,7 @@ struct route_node *route_node_get(struct route_table *const table,
|
|||
}
|
||||
|
||||
/* Delete node from the routing table. */
|
||||
static void route_node_delete(struct route_node *node)
|
||||
void route_node_delete(struct route_node *node)
|
||||
{
|
||||
struct route_node *child;
|
||||
struct route_node *parent;
|
||||
|
|
20
lib/table.h
20
lib/table.h
|
@ -182,7 +182,6 @@ route_table_init_with_delegate(route_table_delegate_t *);
|
|||
extern route_table_delegate_t *route_table_get_default_delegate(void);
|
||||
|
||||
extern void route_table_finish(struct route_table *);
|
||||
extern void route_unlock_node(struct route_node *node);
|
||||
extern struct route_node *route_top(struct route_table *);
|
||||
extern struct route_node *route_next(struct route_node *);
|
||||
extern struct route_node *route_next_until(struct route_node *,
|
||||
|
@ -193,7 +192,6 @@ extern struct route_node *route_node_lookup(const struct route_table *,
|
|||
union prefixconstptr);
|
||||
extern struct route_node *route_node_lookup_maynull(const struct route_table *,
|
||||
union prefixconstptr);
|
||||
extern struct route_node *route_lock_node(struct route_node *node);
|
||||
extern struct route_node *route_node_match(const struct route_table *,
|
||||
union prefixconstptr);
|
||||
extern struct route_node *route_node_match_ipv4(const struct route_table *,
|
||||
|
@ -205,6 +203,7 @@ extern unsigned long route_table_count(const struct route_table *);
|
|||
|
||||
extern struct route_node *route_node_create(route_table_delegate_t *,
|
||||
struct route_table *);
|
||||
extern void route_node_delete(struct route_node *);
|
||||
extern void route_node_destroy(route_table_delegate_t *, struct route_table *,
|
||||
struct route_node *);
|
||||
|
||||
|
@ -225,6 +224,23 @@ extern void route_table_iter_cleanup(route_table_iter_t *iter);
|
|||
* Inline functions.
|
||||
*/
|
||||
|
||||
/* 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)
|
||||
{
|
||||
assert(node->lock > 0);
|
||||
node->lock--;
|
||||
|
||||
if (node->lock == 0)
|
||||
route_node_delete(node);
|
||||
}
|
||||
|
||||
/*
|
||||
* route_table_iter_next
|
||||
*
|
||||
|
|
Loading…
Reference in a new issue