> > 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.
Yep, ill_delete() -> reset_conn_ill() -> conn_delete_ill() -> ilg_delete()
-> ip_delmulti()
--
meem