rev. 1.94 of netinet/in.c broke CARP

Robert Watson rwatson at FreeBSD.org
Thu Jan 25 22:00:11 UTC 2007


On Fri, 26 Jan 2007, Gleb Smirnoff wrote:

> 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.

Alternatively, we move to having two event handlers: one for general stack 
consumers to use, and a second one to do low level address and protocol 
cleanup.  CARP would use the former, multicast address stuff the latter...

Robert N M Watson
Computer Laboratory
University of Cambridge


More information about the freebsd-net mailing list