Hello, </snip> > > > goto bad; > > > > here we do 'goto bad', which does not call if_put(). > > yes it does. the whole chunk with the diff applied is: > > done: > if (s->rt != PF_DUPTO) > pd->m = NULL; > if_put(ifp); > rtfree(rt); > return; > > bad: > m_freem(m0); > goto done; > } > > bad drops the mbuf and then goes to done.
yes you are absolutely right, I need glasses. thanks and regards sashan