summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJorge Boncompte <jbonor@gmail.com>2017-08-07 19:15:38 +0200
committerJorge Boncompte <jbonor@gmail.com>2017-08-17 17:46:22 +0200
commit01dccc0b19e2d568d3a69531aaea1bfbd848c39d (patch)
tree325677a5ae96e0d47a5d5cecf745858babd0f9bc
parent7fe9e035568ee296a5a017b38251522b63cd2f64 (diff)
lib: inline route_node_lock()/route_node_unlock()
Avoid function calls. Signed-off-by: Jorge Boncompte <jbonor@gmail.com>
-rw-r--r--lib/table.c20
-rw-r--r--lib/table.h20
2 files changed, 19 insertions, 21 deletions
diff --git a/lib/table.c b/lib/table.c
index 833adb9a37..67cf6aeec3 100644
--- a/lib/table.c
+++ b/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;
diff --git a/lib/table.h b/lib/table.h
index b7b402a591..ece40d86b3 100644
--- a/lib/table.h
+++ b/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
*