From: Duan Jiong <duanj.fnst@cn.fujitsu.com>
To: David Miller <davem@davemloft.net>
Cc: djduanjiong@gmail.com, netdev@vger.kernel.org
Subject: Re: [PATCH v2] ip6tnl: do route updating for redirect in ip6_tnl_err()
Date: Fri, 20 Sep 2013 18:43:08 +0800 [thread overview]
Message-ID: <523C26BC.5050408@cn.fujitsu.com> (raw)
In-Reply-To: <20130919.140213.417316271045370155.davem@davemloft.net>
于 2013年09月20日 02:02, David Miller 写道:
> From: Duan Jiong <djduanjiong@gmail.com>
> Date: Tue, 17 Sep 2013 20:27:57 -0700
>
>> After the ip6_tnl_err() is called, the rel_msg is assigned to
>> 0, and the ip4ip6_err() will return directly, the instruction
>> below will not be executed.
>>
>> In rfc2473, we can know that the tunnel ICMP redirect message
>> should not be reported to the source of the original packet,
>> so we can handle it in ip6_tnl_err().
>>
>> Signed-off-by: Duan Jiong <duanj.fnst@cn.fujitsu.com>
>
> I do not think this change is correct.
>
>> @@ -576,9 +579,6 @@ ip4ip6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
>> rel_type = ICMP_DEST_UNREACH;
>> rel_code = ICMP_FRAG_NEEDED;
>> break;
>> - case NDISC_REDIRECT:
>> - rel_type = ICMP_REDIRECT;
>> - rel_code = ICMP_REDIR_HOST;
>> default:
>> return 0;
>> }
>
> The bug is a missing "break;" statement for this case, and:
You can read the ip6_tnl_err(). when the message is NDISC_REDIRECT, the
rel_msg is assigned to 0, then
561 if (rel_msg == 0)
562 return 0;
the function ip4ip6_err() return directly. so even though you add "break;"
statement for this case, the redirect message will not be handled.
>
>> @@ -637,8 +637,6 @@ ip4ip6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
>>
>> skb_dst(skb2)->ops->update_pmtu(skb_dst(skb2), NULL, skb2, rel_info);
>> }
>> - if (rel_type == ICMP_REDIRECT)
>> - skb_dst(skb2)->ops->redirect(skb_dst(skb2), NULL, skb2);
>>
>
> We absolutely must run the ipv4 dst_ops redirect handler here so you must
> keep this code around as well.
>
Because the Redirect Message is sent to tunnel entry-point, so the target address in
Redirect ICMPv6 Message is an ipv6 address, then we could not run the ipv4 dst_ops
redirect handler here.
Thanks,
Duan
> The only change you need to make is to add the missing break;
> statement to ip4ip6_err() and then also add appropriate NDISC_REDIRECT
> handling to ip6ip6_err().
prev parent reply other threads:[~2013-09-20 10:44 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-18 3:27 [PATCH v2] ip6tnl: do route updating for redirect in ip6_tnl_err() Duan Jiong
2013-09-19 18:02 ` David Miller
2013-09-20 10:43 ` Duan Jiong [this message]
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=523C26BC.5050408@cn.fujitsu.com \
--to=duanj.fnst@cn.fujitsu.com \
--cc=davem@davemloft.net \
--cc=djduanjiong@gmail.com \
--cc=netdev@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.