]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: When nexthop lookup fails, back out gracefully
authorDonald Sharp <sharpd@cumulusnetworks.com>
Tue, 1 Nov 2016 03:17:53 +0000 (23:17 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 22 Dec 2016 01:26:13 +0000 (20:26 -0500)
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>
pimd/pim_register.c

index eab87fefb0388489b99a4d7d762baf48b2361820..0c6a759dc312659bf26de830d14ec8a6846fd605 100644 (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;