diff options
Diffstat (limited to 'pimd/pim_ifchannel.c')
| -rw-r--r-- | pimd/pim_ifchannel.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/pimd/pim_ifchannel.c b/pimd/pim_ifchannel.c index 1bf3a619bf..3f985e64b4 100644 --- a/pimd/pim_ifchannel.c +++ b/pimd/pim_ifchannel.c @@ -1232,6 +1232,16 @@ int pim_ifchannel_local_membership_add(struct interface *ifp, __FILE__, __func__, child->sg_str, ifp->name, up->sg_str); + if (!child->rpf.source_nexthop.interface) { + /* when iif unknown, do not inherit */ + if (PIM_DEBUG_EVENTS) + zlog_debug( + "Skipped (S,G)=%s(%s) from %s: no iif", + child->sg_str, ifp->name, + up->sg_str); + continue; + } + ch = pim_ifchannel_find(ifp, &child->sg); if (pim_upstream_evaluate_join_desired_interface( child, ch, starch)) { @@ -1248,7 +1258,7 @@ int pim_ifchannel_local_membership_add(struct interface *ifp, AFI_IP, pim->spt.plist); struct prefix g; g.family = AF_INET; - g.prefixlen = IPV4_MAX_PREFIXLEN; + g.prefixlen = IPV4_MAX_BITLEN; g.u.prefix4 = up->sg.grp; if (prefix_list_apply(plist, &g) |
