netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v12 net-next 00/23] net/tcp: Add TCP-AO support
@ 2023-09-18 18:59 Dmitry Safonov
  2023-09-18 18:59 ` [PATCH v12 net-next 01/23] net/tcp: Prepare tcp_md5sig_pool for TCP-AO Dmitry Safonov
                   ` (23 more replies)
  0 siblings, 24 replies; 29+ messages in thread
From: Dmitry Safonov @ 2023-09-18 18:59 UTC (permalink / raw)
  To: David Ahern, Eric Dumazet, Paolo Abeni, Jakub Kicinski,
	David S. Miller
  Cc: linux-kernel, Dmitry Safonov, Andy Lutomirski, Ard Biesheuvel,
	Bob Gilligan, Dan Carpenter, David Laight, Dmitry Safonov,
	Donald Cassidy, Eric Biggers, Eric W. Biederman,
	Francesco Ruggeri, Gaillardetz, Dominik, Herbert Xu,
	Hideaki YOSHIFUJI, Ivan Delalande, Leonard Crestez,
	Nassiri, Mohammad, Salam Noureddine, Simon Horman,
	Tetreault, Francois, netdev, Steen Hegelund, Jonathan Corbet,
	linux-doc

Hi,

This is version 12 of TCP-AO support. The changes from v11 address
Eric's review comments. The biggest change was defining a common
(struct tcp_key) that merges tcp_ao_key with tcp_md5sig_key on TCP
fast-path, therefore in order to help reviewing I provide
the ranged-diff between the versions here:

   https://gist.github.com/0x7f454c46/fe546b9cf323ca21acc3d0eabbd41236

There's one Sparse warning introduced by tcp_sigpool_start():
__cond_acquires() seems to currently being broken. I've described
the reasoning for it on v9 cover letter. Also, checkpatch.pl warnings
were addressed, but yet I've left the ones that are more personal
preferences (i.e. 80 columns limit). Please, ping me if you have
a strong feeling about one of them.

The following changes since commit a5ea26536e89d04485aa9e1c8f60ba11dfc5469e:

  Merge branch 'stmmac-devvm_stmmac_probe_config_dt-conversion' (2023-09-18 12:44:36 +0100)

are available in the Git repository at:

  git@github.com:0x7f454c46/linux.git tcp-ao-v12

for you to fetch changes up to 45aa51f1d541b7ce961b379eb0f45031b89575d6:

  Documentation/tcp: Add TCP-AO documentation (2023-09-18 18:07:32 +0100)

----------------------------------------------------------------

And another branch with selftests, that will be sent later separately:
  git@github.com:0x7f454c46/linux.git tcp-ao-v12-with-selftests

Thanks for your time and reviews,
         Dmitry

--- Changelog ---

Changes from v11:
- Define (struct tcp_key) for tcp-fast path and detect by type what key
  was used. This also benefits from TCP-MD5/TCP-AO static branches (Eric)
- Remove sk_gso_disable() from TCP-AO fast-path in __tcp_transmit_skb()
  (Eric)
- Don't leak skb on failed kmalloc() in __tcp_transmit_skb() (Eric)
- skb_dst_drop() is not necessary as kfree_skb() calls it (Eric)
- Don't dereference tcp_ao_key in net_warn_ratelimited(), outside of
  rcu_read_lock() (Eric)

Changes from v10:
- Make seq (u32) in tcp_ao_prepare_reset() and declare the argument
  in "net/tcp: Add TCP-AO SNE support", where it gets used (Simon)
- Fix rebase artifact in tcp_v6_reqsk_send_ack(), which adds
  compile-error on a patch in the middle of series (Simon)
- Another rebase artifact in tcp_v6_reqsk_send_ack() that makes
  keyid, requested by peer on ipv6 reqsk ACKs not respected (Simon)

Version 10: https://lore.kernel.org/all/20230815191455.1872316-1-dima@arista.com/T/#u

