]> git.puffer.fish Git - mirror/frr.git/commitdiff
lib: fix const-check in route_node 1023/head
authorDavid Lamparter <equinox@opensourcerouting.org>
Tue, 22 Aug 2017 13:27:08 +0000 (15:27 +0200)
committerDavid Lamparter <equinox@opensourcerouting.org>
Tue, 22 Aug 2017 13:27:08 +0000 (15:27 +0200)
route_node->lock is "const" if --enable-dev-build is used.  This is done
to deter people from messing with internals of the route_table...
unfortunately, the inline'd route_[un]lock_node runs into this.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
lib/table.h

index ece40d86b33e1a606ecd330ca11a5c3b4b3db0fe..9637fec1499ccb2e07a916cbab5e870adeaf0ded 100644 (file)
@@ -227,7 +227,7 @@ extern void route_table_iter_cleanup(route_table_iter_t *iter);
 /* Lock node. */
 static inline struct route_node *route_lock_node(struct route_node *node)
 {
-       node->lock++;
+       (*(unsigned *)&node->lock)++;
        return node;
 }
 
@@ -235,7 +235,7 @@ static inline struct route_node *route_lock_node(struct route_node *node)
 static inline void route_unlock_node(struct route_node *node)
 {
        assert(node->lock > 0);
-       node->lock--;
+       (*(unsigned *)&node->lock)--;
 
        if (node->lock == 0)
                route_node_delete(node);