diff options
author | Denis V. Lunev <den@openvz.org> | 2008-01-10 12:23:38 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-29 00:01:26 +0100 |
commit | 93456b6d7753def8760b423ac6b986eb9d5a4a95 (patch) | |
tree | 840a84aa88dda5a99834af4b6c9ac6cf75c90b98 /net/ipv4 | |
parent | [NETNS]: Refactor fib initialization so it can handle multiple namespaces. (diff) | |
download | linux-93456b6d7753def8760b423ac6b986eb9d5a4a95.tar.xz linux-93456b6d7753def8760b423ac6b986eb9d5a4a95.zip |
[IPV4]: Unify access to the routing tables.
Replace the direct pointers to local and main tables with
calls to fib_get_table() with appropriate argument.
This doesn't introduce additional dereferences, but makes the access to fib
tables uniform in any (CONFIG_IP_MULTIPLE_TABLES) case.
Acked-by: Benjamin Thery <benjamin.thery@bull.net>
Acked-by: Daniel Lezcano <dlezcano@fr.ibm.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/fib_frontend.c | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c index 0484cae02736..9ff1e6669ef2 100644 --- a/net/ipv4/fib_frontend.c +++ b/net/ipv4/fib_frontend.c @@ -50,39 +50,34 @@ #define FFprint(a...) printk(KERN_DEBUG a) static struct sock *fibnl; +struct hlist_head fib_table_hash[FIB_TABLE_HASHSZ]; #ifndef CONFIG_IP_MULTIPLE_TABLES -struct fib_table *ip_fib_local_table; -struct fib_table *ip_fib_main_table; - -#define FIB_TABLE_HASHSZ 1 -static struct hlist_head fib_table_hash[FIB_TABLE_HASHSZ]; - static int __net_init fib4_rules_init(struct net *net) { - ip_fib_local_table = fib_hash_init(RT_TABLE_LOCAL); - if (ip_fib_local_table == NULL) + struct fib_table *local_table, *main_table; + + local_table = fib_hash_init(RT_TABLE_LOCAL); + if (local_table == NULL) return -ENOMEM; - ip_fib_main_table = fib_hash_init(RT_TABLE_MAIN); - if (ip_fib_main_table == NULL) + main_table = fib_hash_init(RT_TABLE_MAIN); + if (main_table == NULL) goto fail; - hlist_add_head_rcu(&ip_fib_local_table->tb_hlist, &fib_table_hash[0]); - hlist_add_head_rcu(&ip_fib_main_table->tb_hlist, &fib_table_hash[0]); + hlist_add_head_rcu(&local_table->tb_hlist, + &fib_table_hash[TABLE_LOCAL_INDEX]); + hlist_add_head_rcu(&main_table->tb_hlist, + &fib_table_hash[TABLE_MAIN_INDEX]); return 0; fail: - kfree(ip_fib_local_table); - ip_fib_local_table = NULL; + kfree(local_table); return -ENOMEM; } #else -#define FIB_TABLE_HASHSZ 256 -static struct hlist_head fib_table_hash[FIB_TABLE_HASHSZ]; - struct fib_table *fib_new_table(u32 id) { struct fib_table *tb; |