Date: Mon, 12 Oct 2020 13:01:19 -0400 From: Dheeraj Kandula <dkandula@gmail.com> To: freebsd-net@freebsd.org Subject: ims_merge in in_mcast.c and in6_mcast.c Message-ID: <CA%2BqNgxT8jWPJoGWJpu-JDfGUguwENH4O7od3BhQQLR0TsEe02g@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
974 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l974> /* 975 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l975> * Merge socket-layer source into IGMP-layer source. 976 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l976> * If rollback is non-zero, perform the inverse of the merge. 977 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l977> */ 978 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l978> static void 979 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l979> ims_merge(struct ip_msource *ims, const struct in_msource *lims, 980 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l980> const int rollback) 981 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l981> { 982 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l982> int n = rollback ? -1 : 1; 983 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l983> 984 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l984> if (lims->imsl_st[0] == MCAST_EXCLUDE) { 985 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l985> CTR3(KTR_IGMPV3, "%s: t1 ex -= %d on 0x%08x", 986 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l986> __func__, n, ims->ims_haddr); 987 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l987> ims->ims_st[1].ex -= n; 988 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l988> } else if (lims->imsl_st[0] == MCAST_INCLUDE) { 989 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l989> CTR3(KTR_IGMPV3, "%s: t1 in -= %d on 0x%08x", 990 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l990> __func__, n, ims->ims_haddr); 991 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l991> ims->ims_st[1].in -= n; 992 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l992> } 993 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l993> 994 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l994> if (lims->imsl_st[1] == MCAST_EXCLUDE) { 995 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l995> CTR3(KTR_IGMPV3, "%s: t1 ex += %d on 0x%08x", 996 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l996> __func__, n, ims->ims_haddr); 997 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l997> ims->ims_st[1].ex += n; 998 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l998> } else if (lims->imsl_st[1] == MCAST_INCLUDE) { 999 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l999> CTR3(KTR_IGMPV3, "%s: t1 in += %d on 0x%08x", 1000 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l1000> __func__, n, ims->ims_haddr); 1001 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l1001> ims->ims_st[1].in += n; 1002 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l1002> } 1003 <https://svnweb.freebsd.org/base/head/sys/netinet/in_mcast.c?revision=365071&view=markup#l1003> } On line 987 and 991 shouldn't the index be 0 instead of 1. i.e. ims->ims_st[0].ex -= n; and ims->ims_st[0].in -= n; On a rollback, the entry at index 0 is incremented and the entry at index 1 is decremented. On a non-rollback merge, the entry at index 0 is decremented and the entry at index 1 is incremented. Dheeraj
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CA%2BqNgxT8jWPJoGWJpu-JDfGUguwENH4O7od3BhQQLR0TsEe02g>