]> git.proxmox.com Git - mirror_frr.git/commit - zebra/zebra_rib.c
Zebra: Schedule RIB processing based on trigger event
authorvivek <vivek@cumulusnetworks.com>
Wed, 9 Dec 2015 00:55:43 +0000 (16:55 -0800)
committervivek <vivek@cumulusnetworks.com>
Wed, 9 Dec 2015 00:55:43 +0000 (16:55 -0800)
commit1c8481370f49d491d5afe84af9bf8613b257afb2
tree3bcfc51af897b3048b57639b0c43a14af12b5a12
parent2bf26d4184cd6b6fdea42629725cd2005f8bef47
Zebra: Schedule RIB processing based on trigger event

Currently, when RIB processing is initiated (i.e., by calling rib_update()),
all routes are queued for processing. This is not desirable in all situations
because, sometimes the protocol may have an alternate path. In addition,
with NHT tracking nexthops, there are situations when NHT should be kicked
off first and that can trigger subsequent RIB processing.

This patch addresses this by introducing the notion of a trigger event. This
is only for the situation when the entire RIB is walked. The current triggers
- based on when rib_update() is invoked - are "interface change" and "route-
map change". In the former case, only the relevant routes are walked and
scheduled, in the latter case, currently all routes are scheduled for
processing.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Ticket: CM-7662
Reviewed By: CCR-3905

Note: The initial defect in this area was CM-7420. This was addressed in
2.5.4 with an interim change that only walked static routes upon interface
down. The change was considered a bit risky to do for interface up etc. Also,
this did not address scenarios like CM-7662. The current fix addresses CM-7662.
zebra/connected.c
zebra/interface.c
zebra/rib.h
zebra/zebra_rib.c
zebra/zebra_routemap.c