From: Donald Sharp Date: Fri, 14 Jun 2019 00:03:08 +0000 (-0400) Subject: pimd: Ensure channel_oil_add is created through all paths X-Git-Tag: base_7.2~177^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=9e132a491a82c5d4d23e080ffb4c124ac3c6f6dc;p=matthieu%2Ffrr.git pimd: Ensure channel_oil_add is created through all paths If we create a channel_oil ensure that all paths that we can go down will create one. Future commits can remove the (up->channel_oil) tests. Signed-off-by: Donald Sharp --- diff --git a/pimd/pim_mroute.c b/pimd/pim_mroute.c index d0cd27008e..b1c55c1f43 100644 --- a/pimd/pim_mroute.c +++ b/pimd/pim_mroute.c @@ -201,6 +201,10 @@ static int pim_mroute_msg_nocache(int fd, struct interface *ifp, * Let's blackhole those packets for the moment * As that they will be coming up to the cpu * and causing us to consider them. + * + * This *will* create a dangling channel_oil + * that I see no way to get rid of. Just noting + * this for future reference. */ c_oil = pim_channel_oil_add(pim_ifp->pim, &sg, pim_ifp->mroute_vif_index, diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c index 2e6c5c7803..194fb2cffd 100644 --- a/pimd/pim_upstream.c +++ b/pimd/pim_upstream.c @@ -770,6 +770,18 @@ static struct pim_upstream *pim_upstream_new(struct pim_instance *pim, up->channel_oil = pim_channel_oil_add( pim, &up->sg, pim_ifp->mroute_vif_index, __PRETTY_FUNCTION__); + else { + /* + * Yeah this should not happen + * but let's be sure that we are not + * doing something stupid, all paths + * through upstream creation will + * create a channel oil + */ + up->channel_oil = pim_channel_oil_add( + pim, &up->sg, MAXVIFS, + __PRETTY_FUNCTION__); + } } }