From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christoph Paasch Subject: [PATCH net-next 5/5] tcp: TFO - cleanup code duplication Date: Fri, 14 Dec 2018 14:40:07 -0800 Message-ID: <20181214224007.54813-6-cpaasch@apple.com> References: <20181214224007.54813-1-cpaasch@apple.com> Content-Transfer-Encoding: 7BIT Cc: Eric Dumazet , Yuchung Cheng , David Miller To: netdev@vger.kernel.org Return-path: Received: from nwk-aaemail-lapp03.apple.com ([17.151.62.68]:35314 "EHLO nwk-aaemail-lapp03.apple.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729803AbeLNWkh (ORCPT ); Fri, 14 Dec 2018 17:40:37 -0500 In-reply-to: <20181214224007.54813-1-cpaasch@apple.com> Sender: netdev-owner@vger.kernel.org List-ID: We can actually easily reuse __tcp_fastopen_cookie_gen_with_ctx to generate the cookie based on a give TFO-context. This cleans up some of the code. Signed-off-by: Christoph Paasch --- net/ipv4/tcp_fastopen.c | 51 +++++++++++-------------------------------------- 1 file changed, 11 insertions(+), 40 deletions(-) diff --git a/net/ipv4/tcp_fastopen.c b/net/ipv4/tcp_fastopen.c index e856262ef4c2..81e8b3ae9ecd 100644 --- a/net/ipv4/tcp_fastopen.c +++ b/net/ipv4/tcp_fastopen.c @@ -155,27 +155,6 @@ error: kfree(ctx); return err; } -static bool __tcp_fastopen_cookie_gen(struct sock *sk, const void *path, - struct tcp_fastopen_cookie *foc) -{ - struct tcp_fastopen_context *ctx; - bool ok = false; - - rcu_read_lock(); - - ctx = rcu_dereference(inet_csk(sk)->icsk_accept_queue.fastopenq.ctx); - if (!ctx) - ctx = rcu_dereference(sock_net(sk)->ipv4.tcp_fastopen_ctx); - - if (ctx) { - crypto_cipher_encrypt_one(ctx->tfm, foc->val, path); - foc->len = TCP_FASTOPEN_COOKIE_SIZE; - ok = true; - } - rcu_read_unlock(); - return ok; -} - static void __tcp_fastopen_cookie_gen_with_ctx(struct request_sock *req, struct sk_buff *syn, struct tcp_fastopen_cookie *foc, @@ -222,29 +201,21 @@ static bool tcp_fastopen_cookie_gen(struct sock *sk, struct sk_buff *syn, struct tcp_fastopen_cookie *foc) { - if (req->rsk_ops->family == AF_INET) { - const struct iphdr *iph = ip_hdr(syn); - - __be32 path[4] = { iph->saddr, iph->daddr, 0, 0 }; - return __tcp_fastopen_cookie_gen(sk, path, foc); - } + struct tcp_fastopen_context *ctx; + bool ok = false; -#if IS_ENABLED(CONFIG_IPV6) - if (req->rsk_ops->family == AF_INET6) { - const struct ipv6hdr *ip6h = ipv6_hdr(syn); - struct tcp_fastopen_cookie tmp; + rcu_read_lock(); - if (__tcp_fastopen_cookie_gen(sk, &ip6h->saddr, &tmp)) { - struct in6_addr *buf = &tmp.addr; - int i; + ctx = rcu_dereference(inet_csk(sk)->icsk_accept_queue.fastopenq.ctx); + if (!ctx) + ctx = rcu_dereference(sock_net(sk)->ipv4.tcp_fastopen_ctx); - for (i = 0; i < 4; i++) - buf->s6_addr32[i] ^= ip6h->daddr.s6_addr32[i]; - return __tcp_fastopen_cookie_gen(sk, buf, foc); - } + if (ctx) { + __tcp_fastopen_cookie_gen_with_ctx(req, syn, foc, ctx); + ok = true; } -#endif - return false; + rcu_read_unlock(); + return ok; } -- 2.16.2