On Thu, 2008-10-02 at 12:19 -0400, Peter Memishian wrote:
> > Well well well. This is the ilm for the allmulti group that ipnet
> > joined. At this point, I'm wondering how ilm's get cleaned up on
> > unplumb... Clearly ours isn't getting deleted automatically. How is
> > this supposed to work for ilm's added by conn_t's doing multicast joins?
>
> ip_quiesce_conn() -> ilg_delete_all() -> ip_delmulti()
Hmm, but I'm still a bit confused. For a module close (which is what is
happening here), ip_quiesce_conn() doesn't get called. In ip_close():
/*
* Call the appropriate delete routine depending on whether this is
* a module or device.
*/
if (WR(q)->q_next != NULL) {
/* This is a module close */
return (ip_modclose((ill_t *)q->q_ptr));
}
connp = q->q_ptr;
ip_quiesce_conn(connp);
For the ip_modclose() case, something other than ip_quiesce_conn() has
to clean up the ilm's. I'm guessing something in ill_delete() must do
this.
-Seb