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



Reply via email to