From 905d48fa7e0a17be2de0eb08f09abb96fc818360 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Thu, 22 Sep 2016 13:25:48 -0400 Subject: [PATCH] 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 --- pimd/pim_join.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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) -- 2.39.5