zebra: short-circuit rib_process when nothing to do

When we are calling rib_process and the route_node
in question has no dest, there is no work to do here
at all.  As such we should just return before
attempting to do any other work.  This is just a tiny bit
of simplification being done.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
This commit is contained in:
Donald Sharp 2021-08-05 10:10:37 -04:00
parent 6696b16bf0
commit f0afc61d58

View File

@ -1149,10 +1149,15 @@ static void rib_process(struct route_node *rn)
assert(rn); assert(rn);
dest = rib_dest_from_rnode(rn); dest = rib_dest_from_rnode(rn);
if (dest) { /*
zvrf = rib_dest_vrf(dest); * We have an enqueued node with nothing to process here
vrf_id = zvrf_id(zvrf); * let's just finish up and return;
} */
if (!dest)
return;
zvrf = rib_dest_vrf(dest);
vrf_id = zvrf_id(zvrf);
vrf = vrf_lookup_by_id(vrf_id); vrf = vrf_lookup_by_id(vrf_id);
@ -1165,18 +1170,16 @@ static void rib_process(struct route_node *rn)
* additionally we know RNODE_FOREACH_RE_SAFE * additionally we know RNODE_FOREACH_RE_SAFE
* will not iterate so we are ok. * will not iterate so we are ok.
*/ */
if (dest) { if (IS_ZEBRA_DEBUG_RIB_DETAILED) {
if (IS_ZEBRA_DEBUG_RIB_DETAILED) { struct route_entry *re = re_list_first(&dest->routes);
struct route_entry *re = re_list_first(&dest->routes);
zlog_debug("%s(%u:%u):%s: Processing rn %p", zlog_debug("%s(%u:%u):%s: Processing rn %p",
VRF_LOGNAME(vrf), vrf_id, re->table, buf, VRF_LOGNAME(vrf), vrf_id, re->table, buf,
rn); rn);
}
old_fib = dest->selected_fib;
} }
old_fib = dest->selected_fib;
RNODE_FOREACH_RE_SAFE (rn, re, next) { RNODE_FOREACH_RE_SAFE (rn, re, next) {
if (IS_ZEBRA_DEBUG_RIB_DETAILED) { if (IS_ZEBRA_DEBUG_RIB_DETAILED) {
char flags_buf[128]; char flags_buf[128];