]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: Fix LHR both a receiver and a sender
authorDonald Sharp <sharpd@cumulusnetworks.com>
Tue, 4 Oct 2016 11:56:09 +0000 (07:56 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 22 Dec 2016 01:26:11 +0000 (20:26 -0500)
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_ifchannel.c
pimd/pim_mroute.c

index ee388b7d68c05ed482c1f0c4ac50748e87872abc..165ea1fe3288cd8e020593274c1099f8721aba64 100644 (file)
@@ -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;
index 9ef29b6e42a6f76e6d7fabb556db5e0469fd08d8..32d99ab1fea68daea9ccef670e437316e39a598c 100644 (file)
@@ -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;