From: Stephen Worley Date: Mon, 21 Jun 2021 16:53:25 +0000 (-0400) Subject: zebra: fix ifp pointer for groups/recursives X-Git-Tag: frr-8.0.1~70^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=e09a6ad65676f398a6ead3c7333ca49ef3f511e0;p=matthieu%2Ffrr.git zebra: fix ifp pointer for groups/recursives At some point we broke the ifp pointer for nhe->ifp such that it was pointing to an interface even in groups/recurisve instances. Add checks here to make it again so that we only set the ifp pointer if it is a fully resolved singleton NHE. Signed-off-by: Stephen Worley (cherry picked from commit bf157b9263050b25228e66164c1540bf823b960a) --- diff --git a/zebra/zebra_nhg.c b/zebra/zebra_nhg.c index 6b40eae5b7..f45fade6b4 100644 --- a/zebra/zebra_nhg.c +++ b/zebra/zebra_nhg.c @@ -453,8 +453,13 @@ static void *zebra_nhg_hash_alloc(void *arg) /* Mark duplicate nexthops in a group at creation time. */ nexthop_group_mark_duplicates(&(nhe->nhg)); - /* Add the ifp now if it's not a group or recursive and has ifindex */ - if (nhe->nhg.nexthop && nhe->nhg.nexthop->ifindex) { + /* + * Add the ifp now if it's not a group or recursive and has ifindex. + * + * A proto-owned ID is always a group. + */ + if (!PROTO_OWNED(nhe) && nhe->nhg.nexthop && !nhe->nhg.nexthop->next + && !nhe->nhg.nexthop->resolved && nhe->nhg.nexthop->ifindex) { struct interface *ifp = NULL; ifp = if_lookup_by_index(nhe->nhg.nexthop->ifindex,