From patchwork Fri Jun 1 04:05:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Suryaputra X-Patchwork-Id: 924104 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="G69O1u/T"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40y7lT3Nt1z9rxs for ; Sat, 2 Jun 2018 01:38:29 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752786AbeFAPi0 (ORCPT ); Fri, 1 Jun 2018 11:38:26 -0400 Received: from mail-qt0-f194.google.com ([209.85.216.194]:38719 "EHLO mail-qt0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751923AbeFAPiY (ORCPT ); Fri, 1 Jun 2018 11:38:24 -0400 Received: by mail-qt0-f194.google.com with SMTP id x34-v6so19364611qtk.5 for ; Fri, 01 Jun 2018 08:38:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=RoZ9KiRKlzHMtq/1XVcWxrL5nqxHj4J61+EXBw7AKVs=; b=G69O1u/TUciUILNWqmr4Y9YqN18Mk8kQPkhCIP+qRuylJh4OBHiAem82Av/eiIgw1g ++Upv12BoFZT9PT4ONeOSFwmd3VVuGZTX+A0/5wbQOFtduFld8L0r2LxwHOq0kZLyM0q UTPmlAZjYRh/6wfeIiqPscnWKDupu4lDKbkphAaLj4Nqy+EELxXG0qrLmzbH6el4jWRc zOHXbOGay5XEiS+APC/aFsAQEeii6dcCd6P4naVWaqvLSpqQei/oTf6DkCcsfbZGYv7R +ZyA4FYCSMNpAFjG5KMKxX0+L0tNx/AblYmyLiAz5M7nQODrjOhYmG+5h+88cS7xpYiD oinw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=RoZ9KiRKlzHMtq/1XVcWxrL5nqxHj4J61+EXBw7AKVs=; b=Dl7GxFd0HnHWzb6rxaLQcL2LYxnSBN/q5T0rG2meQvPCEwLhabq3wO56tid9ncpwpw CrzIAdCJCBer4cQhVVMyuJQNhZt3OUlJYwrpd2Px++KpRboQ/GlHNefIBDpG9RwlxBcu s8nhOY/SDeJzJ88l+4MgIcfJxfT9sGkZZtNURWZYlxNofhjCvhk4yto8pdgIKcKIRqBM d3FwiMRKqgevsHLBWrwDfPeRC3egqP4pZc3GvZrTtzNNcXD5HpRcL1Vy2k+8HIuewfpN pi17nlhqItr1SU3fLvmi3/TUo1iUgQnC6sACyc0fSvR+AZh3I8nzbZ5RlW4T9V1X/zq+ wReg== X-Gm-Message-State: APt69E3hhBCYLMv1rlbwgu6MuPGrjjD5EvEw5QnzxC/EnZ8NCsTpMjB5 i8n+7wmrPwL9OhvhPTQw2X35 X-Google-Smtp-Source: ADUXVKLtnvQyrV0UsttCQVDbPv27V74mrMi0buBTy1YvvaoWXkvVHCnGJF0wswHg8yMyT0V/0b+ATg== X-Received: by 2002:ac8:2a46:: with SMTP id l6-v6mr11847984qtl.118.1527867503306; Fri, 01 Jun 2018 08:38:23 -0700 (PDT) Received: from ubuntu.extremenetworks.com ([12.38.14.8]) by smtp.gmail.com with ESMTPSA id g64-v6sm27924820qtd.5.2018.06.01.08.38.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 01 Jun 2018 08:38:22 -0700 (PDT) From: Stephen Suryaputra To: netdev@vger.kernel.org Cc: Stephen Suryaputra Subject: [PATCH net] vrf: check the original netdevice for generating redirect Date: Fri, 1 Jun 2018 00:05:21 -0400 Message-Id: <1527825921-17677-1-git-send-email-ssuryaextr@gmail.com> X-Mailer: git-send-email 2.7.4 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Use the right device to determine if redirect should be sent especially when using vrf. Same as well as when sending the redirect. Signed-off-by: Stephen Suryaputra Acked-by: David Ahern --- net/ipv6/ip6_output.c | 3 ++- net/ipv6/ndisc.c | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 7b6d168..af49f6c 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c @@ -507,7 +507,8 @@ int ip6_forward(struct sk_buff *skb) send redirects to source routed frames. We don't send redirects to frames decapsulated from IPsec. */ - if (skb->dev == dst->dev && opt->srcrt == 0 && !skb_sec_path(skb)) { + if (IP6CB(skb)->iif == dst->dev->ifindex && + opt->srcrt == 0 && !skb_sec_path(skb)) { struct in6_addr *target = NULL; struct inet_peer *peer; struct rt6_info *rt; diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c index 9de4dfb1..525051a 100644 --- a/net/ipv6/ndisc.c +++ b/net/ipv6/ndisc.c @@ -1576,6 +1576,12 @@ void ndisc_send_redirect(struct sk_buff *skb, const struct in6_addr *target) ops_data_buf[NDISC_OPS_REDIRECT_DATA_SPACE], *ops_data = NULL; bool ret; + if (netif_is_l3_master(skb->dev)) { + dev = __dev_get_by_index(dev_net(skb->dev), IPCB(skb)->iif); + if (!dev) + return; + } + if (ipv6_get_lladdr(dev, &saddr_buf, IFA_F_TENTATIVE)) { ND_PRINTK(2, warn, "Redirect: no link-local address on %s\n", dev->name);