netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Patrick McHardy <kaber@trash.net>
To: yoshfuji@linux-ipv6.org
Cc: netdev@vger.kernel.org, netfilter-devel@lists.netfilter.org,
	herbert@gondor.apana.org.au
Subject: Re: [NF+IPsec 4/6]: Make IPsec input processing symetrical to output
Date: Mon, 17 Oct 2005 03:24:25 +0200	[thread overview]
Message-ID: <4352FD49.4090201@trash.net> (raw)
In-Reply-To: <20051017.094919.56989341.yoshfuji@linux-ipv6.org>

YOSHIFUJI Hideaki / ^[$B5HF#1QL@^[ wrote:
> In article <4352EEC8.9000602@trash.net> (at Mon, 17 Oct 2005 02:22:32 +0200), Patrick McHardy <kaber@trash.net> says:
> 
> 
>>[NETFILTER]: Make IPsec input processing symetrical to output
> 
> 
> I think this comment is not appropriate.
>  1. They are not "NETFILTER" but rather "CORE" IPv4/6 stack.
>  2. There are several known bad side effects.
>     They should be described.

The patches are work in progress, so I didn't spent much time
on descriptive changelog entries. The sideeffects of posting
packets to the stack again are incorrect statistics and
packet sockets see packets on each pass through the stack.
Which is actually not a bad sideeffect because it only affects
pure transport mode bundles with which the plain text packet is
currently not visible for tcpdump at all.

>>diff --git a/net/ipv6/xfrm6_input.c b/net/ipv6/xfrm6_input.c
>>--- a/net/ipv6/xfrm6_input.c
>>+++ b/net/ipv6/xfrm6_input.c
>>@@ -121,16 +121,21 @@ int xfrm6_rcv_spi(struct sk_buff **pskb,
>> 	skb->sp->len += xfrm_nr;
>> 	skb->ip_summed = CHECKSUM_NONE;
>> 
>>-	if (decaps) {
>>-		if (!(skb->dev->flags&IFF_LOOPBACK)) {
>>-			dst_release(skb->dst);
>>-			skb->dst = NULL;
>>-		}
>>-		netif_rx(skb);
>>-		return -1;
>>-	} else {
>>-		return 1;
>>+	if (!decaps) {
>>+		if (skb_cloned(skb) &&
>>+		    pskb_expand_head(skb, 0, 0, GFP_ATOMIC))
>>+			goto drop;
>>+		/* FIXME: Jumbo payload option */
>>+		skb->nh.ipv6h->payload_len = htons(skb->len);
>>+		__skb_push(skb, skb->data - skb->nh.raw);
>> 	}
>>+	if (!(skb->dev->flags&IFF_LOOPBACK)) {
>>+		dst_release(skb->dst);
>>+		skb->dst = NULL;
>>+	}
>>+	nf_reset(skb);
>>+	netif_rx(skb);
>>+	return -1;
>> 
>> drop_unlock:
>> 	spin_unlock(&x->lock);
> 
> 
> I diagree.
> Stack should process the packet just once if it is of transport mode.
> (It is okay to process one twice if it is of tunnel mode.)

For IPv6 this probably can be changed, I just kept the code in sync
for now. For IPv4 it is necessary to pass it through the entire stack
again to make netfilter fully usable without lots of code duplication
or unusual limitations, especially for NAT. So the question is whether
we want to keep the code and behaviour of IPv4 and IPv6 in sync or
not. I think we should.

  reply	other threads:[~2005-10-17  1:24 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-10-17  0:22 [NF+IPsec 4/6]: Make IPsec input processing symetrical to output Patrick McHardy
2005-10-17  0:49 ` YOSHIFUJI Hideaki / 吉藤英明
2005-10-17  1:24   ` Patrick McHardy [this message]
2005-10-17  1:46     ` Herbert Xu
2005-10-25 23:09       ` Patrick McHardy
2005-10-25 23:10         ` Herbert Xu
2005-10-25 23:14           ` Patrick McHardy
2005-10-26  0:39             ` Herbert Xu
2005-10-27 14:42               ` Patrick McHardy
2005-10-30 23:15                 ` Patrick McHardy
2005-10-31  3:19                   ` Yasuyuki KOZAKAI
2005-11-01 18:39                     ` Stephen Frost
     [not found]                   ` <200510310319.j9V3JHNl019752@toshiba.co.jp>
2005-11-01 18:23                     ` Patrick McHardy
2005-10-26  4:39             ` James Morris
2005-10-26  7:37             ` Ingo Oeser
2005-10-26 13:37             ` Stephen Frost
2005-10-27 12:15   ` Herbert Xu
2005-10-27 14:57     ` YOSHIFUJI Hideaki / 吉藤英明
2005-10-27 16:58       ` Patrick McHardy
2005-11-05  6:30       ` Herbert Xu
2005-11-05  7:55         ` Patrick McHardy
2005-11-05  8:39           ` Herbert Xu
2005-11-05  8:58             ` Patrick McHardy
2005-11-05  9:09               ` Herbert Xu
2005-11-05  9:19                 ` Patrick McHardy
2005-11-05  9:38                   ` Herbert Xu
2005-11-05  9:55                     ` Patrick McHardy
2005-11-05 10:01                       ` Herbert Xu
2005-11-05 10:05                         ` Patrick McHardy
2005-11-05 10:32                       ` Yasuyuki KOZAKAI
     [not found]                       ` <200511051032.jA5AWl2l000619@toshiba.co.jp>
2005-11-08 14:01                         ` Patrick McHardy
2005-11-05  8:23         ` YOSHIFUJI Hideaki / 吉藤英明

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4352FD49.4090201@trash.net \
    --to=kaber@trash.net \
    --cc=herbert@gondor.apana.org.au \
    --cc=netdev@vger.kernel.org \
    --cc=netfilter-devel@lists.netfilter.org \
    --cc=yoshfuji@linux-ipv6.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).