From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexey Kodanev Subject: [PATCH net v3 1/3] ipv6: move ip6_dst_store() calls with flowi6 checks to a wrapper Date: Thu, 29 Mar 2018 20:37:20 +0300 Message-ID: <1522345042-26646-2-git-send-email-alexey.kodanev@oracle.com> References: <1522345042-26646-1-git-send-email-alexey.kodanev@oracle.com> Cc: Eric Dumazet , Martin KaFai Lau , David Miller , Alexey Kodanev To: netdev@vger.kernel.org Return-path: Received: from userp2120.oracle.com ([156.151.31.85]:43510 "EHLO userp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750820AbeC2R2M (ORCPT ); Thu, 29 Mar 2018 13:28:12 -0400 In-Reply-To: <1522345042-26646-1-git-send-email-alexey.kodanev@oracle.com> Sender: netdev-owner@vger.kernel.org List-ID: Move commonly used pattern of ip6_dst_store() usage to a separate function - ip6_dst_store_flow(), which will check the addresses for equality before saving them. There is no functional changes in this patch, the new wrapper will be used in the next patch, in ip6_sk_dst_lookup_flow(). Signed-off-by: Alexey Kodanev --- include/net/ip6_route.h | 17 +++++++++++++++++ net/ipv6/datagram.c | 9 +-------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/include/net/ip6_route.h b/include/net/ip6_route.h index ac0866b..36c3946 100644 --- a/include/net/ip6_route.h +++ b/include/net/ip6_route.h @@ -210,6 +210,23 @@ static inline void ip6_dst_store(struct sock *sk, struct dst_entry *dst, #endif } +static inline void ip6_dst_store_flow(struct sock *sk, struct dst_entry *dst, + struct flowi6 *fl6) +{ +#ifdef CONFIG_IPV6_SUBTREES + struct ipv6_pinfo *np = inet6_sk(sk); +#endif + + ip6_dst_store(sk, dst, + ipv6_addr_equal(&fl6->daddr, &sk->sk_v6_daddr) ? + &sk->sk_v6_daddr : NULL, +#ifdef CONFIG_IPV6_SUBTREES + ipv6_addr_equal(&fl6->saddr, &np->saddr) ? + &np->saddr : +#endif + NULL); +} + static inline bool ipv6_unicast_destination(const struct sk_buff *skb) { struct rt6_info *rt = (struct rt6_info *) skb_dst(skb); diff --git a/net/ipv6/datagram.c b/net/ipv6/datagram.c index a9f7eca..8b4fa0c 100644 --- a/net/ipv6/datagram.c +++ b/net/ipv6/datagram.c @@ -106,14 +106,7 @@ int ip6_datagram_dst_update(struct sock *sk, bool fix_sk_saddr) } } - ip6_dst_store(sk, dst, - ipv6_addr_equal(&fl6.daddr, &sk->sk_v6_daddr) ? - &sk->sk_v6_daddr : NULL, -#ifdef CONFIG_IPV6_SUBTREES - ipv6_addr_equal(&fl6.saddr, &np->saddr) ? - &np->saddr : -#endif - NULL); + ip6_dst_store_flow(sk, dst, &fl6); out: fl6_sock_release(flowlabel); -- 1.8.3.1