mirror_frr/lib
Josh Bailey de8d5dff15 bgpd: Adds support to mark up the BGP rib table entry with multipath
information based on the multipath list (mp_list) generated during
the best path calculation. Display "multipath" for paths that are
multipath and also on bestpath if the route is multipath. Flag a
best path with the BGP_INFO_MULTIPATH_CHG if the multipath
set has changed since the last update. This can be used to trigger
updates to zebra and peers.

The multipath markup is a lazily allocated bgp_info_mpath structure
that is added to the best path and any multipaths. The mpath structures
are linked together with the best path element at the head and the
other elements ordered by nexthop and then by peer address. This
markup scheme is updated by calling bgp_info_mpath_update() and passing
in a new mp_list the the current multipath set. There are additional
API's for walking the multipath set, querying the count of multipaths,
and for cleaning up the multipath markup information when freeing path
information.

* bgpd/bgp_mpath.c
  * bgp_info_mpath_new(): Allocation of new mpath element
  * bgp_info_mpath_free(): Release memory for mpath element
  * bgp_info_mpath_get(): Access mpath element of path. Allocate memory
    on-demand
  * bgp_info_mpath_enqueue(): Enqueue a path onto the multipath list
  * bgp_info_mpath_dequeue(): Remove a path from the multipath list
  * bgp_info_mpath_first(): Return first path on the multipath list
  * bgp_info_mpath_next(): Return next path on the multipath list
  * bgp_info_mpath_count(): Return the number of paths on the multipath list
  * bgp_info_mpath_count_set(): Set the number of paths on the multipath list
  * bgp_info_mpath_update(): Update multipath markup on bgp route table entry
    and flag any changes. Emit 'debug bgp event' output on any multipath
    change.
* bgpd/bgp_mpath.h
  * struct bgp_info_mpath: Information added to a bgp_info path to record
    multipath information
  * External declarations for new functions in bgp_mpath.c
* bgpd/bgp_route.c
  * bgp_info_free(): Free mpath memory when freeing path information
  * bgp_info_reap(): Dequeue path from multipath queue before deleting it
  * bgp_best_selection(): Calls bgp_info_mpath_update() with latest
    mp_list to mark-up rib table entry
  * bgp_vty_out_detail(): Add display of multipath flag for a path. Also
    display 'multipath' for bestpath if it is a multipath route
* bgpd/bgp_route.h
  * struct bgp_info: Add pointer to bgp_info_mpath information
  * Add flags to mark a path as multipath (BGP_INFO_MULTIPATH) and
    to mark bestpath if multipath information has changed
    (BGP_INFO_MULTIPATH_CHG)
* lib/memtypes.c
  * Add MTYPE_BGP_MPATH_INFO for allocating memory for bgp_info_mpath
* tests/bgp_mpath_test.c
  * Add test case for bgp_info_mpath_update() and supporting functions