The pre-v10 changelog is on version 10 cover-letter.

Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Ard Biesheuvel <ardb@kernel.org>
Cc: Bob Gilligan <gilligan@arista.com>
Cc: Dan Carpenter <error27@gmail.com>
Cc: David Ahern <dsahern@kernel.org>
Cc: David Laight <David.Laight@aculab.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Dmitry Safonov <0x7f454c46@gmail.com>
Cc: Donald Cassidy <dcassidy@redhat.com>
Cc: Eric Biggers <ebiggers@kernel.org>
Cc: Eric Dumazet <edumazet@google.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Francesco Ruggeri <fruggeri05@gmail.com>
Cc: Gaillardetz, Dominik <dgaillar@ciena.com>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
Cc: Ivan Delalande <colona@arista.com>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Leonard Crestez <cdleonard@gmail.com>
Cc: Nassiri, Mohammad <mnassiri@ciena.com>
Cc: Paolo Abeni <pabeni@redhat.com>
Cc: Salam Noureddine <noureddine@arista.com>
Cc: Simon Horman <simon.horman@corigine.com>
Cc: Tetreault, Francois <ftetreau@ciena.com>
Cc: netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org

Dmitry Safonov (23):
  net/tcp: Prepare tcp_md5sig_pool for TCP-AO
  net/tcp: Add TCP-AO config and structures
  net/tcp: Introduce TCP_AO setsockopt()s
  net/tcp: Prevent TCP-MD5 with TCP-AO being set
  net/tcp: Calculate TCP-AO traffic keys
  net/tcp: Add TCP-AO sign to outgoing packets
  net/tcp: Add tcp_parse_auth_options()
  net/tcp: Add AO sign to RST packets
  net/tcp: Add TCP-AO sign to twsk
  net/tcp: Wire TCP-AO to request sockets
  net/tcp: Sign SYN-ACK segments with TCP-AO
  net/tcp: Verify inbound TCP-AO signed segments
  net/tcp: Add TCP-AO segments counters
  net/tcp: Add TCP-AO SNE support
  net/tcp: Add tcp_hash_fail() ratelimited logs
  net/tcp: Ignore specific ICMPs for TCP-AO connections
  net/tcp: Add option for TCP-AO to (not) hash header
  net/tcp: Add TCP-AO getsockopt()s
  net/tcp: Allow asynchronous delete for TCP-AO keys (MKTs)
  net/tcp: Add static_key for TCP-AO
  net/tcp: Wire up l3index to TCP-AO
  net/tcp: Add TCP_AO_REPAIR
  Documentation/tcp: Add TCP-AO documentation

 Documentation/networking/index.rst  |    1 +
 Documentation/networking/tcp_ao.rst |  434 +++++
 include/linux/sockptr.h             |   23 +
 include/linux/tcp.h                 |   30 +-
 include/net/dropreason-core.h       |   30 +
 include/net/tcp.h                   |  288 +++-
 include/net/tcp_ao.h                |  347 ++++
 include/uapi/linux/snmp.h           |    5 +
 include/uapi/linux/tcp.h            |  105 ++
 net/ipv4/Kconfig                    |   17 +
 net/ipv4/Makefile                   |    2 +
 net/ipv4/proc.c                     |    5 +
 net/ipv4/syncookies.c               |    4 +
 net/ipv4/tcp.c                      |  246 +--
 net/ipv4/tcp_ao.c                   | 2341 +++++++++++++++++++++++++++
 net/ipv4/tcp_input.c                |   97 +-
 net/ipv4/tcp_ipv4.c                 |  363 ++++-
 net/ipv4/tcp_minisocks.c            |   50 +-
 net/ipv4/tcp_output.c               |  263 ++-
 net/ipv4/tcp_sigpool.c              |  358 ++++
 net/ipv6/Makefile                   |    1 +
 net/ipv6/syncookies.c               |    5 +
 net/ipv6/tcp_ao.c                   |  168 ++
 net/ipv6/tcp_ipv6.c                 |  374 +++--
 24 files changed, 5122 insertions(+), 435 deletions(-)
 create mode 100644 Documentation/networking/tcp_ao.rst
 create mode 100644 include/net/tcp_ao.h
 create mode 100644 net/ipv4/tcp_ao.c
 create mode 100644 net/ipv4/tcp_sigpool.c
 create mode 100644 net/ipv6/tcp_ao.c


