Go to file
Daniel Walton 40520c3649 bgpd: peer hash expands until we are out of memory
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>

swpX peers all start out with the same sockunion so initially they all
go into the same hash bucket. Once IPv6 ND has worked its magic they
will have different sockunions and will go in different buckets...life
is good.

Until then though, we are in a phase where all swpX peers have the same
socknunion. Once we have HASH_THRESHOLD (10) swpX peers and call
hash_get for a new swpX peer the hash code calls hash_expand(). This
happens because there are more than HASH_THRESHOLD entries in a single
bucket so the logic is "expand the hash to spread things out"...in our
case expanding doesn't spread out the swpX peers because all of their
sockunions are the same.

I looked at having peer_hash_make and peer_hash_same consider the ifname
of the swpX peer but that is a large change that we don't want to make
at the moment. So the fix is to put a cap on how large we are
willing to let the hash table get. By default there is no limit but if
max_size is set we will not allow the hash to expand above that.
2017-07-31 21:22:23 +00:00
babeld Merge remote-tracking branch 'frr/master' into newline-redux 2017-07-14 13:07:30 +02:00
bgpd bgpd: peer hash expands until we are out of memory 2017-07-31 21:22:23 +00:00
debian debian: python3-dev is now a build requirement for main package 2017-06-27 18:09:38 -07:00
doc redhat: Update documentation about frr-reload 2017-07-26 11:47:07 -04:00
eigrpd Merge pull request #837 from qlyoung/fix-eigrp-routemap-cli 2017-07-25 16:15:54 +02:00
fpm *: reindent 2017-07-17 14:04:07 +02:00
gdb gdb: Add a directory of files with gdb macros 2016-05-26 15:33:30 +00:00
init build: delete .cvsignore files 2011-12-13 14:27:01 +04:00
isisd Revert "*: reindent pt. 2" 2017-07-22 14:52:33 +02:00
ldpd ldpd: add the exit-address-family command 2017-07-26 19:37:33 -03:00
lib bgpd: peer hash expands until we are out of memory 2017-07-31 21:22:23 +00:00
m4 build: find & use threading library 2017-03-31 17:59:48 +02:00
nhrpd nhrpd: enable -Werror 2017-07-14 16:59:44 +02:00
ospf6d Revert "*: reindent pt. 2" 2017-07-22 14:52:33 +02:00
ospfclient *: reindent 2017-07-17 14:04:07 +02:00
ospfd Revert "*: reindent pt. 2" 2017-07-22 14:52:33 +02:00
pimd Revert "*: reindent pt. 2" 2017-07-22 14:52:33 +02:00
pkgsrc eigrp: Initial Commit 2017-03-08 23:07:46 -05:00
ports pimd: merge pimd as of 2015-01-19 2016-05-25 20:38:32 -04:00
python *: ditch vty_outln(), part 1 of 2 2017-07-13 20:29:22 +02:00
qpb Revert "*: reindent pt. 2" 2017-07-22 14:52:33 +02:00
redhat redhat: Make the init script flush routes for all associated protocols on stop 2017-07-25 15:51:30 -04:00
ripd ripd: Fix debug config failures 2017-07-24 16:00:20 -04:00
ripngd ripngd: Fix failure returned with some debug commands 2017-07-24 15:59:36 -04:00
snapcraft gitignore: update references to FRR 2017-07-12 11:55:04 -05:00
solaris gitignore: update references to FRR 2017-07-12 11:55:04 -05:00
tests Revert "*: reindent pt. 2" 2017-07-22 14:52:33 +02:00
tools Revert "*: reindent pt. 2" 2017-07-22 14:52:33 +02:00
vtysh vtysh: fix markfile output for ldpd 2017-07-26 19:44:49 -03:00
watchfrr *: reindent 2017-07-17 14:04:07 +02:00
zebra Merge pull request #863 from dwalton76/zebra-static-reject 2017-07-27 15:54:48 -04:00
.clang-format *: add indent control files 2017-07-17 14:00:23 +02:00
.gitignore gitignore: update references to FRR 2017-07-12 11:55:04 -05:00
AUTHORS Initial revision 2002-12-13 20:15:29 +00:00
bootstrap.sh autoreconf -i 2007-02-06 19:28:28 +00:00
buildtest.sh config: switch a few references to say FRR 2017-07-12 11:25:33 -05:00
ChangeLog Rename: freerangerouting --> frrouting 2017-03-30 14:24:05 -04:00
common.am python: clidef.py 2017-06-14 19:29:26 +02:00
COMMUNITY.md COMMUNITY.md: rewrap paragraphs, update PR section 2017-07-25 15:53:05 -04:00
configure.ac config: switch a few references to say FRR 2017-07-12 11:25:33 -05:00
COPYING *: make consistent & update GPLv2 file headers 2017-05-15 16:37:41 +02:00
COPYING-LGPLv2.1 build: remove LGPL v2.0, add LGPL v2.1 2016-11-15 17:19:38 +09:00
defaults.h *: reindent 2017-07-17 14:04:07 +02:00
git-reindent-branch.py *: fix git-reindent-branch.py reversing order 2017-07-22 18:00:44 +02:00
indent.py *: add indent control files 2017-07-17 14:00:23 +02:00
Makefile.am build: Hard directory instead of dynamic so make distribution works correctly 2017-07-07 13:42:54 -05:00
NEWS release: 0.99.24 2016-06-03 15:56:44 -04:00
README README: add references to EIGRP and NHRP. 2017-05-12 22:51:45 +02:00
README.NetBSD config: switch a few references to say FRR 2017-07-12 11:25:33 -05:00
render_md.py build: number sections in COMMUNITY.md HTML 2016-12-05 19:08:00 +01:00
REPORTING-BUGS config: switch a few references to say FRR 2017-07-12 11:25:33 -05:00
SERVICES babeld/eigrpd: flip VTY ports & fix rpm 2017-06-13 14:36:55 +02:00
stamp-h.in Initial revision 2002-12-13 20:15:29 +00:00
update-autotools * README.NetBSD: use update-autotools instead of autoreconf 2007-02-02 16:52:38 +00:00

FRRouting is free software that manages various IPv4 and IPv6 routing
protocols.

Currently FRRouting supports BGP4, BGP4+, OSPFv2, OSPFv3, RIPv1,
RIPv2, RIPng, PIM-SM/MSDP and LDP as well as very early support for IS-IS,
EIGRP and NHRP.

See the file REPORTING-BUGS to report bugs.

Free RRRouting is free software. See the file COPYING for copying conditions.

Public email discussion can be found at https://lists.frrouting.org/listinfo

Our public slack channel is at https://frrouting.slack.com