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

Reply via email to