Based on RFC3376 5.1 and RFC3810 6.1, we should init as INCLUDE when join SSM INCLUDE group. In my first version I only clear the group change record. But this is not enough as when a new group join, it will init as EXCLUDE and trigger an filter mode change in ip/ip6_mc_add_src(), which will clear all source addresses' sf_crcount. This will prevent early joined address sending state change records if multi source addresses joined at the same time.
In this v2 patchset, I fixed it by directly initializing the mode to INCLUDE for SSM JOIN_SOURCE_GROUP. I also split the original patch into two separated patches for IPv4 and IPv6. Test: test by myself and customer. Hangbin Liu (2): ipv4/igmp: init group mode as INCLUDE when join source group ipv6/mcast: init as INCLUDE when join SSM INCLUDE group include/linux/igmp.h | 2 ++ include/net/ipv6.h | 2 ++ net/ipv4/igmp.c | 58 +++++++++++++++++++++++++++++++------------ net/ipv4/ip_sockglue.c | 4 +-- net/ipv6/ipv6_sockglue.c | 5 ++-- net/ipv6/mcast.c | 64 ++++++++++++++++++++++++++++++++++-------------- 6 files changed, 96 insertions(+), 39 deletions(-) -- 2.5.5