From: Donald Sharp Date: Tue, 4 Oct 2016 11:56:09 +0000 (-0400) Subject: pimd: Fix LHR both a receiver and a sender X-Git-Tag: frr-3.0-branchpoint~64^2~10^2~183 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=5b668dd747b49b51008ac5814c31ffe33a39b863;p=mirror%2Ffrr.git pimd: Fix LHR both a receiver and a sender Signed-off-by: Donald Sharp --- diff --git a/pimd/pim_ifchannel.c b/pimd/pim_ifchannel.c index ee388b7d68..165ea1fe32 100644 --- a/pimd/pim_ifchannel.c +++ b/pimd/pim_ifchannel.c @@ -653,6 +653,7 @@ void pim_ifchannel_join_add(struct interface *ifp, case PIM_IFJOIN_NOINFO: pim_ifchannel_ifjoin_switch(__PRETTY_FUNCTION__, ch, PIM_IFJOIN_JOIN); if (pim_macro_chisin_oiflist(ch)) { + pim_upstream_inherited_olist (ch->upstream); pim_forward_start(ch); } break; diff --git a/pimd/pim_mroute.c b/pimd/pim_mroute.c index 9ef29b6e42..32d99ab1fe 100644 --- a/pimd/pim_mroute.c +++ b/pimd/pim_mroute.c @@ -349,12 +349,19 @@ pim_mroute_msg_wrvifwhole (int fd, struct interface *ifp, const char *buf) pim_register_stop_send(source.interface, &sg, pim_ifp->primary_address, up->upstream_register); if (!up->channel_oil) up->channel_oil = pim_channel_oil_add (&sg, pim_ifp->mroute_vif_index); + pim_upstream_inherited_olist (up); if (!up->channel_oil->installed) pim_mroute_add (up->channel_oil); //Send S bit down the join. up->sptbit = PIM_UPSTREAM_SPTBIT_TRUE; } - return 0; + else + { + pim_upstream_keep_alive_timer_start (up, qpim_keep_alive_time); + pim_upstream_inherited_olist (up); + pim_mroute_msg_wholepkt (fd, ifp, buf); + } + return 0; } pim_ifp = ifp->info;