mirror_frr/lib
Stephen Hemminger 97c84db00c hash: dynamically grow hash table
Dynamically grow the hash table index if the chains get too long.
If expansion doesn't help keep chain length short, then stop expanding,
to avoid bad behavior if there is a poor hash function.
Not a new idea, based on concepts in uthash.

Depends on my previous patch to restrict hash to power of 2.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
[profiling results: sum of cycles spent in hash_get/jhash with RIPE RIS
 test data (single simple BGP peer) improved to 69% of previously spent]
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2013-02-24 20:48:16 +01:00
..
.gitignore build: include git info 2012-12-12 15:34:37 +01:00
agentx.c agentx: handle SNMP traps 2012-06-25 19:03:23 +02:00
buffer.c *: use array_size() helper macro 2012-10-25 10:15:59 -07:00
buffer.h 2005-05-06 Paul Jakma <paul@dishone.st> 2005-05-06 21:25:49 +00:00
checksum.c lib: improve fletcher checksum validation 2012-10-25 10:15:58 -07:00
checksum.h lib: improve fletcher checksum validation 2012-10-25 10:15:58 -07:00
command.c build: include git info 2012-12-12 15:34:37 +01:00
command.h babeld: Initial import, for Babel routing protocol. 2012-03-25 17:06:51 +01:00
daemon.c [warnings] Fix various SOS warnings 2008-08-22 19:52:59 +01:00
distribute.c babeld: Initial import, for Babel routing protocol. 2012-03-25 17:06:51 +01:00
distribute.h babeld: Initial import, for Babel routing protocol. 2012-03-25 17:06:51 +01:00
filter.c lib: call filter delete hook before freeing access list 2011-12-06 15:02:34 +04:00
filter.h 2005-05-06 Paul Jakma <paul@dishone.st> 2005-05-06 21:25:49 +00:00
getopt1.c 2005-05-15 Paul Jakma <paul@dishone.st> 2005-05-15 14:25:08 +00:00
getopt.c 2005-08-10 Greg Troxel <gdt@fnord.ir.bbn.com> 2005-08-10 13:20:03 +00:00
getopt.h 2005-08-10 Greg Troxel <gdt@fnord.ir.bbn.com> 2005-08-10 13:20:03 +00:00
gitversion.pl build: include git info 2012-12-12 15:34:37 +01:00
hash.c hash: dynamically grow hash table 2013-02-24 20:48:16 +01:00
hash.h hash: dynamically grow hash table 2013-02-24 20:48:16 +01:00
if_rmap.c fix set never used warnings 2011-12-18 20:21:21 +04:00
if_rmap.h 2005-05-06 Paul Jakma <paul@dishone.st> 2005-05-06 21:25:49 +00:00
if.c Merge quagga mainline into the google ISIS code. 2012-04-11 23:51:08 -07:00
if.h zebra: fix sockaddr_dl length assumptions (BZ#737) 2013-01-16 01:45:57 +01:00
jhash.c 2004-07-09 Paul Jakma <paul@dishone.st> 2004-07-09 14:05:47 +00:00
jhash.h 2005-05-06 Paul Jakma <paul@dishone.st> 2005-05-06 21:25:49 +00:00
keychain.c [cleanup] Make command nodes static 2009-06-12 17:10:29 +01:00
keychain.h 2005-05-06 Paul Jakma <paul@dishone.st> 2005-05-06 21:25:49 +00:00
linklist.c [cleanup] Convert XMALLOC/memset to XCALLOC 2009-06-12 17:07:49 +01:00
linklist.h lib: remove ALL_LIST_ELEMENTS dead code branch 2013-01-11 22:09:34 +01:00
log.c *: use array_size() helper macro 2012-10-25 10:15:59 -07:00
log.h bgpd: improve logging of invalid BGP Notifications 2013-01-15 17:22:01 +01:00
Makefile.am build: Fix build for systems with no /bin/true 2013-01-11 21:50:06 +01:00
md5.c lib: add support for keyed-hashing with MD5 2012-04-07 13:53:22 -07:00
md5.h lib: add support for keyed-hashing with MD5 2012-04-07 13:53:22 -07:00
memory.c memory: install babel memory informations. 2012-03-25 17:06:52 +01:00
memory.h lib: add array_size() helper 2012-10-25 10:15:59 -07:00
memtypes.awk [lib] fix gensub call in memtypes.awk to pass "g", not g. 2006-03-30 14:30:19 +00:00
memtypes.c zebra: add way to determine VRF/AFI/SAFI of table 2012-11-30 21:41:16 +01:00
network.c 2005-02-16 Andrew J. Schorr <ajschorr@alumni.princeton.edu> 2005-02-16 16:25:39 +00:00
network.h 2005-05-06 Paul Jakma <paul@dishone.st> 2005-05-06 21:25:49 +00:00
pid_output.c + pidfiles are now always created with 0644 perms instead if LOGFILE_MASK (0600) 2007-10-04 15:09:19 +00:00
plist.c [cleanup] Make command nodes static 2009-06-12 17:10:29 +01:00
plist.h 2005-05-06 Paul Jakma <paul@dishone.st> 2005-05-06 21:25:49 +00:00
pqueue.c [ospfd] Fix bad SPF calculation on some topologies - incorrect sorting 2007-08-06 18:52:45 +00:00
pqueue.h [ospfd] Fix bad SPF calculation on some topologies - incorrect sorting 2007-08-06 18:52:45 +00:00
prefix.c lib: pretty ip_masklen and masklen2ip 2012-04-04 00:25:51 +02:00
prefix.h general: remove inline qualifiers and move in-header functions to objects 2012-01-06 16:18:18 +00:00
privs.c [privs/Solaris] Quagga should work in zones with IP instances 2007-09-18 18:07:18 +00:00
privs.h 2005-09-29 Paul Jakma <paul.jakma@sun.com> 2005-09-29 14:39:32 +00:00
queue.h lib: bring in sys/queue.h from FreeBSD tree 2012-11-30 21:41:17 +01:00
regex-gnu.h Initial revision 2002-12-13 20:15:29 +00:00
regex.c 2006-01-17 Vincent Jardin <vincent.jardin@6wind.com> 2006-01-17 23:39:04 +00:00
route_types.pl lib: put route_types.txt to real use 2011-12-13 19:13:17 +04:00
route_types.txt babeld: Initial import, for Babel routing protocol. 2012-03-25 17:06:51 +01:00
routemap.c [bgpd] Stability fixes including bugs 397, 492 2009-07-19 18:28:08 +01:00
routemap.h babeld: Initial import, for Babel routing protocol. 2012-03-25 17:06:51 +01:00
sigevent.c *: use array_size() helper macro 2012-10-25 10:15:59 -07:00
sigevent.h *: use array_size() helper macro 2012-10-25 10:15:59 -07:00
smux.c agentx: handle SNMP traps 2012-06-25 19:03:23 +02:00
smux.h snmp: let handlers accept OID from a lesser prefix 2012-06-25 19:03:23 +02:00
snmp.c snmp: let handlers accept OID from a lesser prefix 2012-06-25 19:03:23 +02:00
sockopt.c lib: compile even without IPV6_TCLASS 2011-10-17 18:59:26 +04:00
sockopt.h IPv6 transport class suppport 2011-10-17 18:59:19 +04:00
sockunion.c lib: Add back sockunion_str2su 2012-06-14 10:37:40 +01:00
sockunion.h lib: Add back sockunion_str2su 2012-06-14 10:37:40 +01:00
str.c * configure.ac: Test existance of strndup. 2005-09-19 09:53:21 +00:00
str.h * configure.ac: Test existance of strndup. 2005-09-19 09:53:21 +00:00
stream.c lib: improve sanity checks in stream_set_endp() 2012-10-25 10:15:58 -07:00
stream.h lib: add stream_set_endp() 2012-04-07 13:53:40 -07:00
table.c lib/table: add route_table_get_next() and iterator 2012-09-26 21:50:48 +02:00
table.h lib/table: add route_table_get_next() and iterator 2012-09-26 21:50:48 +02:00
thread.c hash: force size to be a power of 2 2013-02-24 20:42:40 +01:00
thread.h lib: do not allocate/free thread funcnames 2012-05-22 20:50:14 +02:00
vector.c 2005-03-14 Paul Jakma <paul.jakma@sun.com> 2005-03-14 20:19:01 +00:00
vector.h 2005-05-06 Paul Jakma <paul@dishone.st> 2005-05-06 21:25:49 +00:00
version.h.in build: include git info 2012-12-12 15:34:37 +01:00
vty.c lib: remove last uses of sockunion_su2str() 2012-05-02 17:03:27 +02:00
vty.h lib: Changes to VTY string-parsing macros to remove warnings 2013-01-07 09:59:51 -08:00
workqueue.c general: remove inline qualifiers and move in-header functions to objects 2012-01-06 16:18:18 +00:00
workqueue.h + initial edition of meta-queue for RIB updates processing (bug #431) 2008-06-02 12:03:22 +00:00
zassert.h Need RCS Id keyword. 2004-12-03 18:01:04 +00:00
zclient.c zebra: fix sockaddr_dl length assumptions (BZ#737) 2013-01-16 01:45:57 +01:00
zclient.h lib: bump ZSERV_VERSION to 2 2012-04-20 17:29:44 +02:00
zebra.h build: Fix build on MacOSX 10.8 (Mountain Lion) 2013-01-15 17:57:03 +01:00