pimd: Fix join received when in Prune or Prune Pending

When we are a FHR, and the upstream state is in Prune or Prune Pending
allow the join because we know we want to forward traffic to the RP.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
Donald Sharp 2016-08-19 09:07:19 -04:00
parent c980295412
commit 04329d4e49
3 changed files with 8 additions and 4 deletions

View File

@ -169,6 +169,13 @@ void pim_ifchannel_ifjoin_switch(const char *caller,
{
enum pim_ifjoin_state old_state = ch->ifjoin_state;
if (PIM_DEBUG_PIM_EVENTS)
zlog_debug ("PIM_IFCHANNEL: %s is switching from %s to %s",
pim_str_sg_dump (&ch->sg),
pim_ifchannel_ifjoin_name (ch->ifjoin_state),
pim_ifchannel_ifjoin_name (new_state));
if (old_state == new_state) {
if (PIM_DEBUG_PIM_EVENTS) {
zlog_debug("%s calledby %s: non-transition on state %d (%s)",
@ -178,8 +185,6 @@ void pim_ifchannel_ifjoin_switch(const char *caller,
return;
}
zassert(old_state != new_state);
ch->ifjoin_state = new_state;
/* Transition to/from NOINFO ? */

View File

@ -337,7 +337,7 @@ static int pim_macro_chisin_inherited_olist(const struct pim_ifchannel *ch)
*/
int pim_macro_chisin_oiflist(const struct pim_ifchannel *ch)
{
if (ch->upstream->join_state != PIM_UPSTREAM_JOINED) {
if (ch->upstream->join_state == PIM_UPSTREAM_NOTJOINED) {
/* oiflist is NULL */
return 0; /* false */
}

View File

@ -1029,7 +1029,6 @@ pim_upstream_inherited_olist (struct pim_upstream *up)
int output_intf = 0;
pim_ifp = up->rpf.source_nexthop.interface->info;
zlog_debug ("Channel Oil%s: %p", pim_str_sg_dump (&up->sg), up->channel_oil);
if (!up->channel_oil)
up->channel_oil = pim_channel_oil_add (&up->sg, pim_ifp->mroute_vif_index);