From: Donald Sharp Date: Thu, 22 Sep 2016 17:25:48 +0000 (-0400) Subject: pimd: Stop join/prunes from crashing X-Git-Tag: frr-3.0-branchpoint~64^2~10^2~206 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=905d48fa7e0a17be2de0eb08f09abb96fc818360;p=mirror%2Ffrr.git pimd: Stop join/prunes from crashing 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 --- diff --git a/pimd/pim_join.c b/pimd/pim_join.c index 7bec6c7eca..3de4389174 100644 --- a/pimd/pim_join.c +++ b/pimd/pim_join.c @@ -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)