6307469 Assertion failure in IGMPv3: rtxp->rtx_cnt > 0, file: ../../common/inet/ip/igmp.c line: 1347
authorErik Nordmark <Erik.Nordmark@Sun.COM>
Mon, 27 Apr 2009 16:44:44 -0700
changeset 9472 d7c565c06355
parent 9471 a5e77f9df676
child 9473 e27b6e39a733
6307469 Assertion failure in IGMPv3: rtxp->rtx_cnt > 0, file: ../../common/inet/ip/igmp.c line: 1347
usr/src/uts/common/inet/ip/igmp.c
--- a/usr/src/uts/common/inet/ip/igmp.c	Mon Apr 27 16:05:57 2009 -0700
+++ b/usr/src/uts/common/inet/ip/igmp.c	Mon Apr 27 16:44:44 2009 -0700
@@ -814,6 +814,7 @@
 		}
 
 		/* Set the ilm timer value */
+		ilm->ilm_rtx.rtx_cnt = ill->ill_mcast_rv;
 		MCAST_RANDOM_DELAY(ilm->ilm_rtx.rtx_timer,
 		    SEC_TO_MSEC(IGMP_MAX_HOST_REPORT_DELAY));
 		timer = ilm->ilm_rtx.rtx_timer;
@@ -901,6 +902,8 @@
 		/* Set the ilm timer value */
 		ASSERT(ill->ill_mcast_type != MLD_V2_ROUTER ||
 		    ilm->ilm_rtx.rtx_cnt > 0);
+
+		ilm->ilm_rtx.rtx_cnt = ill->ill_mcast_rv;
 		MCAST_RANDOM_DELAY(ilm->ilm_rtx.rtx_timer,
 		    SEC_TO_MSEC(ICMP6_MAX_HOST_REPORT_DELAY));
 		timer = ilm->ilm_rtx.rtx_timer;
@@ -1091,6 +1094,7 @@
 	 */
 	rp = mcast_merge_rtx(ilm, rp, flist);
 	if (ilm->ilm_rtx.rtx_timer == INFINITY) {
+		ilm->ilm_rtx.rtx_cnt = ill->ill_mcast_rv;
 		MCAST_RANDOM_DELAY(ilm->ilm_rtx.rtx_timer,
 		    SEC_TO_MSEC(IGMP_MAX_HOST_REPORT_DELAY));
 		mutex_enter(&ipst->ips_igmp_timer_lock);
@@ -1181,6 +1185,7 @@
 	rp = mcast_merge_rtx(ilm, rp, flist);
 	ASSERT(ilm->ilm_rtx.rtx_cnt > 0);
 	if (ilm->ilm_rtx.rtx_timer == INFINITY) {
+		ilm->ilm_rtx.rtx_cnt = ill->ill_mcast_rv;
 		MCAST_RANDOM_DELAY(ilm->ilm_rtx.rtx_timer,
 		    SEC_TO_MSEC(ICMP6_MAX_HOST_REPORT_DELAY));
 		mutex_enter(&ipst->ips_mld_timer_lock);
@@ -1384,6 +1389,7 @@
 				next = rtxp->rtx_timer;
 			rtxp->rtx_timer += current;
 		} else {
+			ASSERT(rtxp->rtx_timer == INFINITY);
 			CLEAR_SLIST(rtxp->rtx_allow);
 			CLEAR_SLIST(rtxp->rtx_block);
 		}
@@ -1638,6 +1644,7 @@
 				next = rtxp->rtx_timer;
 			rtxp->rtx_timer += current;
 		} else {
+			ASSERT(rtxp->rtx_timer == INFINITY);
 			CLEAR_SLIST(rtxp->rtx_allow);
 			CLEAR_SLIST(rtxp->rtx_block);
 		}