mirror_frr/lib
David Lamparter 6ac011aaad lib: fix prefix list trie corruption
The specific code here needs to establish an absolute order of more
specific to less specific possible matches in a prefix list.  This is
indirectly checked by an assert on insertion, because the "next best"
entry is required to be consistent even when joining multiple chains
of candidates.

Unfortunately, trie_install_fn() would insert entries too far ahead in
the chain if another entry with higher sequence number was seen.  This
breaks the trie and (rightfully) triggers the assertion failure on
insert.

Fixes: #937
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-08-11 19:02:08 +02:00
..
.gitignore lib: add grammar_sandbox to .gitignore 2016-12-20 06:39:37 +00:00
agentx.c *: reindent 2017-08-09 12:03:17 +02:00
bfd.c *: reindent 2017-08-09 12:03:17 +02:00
bfd.h *: reindent 2017-08-09 12:03:17 +02:00
bitfield.h *: reindent 2017-08-09 12:03:17 +02:00
buffer.c *: reindent 2017-08-09 12:03:17 +02:00
buffer.h *: reindent 2017-08-09 12:03:17 +02:00
checksum.c *: reindent 2017-08-09 12:03:17 +02:00
checksum.h *: reindent 2017-08-09 12:03:17 +02:00
command_lex.l lib: parser: fix allocation counting 2017-01-31 15:28:19 +01:00
command_match.c *: reindent 2017-08-09 12:03:17 +02:00
command_match.h *: reindent 2017-08-09 12:03:17 +02:00
command_parse.y lib: parser: remove previous deduplication code 2017-02-10 13:38:04 +01:00
command.c *: reindent 2017-08-09 12:03:17 +02:00
command.h *: reindent 2017-08-09 12:03:17 +02:00
csv.c *: reindent 2017-08-09 12:03:17 +02:00
csv.h *: reindent 2017-08-09 12:03:17 +02:00
distribute.c *: reindent 2017-08-09 12:03:17 +02:00
distribute.h *: reindent 2017-08-09 12:03:17 +02:00
event_counter.c *: reindent 2017-08-09 12:03:17 +02:00
event_counter.h *: reindent 2017-08-09 12:03:17 +02:00
fifo.h *: reindent 2017-08-09 12:03:17 +02:00
filter.c *: reindent 2017-08-09 12:03:17 +02:00
filter.h *: reindent 2017-08-09 12:03:17 +02:00
getopt1.c *: reindent 2017-08-09 12:03:17 +02:00
getopt.c *: reindent 2017-08-09 12:03:17 +02:00
getopt.h *: reindent 2017-08-09 12:03:17 +02:00
gitversion.pl build: fix minimal mixup in gitinfo suffix 2013-04-09 17:05:08 +02:00
grammar_sandbox_main.c *: reindent 2017-08-09 12:03:17 +02:00
grammar_sandbox.c *: reindent 2017-08-09 12:03:17 +02:00
graph.c *: reindent 2017-08-09 12:03:17 +02:00
graph.h *: reindent 2017-08-09 12:03:17 +02:00
hash.c *: reindent 2017-08-09 12:03:17 +02:00
hash.h *: reindent 2017-08-09 12:03:17 +02:00
hook.c *: reindent 2017-08-09 12:03:17 +02:00
hook.h *: reindent 2017-08-09 12:03:17 +02:00
if_rmap.c *: reindent 2017-08-09 12:03:17 +02:00
if_rmap.h *: reindent 2017-08-09 12:03:17 +02:00
if.c *: reindent 2017-08-09 12:03:17 +02:00
if.h *: reindent 2017-08-09 12:03:17 +02:00
imsg-buffer.c *: reindent 2017-08-09 12:03:17 +02:00
imsg.c *: reindent 2017-08-09 12:03:17 +02:00
imsg.h *: reindent 2017-08-09 12:03:17 +02:00
jhash.c *: reindent 2017-08-09 12:03:17 +02:00
jhash.h *: reindent 2017-08-09 12:03:17 +02:00
json.c *: reindent 2017-08-09 12:03:17 +02:00
json.h *: reindent 2017-08-09 12:03:17 +02:00
keychain.c *: reindent 2017-08-09 12:03:17 +02:00
keychain.h *: reindent 2017-08-09 12:03:17 +02:00
libfrr.c *: reindent 2017-08-09 12:03:17 +02:00
libfrr.h *: reindent 2017-08-09 12:03:17 +02:00
libospf.h ospf: Fix segfault if compiled with DEBUG 2017-08-01 11:38:19 +02:00
linklist.c *: reindent 2017-08-09 12:03:17 +02:00
linklist.h *: reindent 2017-08-09 12:03:17 +02:00
log_int.h *: reindent 2017-08-09 12:03:17 +02:00
log.c *: reindent 2017-08-09 12:03:17 +02:00
log.h *: reindent 2017-08-09 12:03:17 +02:00
Makefile.am zebra: add pseudowire manager 2017-07-25 00:53:23 -03:00
md5.c *: reindent 2017-08-09 12:03:17 +02:00
md5.h *: reindent 2017-08-09 12:03:17 +02:00
memory_vty.c *: reindent 2017-08-09 12:03:17 +02:00
memory_vty.h *: reindent 2017-08-09 12:03:17 +02:00
memory.c *: reindent 2017-08-09 12:03:17 +02:00
memory.h *: reindent 2017-08-09 12:03:17 +02:00
module.c *: reindent 2017-08-09 12:03:17 +02:00
module.h *: reindent 2017-08-09 12:03:17 +02:00
monotime.h *: reindent 2017-08-09 12:03:17 +02:00
mpls.h *: reindent 2017-08-09 12:03:17 +02:00
network.c *: reindent 2017-08-09 12:03:17 +02:00
network.h *: reindent 2017-08-09 12:03:17 +02:00
nexthop.c *: reindent 2017-08-09 12:03:17 +02:00
nexthop.h *: reindent 2017-08-09 12:03:17 +02:00
ns.c *: reindent 2017-08-09 12:03:17 +02:00
ns.h *: reindent 2017-08-09 12:03:17 +02:00
openbsd-queue.h *: reindent 2017-08-09 12:03:17 +02:00
openbsd-tree.h *: reindent 2017-08-09 12:03:17 +02:00
pid_output.c *: reindent 2017-08-09 12:03:17 +02:00
plist_int.h *: reindent 2017-08-09 12:03:17 +02:00
plist.c lib: fix prefix list trie corruption 2017-08-11 19:02:08 +02:00
plist.h *: reindent 2017-08-09 12:03:17 +02:00
pqueue.c *: reindent 2017-08-09 12:03:17 +02:00
pqueue.h *: reindent 2017-08-09 12:03:17 +02:00
prefix.c *: reindent 2017-08-09 12:03:17 +02:00
prefix.h *: reindent 2017-08-09 12:03:17 +02:00
privs.c *: reindent 2017-08-09 12:03:17 +02:00
privs.h *: reindent 2017-08-09 12:03:17 +02:00
ptm_lib.c *: reindent 2017-08-09 12:03:17 +02:00
ptm_lib.h *: reindent 2017-08-09 12:03:17 +02:00
pw.h *: reindent 2017-08-09 12:03:17 +02:00
qobj.c *: reindent 2017-08-09 12:03:17 +02:00
qobj.h *: reindent 2017-08-09 12:03:17 +02:00
queue.h *: reindent 2017-08-09 12:03:17 +02:00
route_types.pl lib: Fix Auto generation of redistribution strings 2017-01-27 15:37:14 -05:00
route_types.txt nhrpd: implement next hop resolution protocol 2017-03-07 16:20:29 +01:00
routemap.c *: reindent 2017-08-09 12:03:17 +02:00
routemap.h *: reindent 2017-08-09 12:03:17 +02:00
sigevent.c *: reindent 2017-08-09 12:03:17 +02:00
sigevent.h *: reindent 2017-08-09 12:03:17 +02:00
skiplist.c *: reindent 2017-08-09 12:03:17 +02:00
skiplist.h *: reindent 2017-08-09 12:03:17 +02:00
smux.c *: reindent 2017-08-09 12:03:17 +02:00
smux.h *: reindent 2017-08-09 12:03:17 +02:00
snmp.c *: reindent 2017-08-09 12:03:17 +02:00
sockopt.c *: reindent 2017-08-09 12:03:17 +02:00
sockopt.h *: reindent 2017-08-09 12:03:17 +02:00
sockunion.c *: reindent 2017-08-09 12:03:17 +02:00
sockunion.h *: reindent 2017-08-09 12:03:17 +02:00
spf_backoff.c *: reindent 2017-08-09 12:03:17 +02:00
spf_backoff.h *: reindent 2017-08-09 12:03:17 +02:00
srcdest_table.c *: reindent 2017-08-09 12:03:17 +02:00
srcdest_table.h *: reindent 2017-08-09 12:03:17 +02:00
stream.c *: reindent 2017-08-09 12:03:17 +02:00
stream.h *: reindent 2017-08-09 12:03:17 +02:00
strlcat.c *: reindent 2017-08-09 12:03:17 +02:00
strlcpy.c *: reindent 2017-08-09 12:03:17 +02:00
systemd.c *: reindent 2017-08-09 12:03:17 +02:00
systemd.h *: reindent 2017-08-09 12:03:17 +02:00
table.c *: reindent 2017-08-09 12:03:17 +02:00
table.h *: reindent 2017-08-09 12:03:17 +02:00
thread.c *: reindent 2017-08-09 12:03:17 +02:00
thread.h *: reindent 2017-08-09 12:03:17 +02:00
vector.c *: reindent 2017-08-09 12:03:17 +02:00
vector.h *: reindent 2017-08-09 12:03:17 +02:00
version.h.in Rename: FreeRangeRouting FRRouting 2017-03-30 14:22:35 -04:00
vrf.c *: reindent 2017-08-09 12:03:17 +02:00
vrf.h *: reindent 2017-08-09 12:03:17 +02:00
vty.c *: reindent 2017-08-09 12:03:17 +02:00
vty.h *: reindent 2017-08-09 12:03:17 +02:00
wheel.c *: reindent 2017-08-09 12:03:17 +02:00
wheel.h *: reindent 2017-08-09 12:03:17 +02:00
workqueue.c *: reindent 2017-08-09 12:03:17 +02:00
workqueue.h *: reindent 2017-08-09 12:03:17 +02:00
zassert.h *: reindent 2017-08-09 12:03:17 +02:00
zclient.c *: reindent 2017-08-09 12:03:17 +02:00
zclient.h *: reindent 2017-08-09 12:03:17 +02:00
zebra.h *: reindent 2017-08-09 12:03:17 +02:00