[IPV4]: Add LC-Trie FIB lookup algorithm.
Signed-off-by: Robert Olsson <Robert.Olsson@data.slu.se> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
18b504e25f
Коммит
19baf839ff
|
@ -1,6 +1,32 @@
|
|||
#
|
||||
# IP configuration
|
||||
#
|
||||
choice
|
||||
prompt "Choose IP: FIB lookup""
|
||||
depends on INET
|
||||
default IP_FIB_HASH
|
||||
|
||||
config IP_FIB_HASH
|
||||
bool "FIB_HASH"
|
||||
---help---
|
||||
Current FIB is very proven and good enough for most users.
|
||||
|
||||
config IP_FIB_TRIE
|
||||
bool "FIB_TRIE"
|
||||
---help---
|
||||
Use new experimental LC-trie as FIB lookup algoritm.
|
||||
This improves lookup performance
|
||||
|
||||
LC-trie is described in:
|
||||
|
||||
IP-address lookup using LC-tries. Stefan Nilsson and Gunnar Karlsson
|
||||
IEEE Journal on Selected Areas in Communications, 17(6):1083-1092, June 1999
|
||||
An experimental study of compression methods for dynamic tries
|
||||
Stefan Nilsson and Matti Tikkanen. Algorithmica, 33(1):19-33, 2002.
|
||||
http://www.nada.kth.se/~snilsson/public/papers/dyntrie2/
|
||||
|
||||
endchoice
|
||||
|
||||
config IP_MULTICAST
|
||||
bool "IP: multicasting"
|
||||
depends on INET
|
||||
|
|
|
@ -7,8 +7,10 @@ obj-y := utils.o route.o inetpeer.o protocol.o \
|
|||
ip_output.o ip_sockglue.o \
|
||||
tcp.o tcp_input.o tcp_output.o tcp_timer.o tcp_ipv4.o tcp_minisocks.o \
|
||||
datagram.o raw.o udp.o arp.o icmp.o devinet.o af_inet.o igmp.o \
|
||||
sysctl_net_ipv4.o fib_frontend.o fib_semantics.o fib_hash.o
|
||||
sysctl_net_ipv4.o fib_frontend.o fib_semantics.o
|
||||
|
||||
obj-$(CONFIG_IP_FIB_HASH) += fib_hash.o
|
||||
obj-$(CONFIG_IP_FIB_TRIE) += fib_trie.o
|
||||
obj-$(CONFIG_PROC_FS) += proc.o
|
||||
obj-$(CONFIG_IP_MULTIPLE_TABLES) += fib_rules.o
|
||||
obj-$(CONFIG_IP_MROUTE) += ipmr.o
|
||||
|
|
|
@ -1119,6 +1119,10 @@ module_init(inet_init);
|
|||
#ifdef CONFIG_PROC_FS
|
||||
extern int fib_proc_init(void);
|
||||
extern void fib_proc_exit(void);
|
||||
#ifdef CONFIG_IP_FIB_TRIE
|
||||
extern int fib_stat_proc_init(void);
|
||||
extern void fib_stat_proc_exit(void);
|
||||
#endif
|
||||
extern int ip_misc_proc_init(void);
|
||||
extern int raw_proc_init(void);
|
||||
extern void raw_proc_exit(void);
|
||||
|
@ -1139,11 +1143,19 @@ static int __init ipv4_proc_init(void)
|
|||
goto out_udp;
|
||||
if (fib_proc_init())
|
||||
goto out_fib;
|
||||
#ifdef CONFIG_IP_FIB_TRIE
|
||||
if (fib_stat_proc_init())
|
||||
goto out_fib_stat;
|
||||
#endif
|
||||
if (ip_misc_proc_init())
|
||||
goto out_misc;
|
||||
out:
|
||||
return rc;
|
||||
out_misc:
|
||||
#ifdef CONFIG_IP_FIB_TRIE
|
||||
fib_stat_proc_exit();
|
||||
out_fib_stat:
|
||||
#endif
|
||||
fib_proc_exit();
|
||||
out_fib:
|
||||
udp4_proc_exit();
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Загрузка…
Ссылка в новой задаче