pimd: Further refinement of switch on a stick

The original modification to allow the RP to receive
packets on the incoming interface when it has
no outgoing interfaces was a bit aggressive and
turned all register events into a join event.

This further divides up the code to do the
right thing in each situation.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
Donald Sharp 2016-08-26 09:40:08 -04:00
parent 284b4301e4
commit 483eef9dd2

View File

@ -1089,7 +1089,16 @@ pim_upstream_inherited_olist (struct pim_upstream *up)
}
}
pim_upstream_switch (up, PIM_UPSTREAM_JOINED);
/*
* If we have output_intf switch state to Join and work like normal
* If we don't have an output_intf that means we are probably a
* switch on a stick so turn on forwarding to just accept the
* incoming packets so we don't bother the other stuff!
*/
if (output_intf)
pim_upstream_switch (up, PIM_UPSTREAM_JOINED);
else
forward_on (up);
return output_intf;
}