pimd: handle RPF resolution while in joined state

If an dummy upstream entry (no RPF nbr) which is already in a JOINED
state is resolved we were not triggering an immediate join via the
per-interface upstream switch list.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
This commit is contained in:
Anuradha Karuppiah 2019-11-15 11:41:49 -08:00
parent 7ef66af956
commit db431af290
2 changed files with 10 additions and 1 deletions

View File

@ -117,10 +117,16 @@ void pim_jp_agg_clear_group(struct list *group)
static struct pim_iface_upstream_switch *
pim_jp_agg_get_interface_upstream_switch_list(struct pim_rpf *rpf)
{
struct pim_interface *pim_ifp = rpf->source_nexthop.interface->info;
struct interface *ifp = rpf->source_nexthop.interface;
struct pim_interface *pim_ifp;
struct pim_iface_upstream_switch *pius;
struct listnode *node, *nnode;
if (!ifp)
return NULL;
pim_ifp = ifp->info;
/* Old interface is pim disabled */
if (!pim_ifp)
return NULL;

View File

@ -324,6 +324,9 @@ void pim_zebra_upstream_rpf_changed(struct pim_instance *pim,
up->channel_oil->oil_inherited_rescan = 0;
}
if (up->join_state == PIM_UPSTREAM_JOINED)
pim_jp_agg_switch_interface(old, &up->rpf, up);
if (!up->channel_oil->installed)
pim_upstream_mroute_add(up->channel_oil,
__PRETTY_FUNCTION__);