]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: Stop join/prunes from crashing
authorDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 22 Sep 2016 17:25:48 +0000 (13:25 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 22 Dec 2016 01:26:10 +0000 (20:26 -0500)
When we receive a join/prune for a upstream
that we are unable to create, safely ignore
the request until the situation resolves itself.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_join.c

index 7bec6c7eca1d594d6dd24744743694f64f00eae2..3de438917492aec34f602e01ab47b418cf40d724 100644 (file)
@@ -108,6 +108,15 @@ static void recv_join(struct interface *ifp,
       struct pim_upstream *child;
       struct listnode *up_node;
 
+      /*
+       * If we are unable to create upstream information
+       * Due to any number of reasons it is possible
+       * That we might have not created the ifchannel
+       * and upstream above.  So just fall out gracefully
+       */
+      if (!up)
+       return;
+
       for (ALL_LIST_ELEMENTS_RO (qpim_upstream_list, up_node, child))
         {
           if (child->parent == up)
@@ -178,6 +187,13 @@ static void recv_prune(struct interface *ifp,
       struct pim_upstream *child;
       struct listnode *up_node;
 
+      /*
+       * If up is not found then there is nothing
+       * to do here (see recv_join above)
+       */
+      if (!up)
+       return;
+
       for (ALL_LIST_ELEMENTS_RO (qpim_upstream_list, up_node, child))
         {
           if (child->parent == up)