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