--- a/src/igmp.c +++ b/src/igmp.c @@ -139,8 +139,14 @@ return; } else if(!isAdressValidForIf(checkVIF, src)) { - my_log(LOG_WARNING, 0, "The source address %s for group %s, is not in any valid net for upstream VIF.", - inetFmt(src, s1), inetFmt(dst, s2)); + struct IfDesc *downVIF = getIfByAddress(src); + if (downVIF && downVIF->state & IF_STATE_DOWNSTREAM) { + my_log(LOG_NOTICE, 0, "The source address %s for group %s is from downstream VIF. Ignoring.", + inetFmt(src, s1), inetFmt(dst, s2)); + } else { + my_log(LOG_WARNING, 0, "The source address %s for group %s, is not in any valid net for upstream VIF.", + inetFmt(src, s1), inetFmt(dst, s2)); + } return; }