From owner-freebsd-net@FreeBSD.ORG Thu Jan 25 21:23:13 2007 Return-Path: X-Original-To: net@FreeBSD.org Delivered-To: freebsd-net@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C441816A402; Thu, 25 Jan 2007 21:23:13 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from cell.sick.ru (cell.sick.ru [217.72.144.68]) by mx1.freebsd.org (Postfix) with ESMTP id 49ECB13C44B; Thu, 25 Jan 2007 21:23:13 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from cell.sick.ru (glebius@localhost [127.0.0.1]) by cell.sick.ru (8.13.4/8.13.3) with ESMTP id l0PLNAA6011307 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 26 Jan 2007 00:23:11 +0300 (MSK) (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by cell.sick.ru (8.13.4/8.13.1/Submit) id l0PLNALV011306; Fri, 26 Jan 2007 00:23:10 +0300 (MSK) (envelope-from glebius@FreeBSD.org) X-Authentication-Warning: cell.sick.ru: glebius set sender to glebius@FreeBSD.org using -f Date: Fri, 26 Jan 2007 00:23:10 +0300 From: Gleb Smirnoff To: Robert Watson Message-ID: <20070125212310.GG7922@cell.sick.ru> References: <20070125162422.GA7922@bestcom.ru> <45B8EB23.705@FreeBSD.org> <20070125183720.GB7922@cell.sick.ru> <20070125203807.S13293@fledge.watson.org> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline In-Reply-To: <20070125203807.S13293@fledge.watson.org> User-Agent: Mutt/1.5.6i Cc: "Bruce M. Simpson" , net@FreeBSD.org Subject: Re: rev. 1.94 of netinet/in.c broke CARP X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 25 Jan 2007 21:23:13 -0000 On Thu, Jan 25, 2007 at 08:40:52PM +0000, Robert Watson wrote: R> Architecturally, the right fix is that CARP needs to have a handler for R> ifnet destruction that always runs before the multicast address garbage R> collection. I'm pretty preoccupied for the next few days due to an R> impending paper deadline, so can't investigate further currently, but one R> way or the other that ordering dependency needs to be expressed. If done R> properly, CARP will always have released its multicast address before they R> are forceably removed. Having the reference count is good too, but what I R> describe should be sufficient regardless of the refcount. This means removing usage of EVENTHANDLER(9) and going back to exporting carp_ifdetach() and calling it directly from if_detach(). This is back out revision 1.255 of net/if.c. Not sure what is a right way... I am worried about that CARP is not the only subsystem in kernel that can join a multicast group on an ifnet, and keep a pointer to the multicast instance. -- Totus tuus, Glebius. GLEBIUS-RIPN GLEB-RIPE