From: Donald Sharp Date: Thu, 5 Aug 2021 14:10:37 +0000 (-0400) Subject: zebra: short-circuit rib_process when nothing to do X-Git-Tag: base_8.1~208^2~4 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=f0afc61d58032e1c949728bad776e2046a154c8a;p=mirror%2Ffrr.git 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 --- diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c index c51dd759a6..152edf00d0 100644 --- a/zebra/zebra_rib.c +++ b/zebra/zebra_rib.c @@ -1149,10 +1149,15 @@ static void rib_process(struct route_node *rn) assert(rn); dest = rib_dest_from_rnode(rn); - if (dest) { - zvrf = rib_dest_vrf(dest); - vrf_id = zvrf_id(zvrf); - } + /* + * We have an enqueued node with nothing to process here + * 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); @@ -1165,18 +1170,16 @@ static void rib_process(struct route_node *rn) * additionally we know RNODE_FOREACH_RE_SAFE * will not iterate so we are ok. */ - if (dest) { - if (IS_ZEBRA_DEBUG_RIB_DETAILED) { - struct route_entry *re = re_list_first(&dest->routes); - - zlog_debug("%s(%u:%u):%s: Processing rn %p", - VRF_LOGNAME(vrf), vrf_id, re->table, buf, - rn); - } + if (IS_ZEBRA_DEBUG_RIB_DETAILED) { + struct route_entry *re = re_list_first(&dest->routes); - old_fib = dest->selected_fib; + zlog_debug("%s(%u:%u):%s: Processing rn %p", + VRF_LOGNAME(vrf), vrf_id, re->table, buf, + rn); } + old_fib = dest->selected_fib; + RNODE_FOREACH_RE_SAFE (rn, re, next) { if (IS_ZEBRA_DEBUG_RIB_DETAILED) { char flags_buf[128];