systemd/test/fuzz
Matthieu Baerts (NGI0) 3f69070598 core/socket: allow MPTCP protocol
Multipath TCP (MPTCP), standardized in RFC8684 [1], is a TCP extension
that enables a TCP connection to use different paths. It allows a device
to make use of multiple interfaces at once to send and receive TCP
packets over a single MPTCP connection. MPTCP can aggregate the
bandwidth of multiple interfaces or prefer the one with the lowest
latency, it also allows a fail-over if one path is down, and the traffic
is seamlessly re-injected on other paths.

To benefit from MPTCP, both the client and the server have to support
it. Multipath TCP is a backward-compatible TCP extension that is enabled
by default on recent Linux distributions (Debian, Ubuntu, Redhat, ...).
Multipath TCP is included in the Linux kernel since version 5.6 [2]. To
use it on Linux, an application must explicitly enable it when creating
the socket:

  int sd = socket(AF_INET(6), SOCK_STREAM, IPPROTO_MPTCP);

No need to change anything else in the application.

This patch allows MPTCP protocol in the Socket unit configuration. So
now, a <unit>.socket can contain this to use MPTCP instead of TCP:

  [Socket]
  SocketProtocol=mptcp

MPTCP support has been allowed similarly to what has been already done
to allow SCTP: just one line in core/socket.c, a very simple addition
thanks to the flexible architecture already in place.

On top of that, IPPROTO_MPTCP has also been added in the list of allowed
protocols in two other places, and in the doc. It has also been added to
the missing_network.h file, for systems with an old libc -- note that it
was also required to include <netinet/in.h> in this file to avoid
redefinition errors.

Link: https://www.rfc-editor.org/rfc/rfc8684.html [1]
Link: https://www.mptcp.dev [2]
2024-06-12 00:14:08 +01:00
..
fuzz-bootspec fuzz: shorten filename of testcase 2022-12-09 05:01:04 +09:00
fuzz-bus-match
fuzz-bus-message
fuzz-calendarspec
fuzz-catalog man: update links to catalog docs 2024-05-28 14:46:44 +02:00
fuzz-dhcp-client
fuzz-dhcp-server
fuzz-dhcp-server-relay
fuzz-dhcp6-client
fuzz-dns-packet
fuzz-env-file
fuzz-etc-hosts resolve: dedup entries in /etc/hosts 2022-12-13 20:37:48 +09:00
fuzz-execute-serialize core: remove duplicate serialization of cpu_sched_reset_on_fork 2024-02-27 19:20:44 +00:00
fuzz-fido-id-desc
fuzz-journal-remote
fuzz-journald-audit
fuzz-journald-kmsg
fuzz-journald-native-fd
fuzz-journald-stream
fuzz-journald-syslog
fuzz-json
fuzz-link-parser meson: Generate fuzzer inputs with directives 2022-10-20 14:43:50 +02:00
fuzz-lldp-rx
fuzz-manager-serialize oomd: correct listening sockets 2023-09-25 23:27:18 +02:00
fuzz-ndisc-rs
fuzz-netdev-parser network: netdev - bond add support for ARP missed max 2024-02-16 14:44:51 +05:30
fuzz-network-parser networkd: support proxy_arp_pvlan sysctl 2023-12-24 03:40:03 +09:00
fuzz-nspawn-oci json: correctly handle magic strings when parsing variant strv 2023-05-23 20:18:21 +02:00
fuzz-nspawn-settings test: update nspawn's basic config file used for fuzzing 2023-05-15 09:00:17 +02:00
fuzz-resource-record test: shorten sample names, drop numerical prefixes 2023-09-02 17:32:19 +03:00
fuzz-systemctl-parse-argv fuzz: rename long samples 2023-05-18 15:23:27 +02:00
fuzz-udev-database
fuzz-udev-rules rules: go to the end of rules indeed when dm is suspended 2023-11-29 09:57:55 +01:00
fuzz-unit-file core/socket: allow MPTCP protocol 2024-06-12 00:14:08 +01:00
fuzz-varlink
fuzz-varlink-idl varlink: don't panic on malformed method definition 2023-10-14 17:40:07 +02:00
fuzz-xdg-desktop
.gitattributes
generate-directives.py meson: Generate fuzzer inputs with directives 2022-10-20 14:43:50 +02:00
meson.build meson: use ternary op for brevity 2023-11-15 14:53:11 +01:00