zebra: be more careful removing 'installed' flag from nhgs

When interface addresses change, we examine nhgs associated
with the interface in case they need to be reinstalled. As
part of that, we may need to reinstall ecmp nhgs that use the
interface being examined - but not always.

Signed-off-by: Mark Stapp <mjs@labn.net>
This commit is contained in:
Mark Stapp 2023-09-29 12:08:17 -04:00
parent 1c829fac8e
commit 0da89ac985

View File

@ -3748,8 +3748,13 @@ void zebra_interface_nhg_reinstall(struct interface *ifp)
rb_node_dep->nhe->flags);
zebra_nhg_install_kernel(rb_node_dep->nhe);
/* mark depedent uninstall, when interface associated
* singleton is installed, install depedent
/* Don't need to modify dependents if installed */
if (CHECK_FLAG(rb_node_dep->nhe->flags,
NEXTHOP_GROUP_INSTALLED))
continue;
/* mark dependent uninstalled; when interface associated
* singleton is installed, install dependent
*/
frr_each_safe (nhg_connected_tree,
&rb_node_dep->nhe->nhg_dependents,