]> git.puffer.fish Git - matthieu/frr.git/commitdiff
lib: inline route_node_lock()/route_node_unlock()
authorJorge Boncompte <jbonor@gmail.com>
Mon, 7 Aug 2017 17:15:38 +0000 (19:15 +0200)
committerJorge Boncompte <jbonor@gmail.com>
Thu, 17 Aug 2017 15:46:22 +0000 (17:46 +0200)
Avoid function calls.

Signed-off-by: Jorge Boncompte <jbonor@gmail.com>
lib/table.c
lib/table.h

index 833adb9a3702de80abf67d53b6caef039d101066..67cf6aeec3481b7fcac2d1e49d2589b8777bcae1 100644 (file)
@@ -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;
index b7b402a5914135a99a42b03a955b2d3d2d42dc31..ece40d86b33e1a606ecd330ca11a5c3b4b3db0fe 100644 (file)
@@ -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
  *