summaryrefslogtreecommitdiff
path: root/pimd/pim_mroute.c
diff options
context:
space:
mode:
Diffstat (limited to 'pimd/pim_mroute.c')
-rw-r--r--pimd/pim_mroute.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/pimd/pim_mroute.c b/pimd/pim_mroute.c
index 1df4c033bc..ce2f98f318 100644
--- a/pimd/pim_mroute.c
+++ b/pimd/pim_mroute.c
@@ -178,6 +178,15 @@ pim_mroute_msg_nocache (int fd, struct interface *ifp, const struct igmpmsg *msg
up->channel_oil->cc.pktcnt++;
PIM_UPSTREAM_FLAG_SET_FHR(up->flags);
+ // resolve mfcc_parent prior to mroute_add in channel_add_oif
+ if (up->channel_oil->oil.mfcc_parent >= MAXVIFS)
+ {
+ int vif_index = 0;
+ vif_index =
+ pim_if_find_vifindex_by_ifindex (up->rpf.source_nexthop.
+ interface->ifindex);
+ up->channel_oil->oil.mfcc_parent = vif_index;
+ }
pim_register_join (up);
return 0;
@@ -882,9 +891,8 @@ int pim_mroute_del (struct channel_oil *c_oil, const char *name)
pim_channel_oil_dump (c_oil, buf, sizeof(buf)));
}
- /*reset incoming vifi and kernel installed flags*/
+ //Reset kernel installed flag
c_oil->installed = 0;
- c_oil->oil.mfcc_parent = MAXVIFS;
return 0;
}