Thanks for your time, Patrick, it's very much appreciated.
>> Since the rest of the assignments match I was left wondering, which
>> one is correct?
>
> Both are fine.
> 2.4:
> new->nfct=old->nfct;
> nf_conntrack_get(new->nfct);
> 2.6:
> new->nfct = old->nfct;
> nf_conntrack_get(old->nfct);
D'oh, now that you've pointed it out it's so obvious.
> So in both cases the same reference is grabbed. Since the patch which
> put a nf_reset in ip_finish_output2 helped, I suggest following the
> code path from there and place nf_reset statements anywhere the
> packet can take a path other than to the qdiscs, that should
> help locating the problem.
Ok, I have tried for a couple of hours but in vain. Problems:
- I don't really understand how to probe for paths not using qdiscs
using skb as a source (skb->list check if list is empty?), which I
would really like to do in ip_finish_output2(). Something along the
lines of:
if (list_empty(&skb->list)) {
nf_reset(skb);
}
- The net/* seems to be randomly sprinkled with nf_reset()'s without
a clear documentation as to why (ipv4/ip_input.c:ip_call_ra_chain()
for 2.6 kernel, maybe for skb_clone()'d packets), which makes it
very hard to understand.
- Where exactly do we need to nf_conntrack_put()/nf_reset() skb's?
I wonder if the remaining references should just be zeroed once we are
in the i_see_dead_people part and the call stack reveils rmmod
ip_conntrack? :)
Cheers,
Roberto Nibali, ratz
--
echo
'[q]sa[ln0=aln256%Pln256/snlbx]sb3135071790101768542287578439snlbxq' | dc
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html