From patchwork Wed Sep 18 03:27:57 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: duanjiong X-Patchwork-Id: 275866 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 9B9852C00FC for ; Thu, 19 Sep 2013 15:30:16 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752402Ab3ISFaM (ORCPT ); Thu, 19 Sep 2013 01:30:12 -0400 Received: from mail-pb0-f41.google.com ([209.85.160.41]:57748 "EHLO mail-pb0-f41.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752120Ab3ISFaK (ORCPT ); Thu, 19 Sep 2013 01:30:10 -0400 Received: by mail-pb0-f41.google.com with SMTP id rp2so7993516pbb.28 for ; Wed, 18 Sep 2013 22:30:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=VJ7/d+kAZLN9qlkR7SYhawQk18OKR5VAx+tFMGQyJQw=; b=AmnDOnUAisqhOnrxWAOsACbdwZMRsG+kJNhmGum0zHCW+89ENhFXIX3pGf+OZw1Xtf df8H64Wx3TXmrYRLG6VAu5Kd+vRRg0GQspPHOxDlQ/CiCd5HAanou+AdEwd+2DmY+ePF jr8/ZEXMeuYqVkX+CQh1golg2dav9iD2F9b7ADPPH2xWy+jsofGOZDWQqvok8cbrbuWo nC82tehjBUFFdknGI3HuOYN8YIQOxL7q2eHGv9w2JZxz/K3VIErAbJCidl7+hTjJRRY2 cslDl0ZOefq5scFXYIgmxOhuKsTlAo/0P8tlJXhxgjwMU2hvhzI+MnsjTxOn3wvbvMmg DtLA== X-Received: by 10.68.219.33 with SMTP id pl1mr18552885pbc.147.1379568610157; Wed, 18 Sep 2013 22:30:10 -0700 (PDT) Received: from localhost.localdomain.localdomain ([180.110.209.78]) by mx.google.com with ESMTPSA id j9sm9422168paj.18.1969.12.31.16.00.00 (version=TLSv1 cipher=RC4-SHA bits=128/128); Wed, 18 Sep 2013 22:30:09 -0700 (PDT) From: Duan Jiong To: David Miller Cc: netdev@vger.kernel.org, Duan Jiong Subject: [PATCH v2] ip6tnl: do route updating for redirect in ip6_tnl_err() Date: Tue, 17 Sep 2013 20:27:57 -0700 Message-Id: <1379474877-3097-1-git-send-email-duanj.fnst@cn.fujitsu.com> X-Mailer: git-send-email 1.7.7.6 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org 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 --- net/ipv6/ip6_tunnel.c | 8 +++----- 1 files changed, 3 insertions(+), 5 deletions(-) diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c index 61355f7..48034d8 100644 --- a/net/ipv6/ip6_tunnel.c +++ b/net/ipv6/ip6_tunnel.c @@ -529,6 +529,9 @@ ip6_tnl_err(struct sk_buff *skb, __u8 ipproto, struct inet6_skb_parm *opt, rel_msg = 1; } break; + case NDISC_REDIRECT: + ip6_redirect(skb, dev_net(skb->dev), skb->dev->ifindex, 0); + break; } *type = rel_type; @@ -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; } @@ -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); icmp_send(skb2, rel_type, rel_code, htonl(rel_info));