summaryrefslogtreecommitdiff
path: root/pimd/pim_join.c
diff options
context:
space:
mode:
Diffstat (limited to 'pimd/pim_join.c')
-rw-r--r--pimd/pim_join.c23
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))
{