mirror_frr/lib
David Lamparter b4e55fc5e8 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:22 +02:00
..
.gitignore build: convert lib/ to non-recursive build 2017-07-31 23:03:27 +02:00
agentx.c *: reindent 2017-07-17 14:04:07 +02:00
bfd.c *: reindent 2017-07-17 14:04:07 +02:00
bfd.h *: reindent 2017-07-17 14:04:07 +02:00
bitfield.h *: reindent 2017-07-17 14:04:07 +02:00
buffer.c *: reindent 2017-07-17 14:04:07 +02:00
buffer.h *: reindent 2017-07-17 14:04:07 +02:00
checksum.c Revert "*: reindent pt. 2" 2017-07-22 14:52:33 +02:00
checksum.h *: reindent 2017-07-17 14:04:07 +02:00
clippy.c *: reindent 2017-07-17 14:04:07 +02:00
clippy.h lib: clippy the assistant 2017-06-14 19:29:23 +02:00
command_graph.c lib: cli: don't run off graph "pre-end" 2017-08-07 15:05:34 +02:00
command_graph.h *: reindent 2017-07-17 14:04:07 +02:00
command_lex.l build: convert lib/ to non-recursive build 2017-07-31 23:03:27 +02:00
command_match.c *: reindent 2017-07-17 14:04:07 +02:00
command_match.h *: reindent 2017-07-17 14:04:07 +02:00
command_parse.y build: convert lib/ to non-recursive build 2017-07-31 23:03:27 +02:00
command_py.c Revert "*: reindent pt. 2" 2017-07-22 14:52:33 +02:00
command.c lib: Fix multi instance ospf 2017-08-10 14:59:07 -07:00
command.h Merge branch 'frr/pull/822' ("EVPN fixes") 2017-08-09 21:34:10 +02:00
csv.c *: reindent 2017-07-17 14:04:07 +02:00
csv.h *: reindent 2017-07-17 14:04:07 +02:00
defun_lex.l build: convert lib/ to non-recursive build 2017-07-31 23:03:27 +02:00
distribute.c *: reindent 2017-07-17 14:04:07 +02:00
distribute.h *: reindent 2017-07-17 14:04:07 +02:00
event_counter.c *: reindent 2017-07-17 14:04:07 +02:00
event_counter.h *: reindent 2017-07-17 14:04:07 +02:00
fifo.h *: reindent 2017-07-17 14:04:07 +02:00
filter.c lib: some final MAC access-list fixes 2017-08-09 20:30:34 +02:00
filter.h *: reindent 2017-07-17 14:04:07 +02:00
frr_pthread.c *: reindent 2017-07-17 14:04:07 +02:00
frr_pthread.h *: reindent 2017-07-17 14:04:07 +02:00
frratomic.h *: reindent 2017-07-17 14:04:07 +02:00
getopt1.c *: reindent 2017-07-17 14:04:07 +02:00
getopt.c Revert "*: reindent pt. 2" 2017-07-22 14:52:33 +02:00
getopt.h *: reindent 2017-07-17 14:04:07 +02:00
gitversion.pl build: make gitversion more useful 2017-08-02 02:59:51 +02:00
grammar_sandbox_main.c lib: vty_stdio signal handling 2017-08-02 02:59:51 +02:00
grammar_sandbox.c *: reindent 2017-07-17 14:04:07 +02:00
graph.c *: reindent 2017-07-17 14:04:07 +02:00
graph.h *: reindent 2017-07-17 14:04:07 +02:00
hash.c lib: use load factor as hash expansion trigger 2017-08-09 13:53:11 -04:00
hash.h lib: use load factor as hash expansion trigger 2017-08-09 13:53:11 -04:00
hook.c *: reindent 2017-07-17 14:04:07 +02:00
hook.h Revert "*: reindent pt. 2" 2017-07-22 14:52:33 +02:00
if_rmap.c *: reindent 2017-07-17 14:04:07 +02:00
if_rmap.h *: reindent 2017-07-17 14:04:07 +02:00
if.c *: reindent 2017-07-17 14:04:07 +02:00
if.h Revert "*: reindent pt. 2" 2017-07-22 14:52:33 +02:00
imsg-buffer.c lib: revert reindent of files imported from OpenBSD 2017-07-24 18:40:24 -03:00
imsg.c lib: revert reindent of files imported from OpenBSD 2017-07-24 18:40:24 -03:00
imsg.h lib: revert reindent of files imported from OpenBSD 2017-07-24 18:40:24 -03:00
ipaddr.h *: reindent 2017-07-17 14:04:07 +02:00
jhash.c *: reindent 2017-07-17 14:04:07 +02:00
jhash.h *: reindent 2017-07-17 14:04:07 +02:00
json.c *: reindent 2017-07-17 14:04:07 +02:00
json.h *: reindent 2017-07-17 14:04:07 +02:00
keychain.c *: reindent 2017-07-17 14:04:07 +02:00
keychain.h *: reindent 2017-07-17 14:04:07 +02:00
libfrr.c lib: don't close stdio when running foreground 2017-08-11 15:45:56 +02:00
libfrr.h Merge remote-tracking branch 'frr/master' into tcp-zebra 2017-08-09 20:42:27 +02:00
libospf.h ospf: Fix segfault if compiled with DEBUG 2017-08-09 12:07:58 +02:00
linklist.c *: reindent 2017-07-17 14:04:07 +02:00
linklist.h *: reindent 2017-07-17 14:04:07 +02:00
log_int.h *: reindent 2017-07-17 14:04:07 +02:00
log.c Merge branch 'frr/pull/822' ("EVPN fixes") 2017-08-09 21:34:10 +02:00
log.h lib: plug logging hole during startup 2017-08-02 23:36:42 +02:00
Makefile build: convert lib/ to non-recursive build 2017-07-31 23:03:27 +02:00
md5.c Revert "*: reindent pt. 2" 2017-07-22 14:52:33 +02:00
md5.h *: reindent 2017-07-17 14:04:07 +02:00
memory_vty.c *: reindent 2017-07-17 14:04:07 +02:00
memory_vty.h *: reindent 2017-07-17 14:04:07 +02:00
memory.c *: reindent 2017-07-17 14:04:07 +02:00
memory.h *: reindent 2017-07-17 14:04:07 +02:00
module.c *: reindent 2017-07-17 14:04:07 +02:00
module.h *: reindent 2017-07-17 14:04:07 +02:00
monotime.h *: Define the number of seconds in a Day, Week and year 2017-08-08 09:06:22 -04:00
mpls.h Revert "*: reindent pt. 2" 2017-07-22 14:52:33 +02:00
network.c *: reindent 2017-07-17 14:04:07 +02:00
network.h *: reindent 2017-07-17 14:04:07 +02:00
nexthop.c lib: copy_nexthops() only copies the first nexthop 2017-07-20 17:11:43 +00:00
nexthop.h *: reindent 2017-07-17 14:04:07 +02:00
ns.c *: reindent 2017-07-17 14:04:07 +02:00
ns.h *: reindent 2017-07-17 14:04:07 +02:00
openbsd-queue.h *: reindent 2017-07-17 14:04:07 +02:00
openbsd-tree.c lib: fix corrupted RB trees 2017-07-24 18:50:45 -03:00
openbsd-tree.h lib: revert reindent of files imported from OpenBSD 2017-07-24 18:40:24 -03:00
pid_output.c *: reindent 2017-07-17 14:04:07 +02:00
plist_int.h *: reindent 2017-07-17 14:04:07 +02:00
plist.c lib: fix prefix list trie corruption 2017-08-11 19:02:22 +02:00
plist.h *: reindent 2017-07-17 14:04:07 +02:00
pqueue.c *: reindent 2017-07-17 14:04:07 +02:00
pqueue.h *: reindent 2017-07-17 14:04:07 +02:00
prefix.c lib: some final MAC access-list fixes 2017-08-09 20:30:34 +02:00
prefix.h lib: some final MAC access-list fixes 2017-08-09 20:30:34 +02:00
privs.c lib: privs: make uid/gid accessible before setuid 2017-08-02 23:36:39 +02:00
privs.h lib: privs: make uid/gid accessible before setuid 2017-08-02 23:36:39 +02:00
ptm_lib.c *: reindent 2017-07-17 14:04:07 +02:00
ptm_lib.h *: reindent 2017-07-17 14:04:07 +02:00
pw.h ldpd: integrate with the pseudowire manager in zebra 2017-08-09 12:35:16 +02:00
qobj.c *: reindent 2017-07-17 14:04:07 +02:00
qobj.h *: reindent 2017-07-17 14:04:07 +02:00
queue.h *: reindent 2017-07-17 14:04:07 +02:00
route_types.pl *: remove VTYNL, part 6 of 6 2017-07-14 10:20:03 +02:00
route_types.txt Merge remote-tracking branch 'frr/master' into pull-624 2017-06-13 09:18:14 +02:00
routemap.c Revert "*: reindent pt. 2" 2017-07-22 14:52:33 +02:00
routemap.h *: reindent 2017-07-17 14:04:07 +02:00
sbuf.c lib: add sbuf 2017-08-03 11:34:01 +02:00
sbuf.h lib: add sbuf 2017-08-03 11:34:01 +02:00
sha256.c *: reindent 2017-07-17 14:04:07 +02:00
sha256.h *: reindent 2017-07-17 14:04:07 +02:00
sigevent.c Revert "*: reindent pt. 2" 2017-07-22 14:52:33 +02:00
sigevent.h *: reindent 2017-07-17 14:04:07 +02:00
skiplist.c *: reindent 2017-07-17 14:04:07 +02:00
skiplist.h *: reindent 2017-07-17 14:04:07 +02:00
smux.c Revert "*: reindent pt. 2" 2017-07-22 14:52:33 +02:00
smux.h *: reindent 2017-07-17 14:04:07 +02:00
snmp.c *: reindent 2017-07-17 14:04:07 +02:00
sockopt.c Revert "*: reindent pt. 2" 2017-07-22 14:52:33 +02:00
sockopt.h *: reindent 2017-07-17 14:04:07 +02:00
sockunion.c lib: Remove sockopt_cork functionality 2017-08-01 20:36:33 -04:00
sockunion.h *: reindent 2017-07-17 14:04:07 +02:00
spf_backoff.c *: reindent 2017-07-17 14:04:07 +02:00
spf_backoff.h *: reindent 2017-07-17 14:04:07 +02:00
srcdest_table.c *: reindent 2017-07-17 14:04:07 +02:00
srcdest_table.h *: reindent 2017-07-17 14:04:07 +02:00
stream.c *: reindent 2017-07-17 14:04:07 +02:00
stream.h *: reindent 2017-07-17 14:04:07 +02:00
strlcat.c *: reindent 2017-07-17 14:04:07 +02:00
strlcpy.c *: reindent 2017-07-17 14:04:07 +02:00
subdir.am Merge pull request #911 from opensourcerouting/non-recursive-2 2017-08-09 14:38:07 -04:00
systemd.c *: reindent 2017-07-17 14:04:07 +02:00
systemd.h *: reindent 2017-07-17 14:04:07 +02:00
table.c Merge pull request #909 from opensourcerouting/isis-perf 2017-08-04 09:04:12 -04:00
table.h *: reindent 2017-07-17 14:04:07 +02:00
termtable.c *: reindent 2017-07-17 14:04:07 +02:00
termtable.h *: reindent 2017-07-17 14:04:07 +02:00
thread.c lib: fix still reachable linked list in thread.c 2017-08-08 12:54:28 -04:00
thread.h lib: flush ready queue before poll() again 2017-08-02 14:29:04 -04:00
vector.c *: reindent 2017-07-17 14:04:07 +02:00
vector.h *: reindent 2017-07-17 14:04:07 +02:00
version.h.in Rename: FreeRangeRouting FRRouting 2017-03-30 14:22:35 -04:00
vlan.h lib: VLAN definition 2017-05-25 10:20:03 -07:00
vrf_int.h *: reindent 2017-07-17 14:04:07 +02:00
vrf.c *: reindent 2017-07-17 14:04:07 +02:00
vrf.h *: reindent 2017-07-17 14:04:07 +02:00
vty.c Merge pull request #892 from opensourcerouting/watchfrr-simplify 2017-08-09 14:32:44 -04:00
vty.h Merge pull request #892 from opensourcerouting/watchfrr-simplify 2017-08-09 14:32:44 -04:00
vxlan.h lib: VxLAN Network Identifier definition 2017-05-25 10:20:03 -07:00
wheel.c *: reindent 2017-07-17 14:04:07 +02:00
wheel.h *: reindent 2017-07-17 14:04:07 +02:00
workqueue.c *: reindent 2017-07-17 14:04:07 +02:00
workqueue.h *: reindent 2017-07-17 14:04:07 +02:00
zassert.h Revert "*: reindent pt. 2" 2017-07-22 14:52:33 +02:00
zclient.c Merge remote-tracking branch 'frr/master' into tcp-zebra 2017-08-09 20:42:27 +02:00
zclient.h Merge branch 'frr/pull/822' ("EVPN fixes") 2017-08-09 21:34:10 +02:00
zebra.h Merge pull request #891 from Jafaral/portability 2017-08-04 08:52:07 +02:00