From e5009aed2ff15d83094debe872fca2c3f10002bb Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Mon, 31 Oct 2016 23:17:53 -0400 Subject: [PATCH] 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 --- pimd/pim_register.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/pimd/pim_register.c b/pimd/pim_register.c index eab87fefb0..0c6a759dc3 100644 --- a/pimd/pim_register.c +++ b/pimd/pim_register.c @@ -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; -- 2.39.5