1
0
mirror of https://github.com/systemd/systemd.git synced 2024-12-22 17:35:35 +03:00
The systemd System and Service Manager
Go to file
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
.clusterfuzzlite ci: unpin CFLite 2022-04-26 09:13:57 +00:00
.github mkosi: update to latest 2024-06-10 14:17:15 +01:00
.semaphore semaphore: use variable for Salsa repo URL 2024-05-20 13:14:50 +01:00
catalog man: update links to catalog docs 2024-05-28 14:46:44 +02:00
coccinelle introduce FOREACH_ELEMENT 2024-04-18 17:39:34 +02:00
docs docs: fix escaped $ in CGroup Interface 2024-06-03 16:30:06 +01:00
factory man: don't suggest using pam_unix.so's use_authtok switch 2024-01-17 23:59:05 +00:00
hwdb.d Update hwdb 2024-06-11 22:40:37 +01:00
LICENSES tree-wide: drop several remaining license headers 2024-04-08 10:14:50 +02:00
man core/socket: allow MPTCP protocol 2024-06-12 00:14:08 +01:00
mime creds-util: add a concept of "user-scoped" credentials 2024-01-30 17:07:47 +01:00
mkosi.conf.d mkosi: Sanitizer improvements 2024-05-31 17:26:13 +02:00
mkosi.images mkosi: install dlopen optional dependencies for debian/ubuntu builds 2024-06-10 20:11:16 +01:00
mkosi.profiles mkosi: Introduce particle profile 2024-04-30 10:46:18 +02:00
modprobe.d modprobe: set 'ifb numifbs=0' to avoid autocreating ifb0 2024-01-12 23:24:54 +00:00
network Revert "network: add "mac" to alternatives name policy by default" (#33227) 2024-06-06 17:35:46 +01:00
pkg mkosi: Replace submodules with our own thing 2024-05-30 19:31:32 +02:00
po po: update and correction translation (Chinese (Traditional) (zh_TW)) 2024-06-06 09:55:26 +09:00
presets presets: Don't enable systemd-homed-firstboot.service by default 2024-06-08 11:29:55 +01:00
rules.d rules: Limit the number of device units generated for serial ttys 2024-06-12 00:09:26 +01:00
shell-completion shell-completion: update bash completion for networkctl 2024-06-11 10:35:55 +01:00
src core/socket: allow MPTCP protocol 2024-06-12 00:14:08 +01:00
sysctl.d sysctl.d: Fix pid_max comment 2023-10-31 13:07:49 +01:00
sysusers.d sysusers: simplify meson config 2024-05-14 20:46:24 +02:00
test core/socket: allow MPTCP protocol 2024-06-12 00:14:08 +01:00
tmpfiles.d 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
tools tools/update-distro-hash: add a helper script to sync submodule 2024-06-06 10:02:23 +02:00
units presets: Don't enable systemd-homed-firstboot.service by default 2024-06-08 11:29:55 +01:00
xorg xorg/50-systemd-user: add a full license header 2021-10-01 14:45:00 +02:00
.clang-format Improve the formatting by adding AlignArrayOfStructures and setting it to Right(right justify) 2024-03-06 15:24:23 +01:00
.ctags editors: Prevent ctags from following symlinks 2019-02-15 11:01:20 -08:00
.dir-locals.el scripts: use 4 space indentation 2019-04-12 08:30:31 +02:00
.editorconfig editorconfig: add NEWS whitespace configuration 2023-10-26 22:41:03 +01:00
.gitattributes Mark all base64 files as generated 2023-08-16 12:49:45 +02:00
.gitignore gitignore: Ignore /pkg/ instead of pkg/ (#33119) 2024-05-31 14:06:07 +08:00
.gitmodules mkosi: Replace submodules with our own thing 2024-05-30 19:31:32 +02:00
.mailmap mailmap: "reduce contributor count by 13" 2023-08-16 12:49:42 +02:00
.packit.yml Revert "packit: temporarily build systemd without BPF stuff" 2024-02-11 16:45:03 +01:00
.pylintrc Add .pylintrc to globally suppress warnings we don't really care about 2023-08-10 18:13:29 +02:00
.vimrc vimrc: explicitly set shiftwidth for the C file type 2023-09-18 13:11:45 +02:00
.ycm_extra_conf.py ycm: add doc string for all the functions in configuration file 2017-11-29 13:21:49 -07:00
LICENSE.GPL2 relicense to LGPLv2.1 (with exceptions) 2012-04-12 00:24:39 +02:00
LICENSE.LGPL2.1 licence: remove references to old FSF address 2012-12-17 11:41:31 +01:00
meson_options.txt test: Add mkosi-based integration test runner 2024-04-18 16:26:38 +01:00
meson.build meson: Pass -Wno-deprecated-declarations when detecting libcryptsetup functions 2024-06-03 12:52:48 +02:00
meson.version meson: update version to 257~devel 2024-06-11 22:55:29 +01:00
mkosi.conf ci: Switch to Ubuntu 24.04 2024-06-08 12:33:32 +02:00
NEWS NEWS: add placeholder for 257 2024-06-11 22:55:03 +01:00
README README: update link for backports 2024-05-28 14:48:56 +02:00
README.md README.md: link bug bounty program 2024-04-11 12:58:53 +02:00
TODO various: update links to more wiki pages 2024-05-28 14:48:53 +02:00

Systemd

System and Service Manager

Semaphore CI 2.0 Build Status
Coverity Scan Status
OSS-Fuzz Status
CIFuzz
CII Best Practices
CentOS CI - CentOS 9
CentOS CI - Arch
CentOS CI - Arch (sanitizers)
Fossies codespell report
Weblate
Coverage Status
Packaging status
OpenSSF Scorecard

Details

Most documentation is available on systemd's web site.

Assorted, older, general information about systemd can be found in the systemd Wiki.

Information about build requirements is provided in the README file.

Consult our NEWS file for information about what's new in the most recent systemd versions.

Please see the Code Map for information about this repository's layout and content.

Please see the Hacking guide for information on how to hack on systemd and test your modifications.

Please see our Contribution Guidelines for more information about filing GitHub Issues and posting GitHub Pull Requests.

When preparing patches for systemd, please follow our Coding Style Guidelines.

If you are looking for support, please contact our mailing list, join our IRC channel #systemd on libera.chat or Matrix channel

Stable branches with backported patches are available in the stable repo.

We have a security bug bounty program sponsored by the Sovereign Tech Fund hosted on YesWeHack