diff --git a/pimd/pim_join.c b/pimd/pim_join.c index 94f0a93e6c..9796f580ce 100644 --- a/pimd/pim_join.c +++ b/pimd/pim_join.c @@ -64,9 +64,9 @@ static void recv_join(struct interface *ifp, struct pim_neighbor *neigh, zlog_warn( "%s: join (S,G)=%s rpt=%d wc=%d upstream=%s holdtime=%d from %s on %s", __PRETTY_FUNCTION__, pim_str_sg_dump(sg), - source_flags & PIM_RPT_BIT_MASK, - source_flags & PIM_WILDCARD_BIT_MASK, up_str, holdtime, - neigh_str, ifp->name); + !!(source_flags & PIM_RPT_BIT_MASK), + !!(source_flags & PIM_WILDCARD_BIT_MASK), up_str, + holdtime, neigh_str, ifp->name); } pim_ifp = ifp->info; @@ -86,8 +86,20 @@ static void recv_join(struct interface *ifp, struct pim_neighbor *neigh, * If the RP sent in the message is not * our RP for the group, drop the message */ - if (sg->src.s_addr != rp->rpf_addr.u.prefix4.s_addr) + if (sg->src.s_addr != rp->rpf_addr.u.prefix4.s_addr) { + char received_rp[INET_ADDRSTRLEN]; + char local_rp[INET_ADDRSTRLEN]; + pim_inet4_dump("", sg->src, received_rp, + sizeof(received_rp)); + pim_inet4_dump("", rp->rpf_addr.u.prefix4, + local_rp, sizeof(local_rp)); + if (PIM_DEBUG_PIM_TRACE) + zlog_warn( + "%s: Specified RP(%s) in join is different than our configured RP(%s)", + __PRETTY_FUNCTION__, received_rp, + local_rp); return; + } sg->src.s_addr = INADDR_ANY; }