pimd: When nexthop lookup fails, back out gracefully

When the nexthop lookup fails when establishing the
upstream state as part of a register receive, kill
the upstream state.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
Donald Sharp 2016-10-31 23:17:53 -04:00
parent 9244dd13db
commit e5009aed2f

View File

@ -347,8 +347,16 @@ pim_register_recv (struct interface *ifp,
upstream->upstream_register = src_addr;
pim_rp_set_upstream_addr (&upstream->upstream_addr, sg.src, sg.grp);
pim_nexthop_lookup (&upstream->rpf.source_nexthop,
upstream->upstream_addr, 1);
if (pim_nexthop_lookup (&upstream->rpf.source_nexthop,
upstream->upstream_addr, 1) != 0)
{
if (PIM_DEBUG_PIM_REG)
{
zlog_debug ("Received Register(%s), for which I have no path back", pim_str_sg_dump (&upstream->sg));
}
pim_upstream_del (upstream, __PRETTY_FUNCTION__);
return 1;
}
upstream->sg.src = sg.src;
upstream->rpf.rpf_addr = upstream->rpf.source_nexthop.mrib_nexthop_addr;