summaryrefslogtreecommitdiff
path: root/lib/table.c
diff options
context:
space:
mode:
authorDavid Lamparter <equinox@diac24.net>2019-05-21 04:48:30 +0200
committerDavid Lamparter <equinox@diac24.net>2019-05-21 05:42:13 +0200
commit3b18b6c03d0243d9d161d17b875b0bb4c6587f1e (patch)
treeeba4a1ac235f8155150d4922c2708a18fbb1b55b /lib/table.c
parent0734f93b8ed51de625720346c953bd50e9f40487 (diff)
lib/table: remove nonsensical const, add pure
Passing the struct route_table *ptr as const doesn't really help; if anything it semantically would imply that the returned route_node is const too since constness should propagate (but it doesn't in C.) The right thing to do here - which actually helps the compiler optimize the code too - is to tag functions with __attribute__((pure)). The compiler does this automatically if it has the function body (and the body of all called functions) available. That should cover most "static inline" functions in headers, as well as functions in the same file. However, this doesn't work (at least without LTO) for extern functions. Hence, add "ext_pure" for this case. (Built-in "extern" to make lines shorter.) Signed-off-by: David Lamparter <equinox@diac24.net>
Diffstat (limited to 'lib/table.c')
-rw-r--r--lib/table.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/lib/table.c b/lib/table.c
index 4bd52b3d80..728615c776 100644
--- a/lib/table.c
+++ b/lib/table.c
@@ -191,7 +191,7 @@ static void set_link(struct route_node *node, struct route_node *new)
}
/* Find matched prefix. */
-struct route_node *route_node_match(const struct route_table *table,
+struct route_node *route_node_match(struct route_table *table,
union prefixconstptr pu)
{
const struct prefix *p = pu.p;
@@ -221,7 +221,7 @@ struct route_node *route_node_match(const struct route_table *table,
return NULL;
}
-struct route_node *route_node_match_ipv4(const struct route_table *table,
+struct route_node *route_node_match_ipv4(struct route_table *table,
const struct in_addr *addr)
{
struct prefix_ipv4 p;
@@ -234,7 +234,7 @@ struct route_node *route_node_match_ipv4(const struct route_table *table,
return route_node_match(table, (struct prefix *)&p);
}
-struct route_node *route_node_match_ipv6(const struct route_table *table,
+struct route_node *route_node_match_ipv6(struct route_table *table,
const struct in6_addr *addr)
{
struct prefix_ipv6 p;
@@ -248,7 +248,7 @@ struct route_node *route_node_match_ipv6(const struct route_table *table,
}
/* Lookup same prefix node. Return NULL when we can't find route. */
-struct route_node *route_node_lookup(const struct route_table *table,
+struct route_node *route_node_lookup(struct route_table *table,
union prefixconstptr pu)
{
struct route_node rn, *node;
@@ -260,7 +260,7 @@ struct route_node *route_node_lookup(const struct route_table *table,
}
/* Lookup same prefix node. Return NULL when we can't find route. */
-struct route_node *route_node_lookup_maynull(const struct route_table *table,
+struct route_node *route_node_lookup_maynull(struct route_table *table,
union prefixconstptr pu)
{
struct route_node rn, *node;
@@ -272,7 +272,7 @@ struct route_node *route_node_lookup_maynull(const struct route_table *table,
}
/* Add node to routing table. */
-struct route_node *route_node_get(struct route_table *const table,
+struct route_node *route_node_get(struct route_table *table,
union prefixconstptr pu)
{
struct route_node search;
@@ -471,7 +471,7 @@ struct route_node *route_next_until(struct route_node *node,
return NULL;
}
-unsigned long route_table_count(const struct route_table *table)
+unsigned long route_table_count(struct route_table *table)
{
return table->count;
}
@@ -606,7 +606,7 @@ static struct route_node *route_get_subtree_next(struct route_node *node)
* @see route_table_get_next
*/
static struct route_node *
-route_table_get_next_internal(const struct route_table *table,
+route_table_get_next_internal(struct route_table *table,
const struct prefix *p)
{
struct route_node *node, *tmp_node;
@@ -707,7 +707,7 @@ route_table_get_next_internal(const struct route_table *table,
* Find the node that occurs after the given prefix in order of
* iteration.
*/
-struct route_node *route_table_get_next(const struct route_table *table,
+struct route_node *route_table_get_next(struct route_table *table,
union prefixconstptr pu)
{
const struct prefix *p = pu.p;