diff options
Diffstat (limited to 'pimd/pim_join.c')
| -rw-r--r-- | pimd/pim_join.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/pimd/pim_join.c b/pimd/pim_join.c index c0cb1de8c0..ae7fedc62b 100644 --- a/pimd/pim_join.c +++ b/pimd/pim_join.c @@ -290,7 +290,7 @@ int pim_joinprune_recv(struct interface *ifp, { ch = pim_ifchannel_find (ifp, &sg); if (ch) - pim_ifchannel_set_star_g_join_state (ch, 0); + pim_ifchannel_set_star_g_join_state (ch, 0, msg_source_flags, 1); } } @@ -311,7 +311,7 @@ int pim_joinprune_recv(struct interface *ifp, msg_source_flags); } if (ch) - pim_ifchannel_set_star_g_join_state (ch, 1); + pim_ifchannel_set_star_g_join_state (ch, 1, msg_source_flags, 0); ch = NULL; } /* scan groups */ @@ -388,7 +388,7 @@ int pim_joinprune_send(struct pim_rpf *rpf, struct list *groups) { struct pim_jp_agg_group *group; - struct pim_interface *pim_ifp; + struct pim_interface *pim_ifp = NULL; struct pim_jp_groups *grp = NULL; struct pim_jp *msg; struct listnode *node, *nnode; @@ -401,14 +401,21 @@ int pim_joinprune_send(struct pim_rpf *rpf, on_trace (__PRETTY_FUNCTION__, rpf->source_nexthop.interface, rpf->rpf_addr.u.prefix4); - pim_ifp = rpf->source_nexthop.interface->info; + if (rpf->source_nexthop.interface) + pim_ifp = rpf->source_nexthop.interface->info; + else + { + zlog_warn ("%s: RPF interface is not present", __PRETTY_FUNCTION__); + return -1; + } - if (!pim_ifp) { - zlog_warn("%s: multicast not enabled on interface %s", + if (!pim_ifp) + { + zlog_warn ("%s: multicast not enabled on interface %s", __PRETTY_FUNCTION__, rpf->source_nexthop.interface->name); - return -1; - } + return -1; + } if (PIM_INADDR_IS_ANY(rpf->rpf_addr.u.prefix4)) { |
