c_oil->installed = 0;
c_oil->up = pim_upstream_find(pim, sg);
c_oil->pim = pim;
- if (input_vif_index != MAXVIFS)
- c_oil->is_valid = 1;
- else
- c_oil->is_valid = 0;
listnode_add_sort(pim->channel_oil_list, c_oil);
channel_oil->oil.mfcc_ttls[pim_ifp->mroute_vif_index] =
PIM_MROUTE_MIN_TTL;
- /* channel_oil->is_valid indicate if this entry is valid to get
- * installed in kernel.
+ /* channel_oil->oil.mfcc_parent != MAXVIFS indicate this entry is not
+ * valid to get installed in kernel.
*/
- if (channel_oil->is_valid) {
+ if (channel_oil->oil.mfcc_parent != MAXVIFS) {
if (pim_mroute_add(channel_oil, __PRETTY_FUNCTION__)) {
if (PIM_DEBUG_MROUTE) {
char group_str[INET_ADDRSTRLEN];
static void join_timer_stop(struct pim_upstream *up)
{
- struct pim_neighbor *nbr;
-
- if (!up->rpf.source_nexthop.interface) {
- if (PIM_DEBUG_TRACE)
- zlog_debug("%s: up %s RPF is not present",
- __PRETTY_FUNCTION__, up->sg_str);
- return;
- }
+ struct pim_neighbor *nbr = NULL;
THREAD_OFF(up->t_join_timer);
- nbr = pim_neighbor_find(up->rpf.source_nexthop.interface,
- up->rpf.rpf_addr.u.prefix4);
+ if (up->rpf.source_nexthop.interface)
+ nbr = pim_neighbor_find(up->rpf.source_nexthop.interface,
+ up->rpf.rpf_addr.u.prefix4);
if (nbr)
pim_jp_agg_remove_group(nbr->upstream_jp_agg, up);
{
struct pim_neighbor *nbr = NULL;
- if (!up->rpf.source_nexthop.interface) {
- if (PIM_DEBUG_TRACE)
- zlog_debug("%s: up %s RPF is not present",
- __PRETTY_FUNCTION__, up->sg_str);
- return;
- }
-
if (up->rpf.source_nexthop.interface) {
nbr = pim_neighbor_find(up->rpf.source_nexthop.interface,
up->rpf.rpf_addr.u.prefix4);
enum pim_upstream_state old_state = up->join_state;
if (up->upstream_addr.s_addr == INADDR_ANY) {
- zlog_debug("%s: RPF not configured for %s",
- __PRETTY_FUNCTION__, up->sg_str);
+ if (PIM_DEBUG_PIM_EVENTS)
+ zlog_debug("%s: RPF not configured for %s",
+ __PRETTY_FUNCTION__, up->sg_str);
return;
}
if (!up->rpf.source_nexthop.interface) {
- zlog_debug("%s: RP not reachable for %s",
- __PRETTY_FUNCTION__, up->sg_str);
+ if (PIM_DEBUG_PIM_EVENTS)
+ zlog_debug("%s: RP not reachable for %s",
+ __PRETTY_FUNCTION__, up->sg_str);
return;
}
PIM_UPSTREAM_FLAG_UNSET_DR_JOIN_DESIRED(up->flags);
/* switched from false to true */
- if (is_join_desired) {
+ if (is_join_desired && (up->join_state == PIM_UPSTREAM_NOTJOINED)) {
pim_upstream_switch(pim, up, PIM_UPSTREAM_JOINED);
return;
}