systemd/src
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
..
ac-power tree-wide: Use log_setup() everywhere 2024-04-25 17:06:43 +02:00
analyze analyze: do not print timestamps before "start of userspace" 2024-05-20 18:31:32 +02:00
ask-password tree-wide: Use log_setup() everywhere 2024-04-25 17:06:43 +02:00
backlight backlight: fix detection of multiple graphic cards 2024-04-04 21:29:57 +01:00
basic core/socket: allow MPTCP protocol 2024-06-12 00:14:08 +01:00
battery-check
binfmt
boot kernel-install,bootctl: unify the config parsing procedure 2024-05-23 16:15:24 +02:00
busctl systemctl,busctl: sort includes 2024-03-26 21:08:49 +08:00
cgls
cgroups-agent
cgtop cgroup-util: allow cg_read_pid() to skip unmapped (zero) pids 2024-05-14 16:12:20 +02:00
core core/socket: allow MPTCP protocol 2024-06-12 00:14:08 +01:00
coredump tree-wise: several cleanups for logging 2024-05-01 04:41:06 +09:00
creds tree-wise: several cleanups for logging 2024-05-01 04:41:06 +09:00
cryptenroll cryptenroll: upgrade log level of critical failure 2024-05-26 04:45:55 +09:00
cryptsetup cryptsetup: check keyring cache passphrase at least once 2024-06-04 23:18:13 +01:00
debug-generator debug-generator: Allow specifying name of unit-dropin credential 2024-05-11 19:46:15 +02:00
delta
detect-virt
dissect dissect-tool: allow systemd-dissect to talk to mountfsd 2024-04-06 16:08:24 +02:00
environment-d-generator tree-wide: Use log_setup() everywhere 2024-04-25 17:06:43 +02:00
escape
firstboot
fsck
fstab-generator Replace strdup_or_null() by strdup_to() 2024-03-20 15:18:21 +01:00
fundamental stub: Add support for .ucode UKI section 2024-04-19 05:58:46 -07:00
fuzz tree-wide: Use log_setup() everywhere 2024-04-25 17:06:43 +02:00
getty-generator use FOREACH_ELEMENT 2024-04-18 17:39:34 +02:00
gpt-auto-generator tree-wise: several cleanups for logging 2024-05-01 04:41:06 +09:00
hibernate-resume hibernate-resume-config: apply ENABLE_EFI ifdef correctly 2024-04-09 09:40:21 +02:00
home homed: fix typo 2024-06-11 15:52:13 +09:00
hostname hostnamed: use strdup_to_full() 2024-03-20 15:13:44 +01:00
hwdb tree-wide: Use log_setup() everywhere 2024-04-25 17:06:43 +02:00
id128
import importctl: Fix 0 flags argument in sd_bus_message_append() 2024-06-03 15:18:13 +09:00
initctl
integritysetup
journal journald: always unset flushed flag when the runtime journal is opened 2024-05-26 03:11:24 +09:00
journal-remote journal-remote-main: pass the right error variable 2024-05-07 13:13:24 +02:00
kernel-install kernel-install,bootctl: unify the config parsing procedure 2024-05-23 16:15:24 +02:00
libsystemd util: add keyring_describe helper and move to basic 2024-06-06 11:39:56 +01:00
libsystemd-network sd-dhcp-server: clear buffer before receive 2024-06-12 00:06:46 +01:00
libudev tree-wide: make sure net/if.h is included before any linux/ header 2024-04-09 21:19:15 +02:00
locale tree-wide: add dlopen ELF notes to all dlopen() deps of ours 2024-05-08 11:07:36 +01:00
login login: re-used -> reused 2024-06-11 15:52:13 +09:00
machine machined: downgrade warning if we cannot drop ref to systemd unit if disconnected from bus 2024-05-28 15:05:11 +02:00
machine-id-setup tree-wide: Use log_setup() everywhere 2024-04-25 17:06:43 +02:00
modules-load libkmod: turn into dlopen() dependency 2024-04-04 18:16:45 +02:00
mount tree-wide: Use log_setup() everywhere 2024-04-25 17:06:43 +02:00
mountfsd mountfsd: drop explicit dependencies for systemd-mountwork 2024-04-26 17:14:07 +02:00
network network/ndisc: use router lifetime as one for redirect route 2024-06-06 11:19:55 +01:00
notify
nspawn nspawn: whitespace 2024-05-08 15:13:14 +02:00
nsresourced bpf: add helper to translate kernel error codes from libbpf 2024-05-29 08:29:47 +02:00
nss-myhostname
nss-mymachines
nss-resolve
nss-systemd
oom tree-wide: Use log_setup() everywhere 2024-04-25 17:06:43 +02:00
partition repart: Fix unused variable warning 2024-06-03 15:18:01 +09:00
path tree-wide: Use log_setup() everywhere 2024-04-25 17:06:43 +02:00
pcrextend tpm2-util: add generic wrapper tpm2_context_new_or_warn() that wrpas tpm2_context_new and logs about errors 2024-04-22 12:40:09 +02:00
pcrlock pcrlock: tweak error messages when we are not looking at a TPM2 event log 2024-05-30 10:13:39 +02:00
portable portable: Don't fail if /etc/resolv.conf doesn't exist 2024-04-25 17:06:42 +02:00
pstore
quotacheck
random-seed
rc-local-generator
remount-fs
reply-password
resolve resolved-dns-stream: pass the right error variable 2024-05-07 13:23:24 +02:00
rfkill
rpm
run run: do not pass the pty slave fd to transient service in a machine 2024-06-06 20:37:39 +01:00
run-generator
shared tpm2-util: tighten rules on the nvindex handle range we allocate from 2024-06-11 22:40:23 +01:00
shutdown shutdown: explicitly close watchdog with disarm=false before we destroy watchdog resources 2024-05-29 17:42:02 +02:00
sleep sleep,home: clean up logs for session freezer a bit 2024-05-30 21:51:48 +08:00
socket-activate tree-wide: Use log_setup() everywhere 2024-04-25 17:06:43 +02:00
socket-proxy tree-wide: Use log_setup() everywhere 2024-04-25 17:06:43 +02:00
ssh-generator meson: don't put a symlink pointing to '20-systemd-ssh-proxy.conf' in /etc in all cases 2024-05-27 17:20:26 +02:00
stdio-bridge tree-wide: Use log_setup() everywhere 2024-04-25 17:06:43 +02:00
storagetm tree-wide: Use log_setup() everywhere 2024-04-25 17:06:43 +02:00
sulogin-shell
sysctl
sysext tree-wide: fix type confusion around parsing JSON booleans 2024-05-02 19:31:08 +02:00
system-update-generator
systemctl systemctl: fix "applying zero offset to null pointer" UBSan error 2024-05-15 20:24:03 +02:00
systemd sd-radv: allow to configure reachable time in RA header 2024-04-22 18:40:10 +09:00
sysupdate tree-wise: several cleanups for logging 2024-05-01 04:41:06 +09:00
sysusers gcrypt: dlopenify for libsystemd 2024-04-03 11:50:25 +01:00
sysv-generator
test core/socket: allow MPTCP protocol 2024-06-12 00:14:08 +01:00
timedate timedate: handle gracefully if RTC lost time because of power loss 2024-04-20 09:15:07 +09:00
timesync gcrypt: dlopenify for libsystemd 2024-04-03 11:50:25 +01:00
tmpfiles tmpfiles: improve warning message and use O_NOCTTY 2024-05-28 21:58:30 +02:00
tpm2-setup tpm2-util: add generic wrapper tpm2_context_new_or_warn() that wrpas tpm2_context_new and logs about errors 2024-04-22 12:40:09 +02:00
tty-ask-password-agent
udev udev: rewrite token_match_attr() to make it easier for Coverity to understand 2024-06-12 00:07:33 +01:00
ukify treewide: fix a few typos in NEWS, docs, comments, and log messages 2024-04-27 12:11:13 +02:00
update-done
update-utmp use FOREACH_ELEMENT 2024-04-18 17:39:34 +02:00
user-sessions
userdb meson: don't put a symlink pointing to '20-systemd-userdb.conf' in /etc in all cases 2024-05-27 17:20:55 +02:00
varlinkctl varlinkctl: when operating in --more mode, fail correcly on Varlink method error 2024-05-22 22:08:28 +02:00
vconsole core,vconsole-setup: treat locking failure as non-fatal 2024-05-14 23:22:41 +02:00
veritysetup
version
vmspawn vmspawn: use openpt_allocate where appropriate 2024-05-19 09:18:48 +08:00
volatile-root
vpick tree-wide: Use log_setup() everywhere 2024-04-25 17:06:43 +02:00
xdg-autostart-generator