2011-07-20 20:46:01 -07:00
..
.cvsignore [lib] remove autogenerated file, update .cvsignore 2006-07-27 22:52:17 +00:00
.gitignore [administrivia] Git should ignore backup files and .loT files 2008-08-22 20:00:46 +01:00
buffer.c [c99] change gcc zero-length array to C99 flexible array declaration 2005-11-26 09:21:43 +00:00
buffer.h 2005-05-06 Paul Jakma <paul@dishone.st> 2005-05-06 21:25:49 +00:00
checksum.c [lib] Move type cast in Fletcher checksum 2008-11-29 18:04:11 +00:00
checksum.h [lib] Switch Fletcher checksum back to old ospfd version 2008-11-16 18:47:02 +00:00
command.c lib: fix more format warnings (#637) 2011-03-23 13:07:55 +03:00
command.h [bgpd] Stability fixes including bugs 397, 492 2009-07-19 18:28:08 +01:00
daemon.c [warnings] Fix various SOS warnings 2008-08-22 19:52:59 +01:00
distribute.c lib: Better hashing of string values using Bernstein hash 2011-03-21 13:30:54 +00:00
distribute.h 2005-05-06 Paul Jakma <paul@dishone.st> 2005-05-06 21:25:49 +00:00
filter.c [cleanup] Make command nodes static 2009-06-12 17:10:29 +01: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
hash.c lib: Better hashing of string values using Bernstein hash 2011-03-21 13:30:54 +00:00
hash.h lib: Better hashing of string values using Bernstein hash 2011-03-21 13:30:54 +00:00
if_rmap.c lib: Better hashing of string values using Bernstein hash 2011-03-21 13:30:54 +00:00
if_rmap.h 2005-05-06 Paul Jakma <paul@dishone.st> 2005-05-06 21:25:49 +00:00
if.c lib: fix more format warnings (#637) 2011-03-23 13:07:55 +03:00
if.h lib: Add a function to delete all interfaces 2011-03-21 13:30:54 +00: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 2005-05-06 Paul Jakma <paul@dishone.st> 2005-05-06 21:25:49 +00:00
log.c lib: zlog should clean up its memory 2011-03-21 13:30:54 +00:00
log.h [cleanup] Allow message tables to be constant 2009-06-18 20:18:29 +01:00
Makefile.am lib: undo the last PIE commit 2010-01-27 12:38:16 +03:00
md5.c lib: fix warning on little endian 2009-12-09 14:13:27 +03:00
md5.h [lib/md5] md5_loop should take void pointer for more useful caller warnings. 2006-01-17 17:40:45 +00:00
memory.c lib: Fix accounting of memory 2011-03-21 11:09:13 +00:00
memory.h lib: fix memory logging 2010-01-13 20:10:56 +03: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 bgpd: Adds support to mark up the BGP rib table entry with multipath 2011-07-20 20:46:01 -07: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: prefix.c nano-optimisation 2010-12-08 17:05:11 +00:00
prefix.h bgpd, lib: adopt afi_t and safi_t in several places 2010-10-06 12:33:05 -04: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
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.awk [lib] Remove bare routes in route_types: fix mistake in commmit 2006-06-27 10:42:18 +00:00
route_types.txt [lib] Centralise Zserv route type information, auto-generate redist strings 2006-06-27 07:52:03 +00:00
routemap.c [bgpd] Stability fixes including bugs 397, 492 2009-07-19 18:28:08 +01:00
routemap.h [bgpd] Stability fixes including bugs 397, 492 2009-07-19 18:28:08 +01:00
sigevent.c 2005-05-06 Paul Jakma <paul@dishone.st> 2005-05-06 21:25:49 +00:00
sigevent.h 2005-05-06 Paul Jakma <paul@dishone.st> 2005-05-06 21:25:49 +00:00
smux.c [cleanup] Use const in smux interface 2009-06-18 20:18:29 +01:00
smux.h [cleanup] Use const in smux interface 2009-06-18 20:18:29 +01:00
sockopt.c Fixes to RFC2385/MD5 BGP 2009-06-23 14:21:40 +01:00
sockopt.h [lib] mes_lookup string lookup table argument should be marked const 2008-08-22 19:52:58 +01:00
sockunion.c lib: Add support for IPv6 ttl security 2011-03-24 11:18:41 +00:00
sockunion.h bgpd: RFC 5082 Generalized TTL Security Mechanism support 2011-03-23 15:33:17 +00: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] trivial: add const qualifier to stream_put/write 2008-06-07 20:42:07 +00:00
stream.h [lib] trivial: add const qualifier to stream_put/write 2008-06-07 20:42:07 +00:00
table.c lib: Fix bug in prefix trie lookup 2010-12-08 17:06:12 +00:00
table.h lib: make match functions take const args 2009-12-08 12:00:50 +03:00
thread.c lib: Add a command to clear the thread CPU history data 2010-12-08 16:53:09 +00:00
thread.h lib: Add a command to clear the thread CPU history data 2010-12-08 16:53:09 +00: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 Trying to finish previous commit ... 2005-03-26 14:13:40 +00:00
vty.c lib/vty.c: add missing format string when printing out motd message 2010-09-17 13:36:44 -04:00
vty.h [bgpd] Stability fixes including bugs 397, 492 2009-07-19 18:28:08 +01:00
workqueue.c lib: Make workqueue more conservative about ramping up 2010-12-08 16:53:09 +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 zclient: fix router-id calculation for IPv6 (#595) 2010-10-18 19:05:39 +04:00
zclient.h [bgpd] Stability fixes including bugs 397, 492 2009-07-19 18:28:08 +01:00
zebra.h [configure] Refine CLOCK_MONOTONIC test 2009-06-18 20:18:31 +01:00