Re: [PATCH v4] tcp: harmonize tcp_vx_rcv header length assumptions

Joe Perches
2010-01-14T01:03:14Z

On Wed, 2010-01-13 at 16:13 -0500, William Allen Simpson wrote:
> I did today's tests on tcp_ipv4, but part of this harmonization is to
> make v4 and v6 match up better. As I was examining line by line, one of
> the things that leaps out is that ipv4 has nf_reset(skb):
>
> tcp_ipv4:
> if (!xfrm4_policy_check(sk, XFRM_POLICY_IN, skb))
> goto discard_and_relse;
> nf_reset(skb);
>
> if (sk_filter(sk, skb))
> goto discard_and_relse;
>
> tcp_ipv6:
> if (!xfrm6_policy_check(sk, XFRM_POLICY_IN, skb))
> goto discard_and_relse;
>
> if (sk_filter(sk, skb))
> goto discard_and_relse;
>
> Does anybody know why? Should ipv6 have it? Or at least a comment
> explaining the reasoning for the omission?

You should ask the person that put the line in, but
it might be because no IPv6 NAT support exists.

$ git blame -L 1658,1658 net/ipv4/tcp_ipv4.c
b59c2701 (Patrick McHardy 2006-01-06 23:06:10 -0800 1658) nf_reset(skb);

And

$ git log -p -1 b59c2701
commit b59c270104f03960069596722fea70340579244d
Author: Patrick McHardy <kaber@trash.net>
Date: Fri Jan 6 23:06:10 2006 -0800

[NETFILTER]: Keep conntrack reference until IPsec policy checks are done

Keep the conntrack reference until policy checks have been performed for
IPsec NAT support. The reference needs to be dropped before a packet is
queued to avoid having the conntrack module unloadable.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>