base-commit: a5ea26536e89d04485aa9e1c8f60ba11dfc5469e
-- 
2.41.0


^ permalink raw reply	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2023-09-21 17:49 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-18 18:59 [PATCH v12 net-next 00/23] net/tcp: Add TCP-AO support Dmitry Safonov
2023-09-18 18:59 ` [PATCH v12 net-next 01/23] net/tcp: Prepare tcp_md5sig_pool for TCP-AO Dmitry Safonov
2023-09-18 19:00 ` [PATCH v12 net-next 02/23] net/tcp: Add TCP-AO config and structures Dmitry Safonov
2023-09-18 19:00 ` [PATCH v12 net-next 03/23] net/tcp: Introduce TCP_AO setsockopt()s Dmitry Safonov
2023-09-18 19:00 ` [PATCH v12 net-next 04/23] net/tcp: Prevent TCP-MD5 with TCP-AO being set Dmitry Safonov
2023-09-18 19:00 ` [PATCH v12 net-next 05/23] net/tcp: Calculate TCP-AO traffic keys Dmitry Safonov
2023-09-18 19:00 ` [PATCH v12 net-next 06/23] net/tcp: Add TCP-AO sign to outgoing packets Dmitry Safonov
2023-09-21 11:20   ` Paolo Abeni
2023-09-21 16:01     ` Dmitry Safonov
2023-09-21 11:23   ` Paolo Abeni
2023-09-21 16:03     ` Dmitry Safonov
2023-09-18 19:00 ` [PATCH v12 net-next 07/23] net/tcp: Add tcp_parse_auth_options() Dmitry Safonov
2023-09-18 19:00 ` [PATCH v12 net-next 08/23] net/tcp: Add AO sign to RST packets Dmitry Safonov
2023-09-18 19:00 ` [PATCH v12 net-next 09/23] net/tcp: Add TCP-AO sign to twsk Dmitry Safonov
2023-09-18 19:00 ` [PATCH v12 net-next 10/23] net/tcp: Wire TCP-AO to request sockets Dmitry Safonov
2023-09-18 19:00 ` [PATCH v12 net-next 11/23] net/tcp: Sign SYN-ACK segments with TCP-AO Dmitry Safonov
2023-09-18 19:00 ` [PATCH v12 net-next 12/23] net/tcp: Verify inbound TCP-AO signed segments Dmitry Safonov
2023-09-18 19:00 ` [PATCH v12 net-next 13/23] net/tcp: Add TCP-AO segments counters Dmitry Safonov
2023-09-18 19:00 ` [PATCH v12 net-next 14/23] net/tcp: Add TCP-AO SNE support Dmitry Safonov
2023-09-18 19:00 ` [PATCH v12 net-next 15/23] net/tcp: Add tcp_hash_fail() ratelimited logs Dmitry Safonov
2023-09-18 19:00 ` [PATCH v12 net-next 16/23] net/tcp: Ignore specific ICMPs for TCP-AO connections Dmitry Safonov
2023-09-18 19:00 ` [PATCH v12 net-next 17/23] net/tcp: Add option for TCP-AO to (not) hash header Dmitry Safonov
2023-09-18 19:00 ` [PATCH v12 net-next 18/23] net/tcp: Add TCP-AO getsockopt()s Dmitry Safonov
2023-09-18 19:00 ` [PATCH v12 net-next 19/23] net/tcp: Allow asynchronous delete for TCP-AO keys (MKTs) Dmitry Safonov
2023-09-18 19:00 ` [PATCH v12 net-next 20/23] net/tcp: Add static_key for TCP-AO Dmitry Safonov
2023-09-18 19:00 ` [PATCH v12 net-next 21/23] net/tcp: Wire up l3index to TCP-AO Dmitry Safonov
2023-09-18 19:00 ` [PATCH v12 net-next 22/23] net/tcp: Add TCP_AO_REPAIR Dmitry Safonov
2023-09-18 19:00 ` [PATCH v12 net-next 23/23] Documentation/tcp: Add TCP-AO documentation Dmitry Safonov
2023-09-21 16:49 ` [PATCH v12 net-next 00/23] net/tcp: Add TCP-AO support Eric Dumazet

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).