linux/include/uapi/linux
Matthieu Baerts (NGI0) 539f6b9de3 mptcp: pm: in-kernel: add laminar endpoints
Currently, upon the reception of an ADD_ADDR (and when the fullmesh flag
is not used), the in-kernel PM will create new subflows using the local
address the routing configuration will pick.

It would be easier to pick local addresses from a selected list of
endpoints, and use it only once, than relying on routing rules.

Use case: both the client (C) and the server (S) have two addresses (a
and b). The client establishes the connection between C(a) and S(a).
Once established, the server announces its additional address S(b). Once
received, the client connects to it using its second address C(b).
Compared to a situation without the 'laminar' endpoint for C(b), the
client didn't use this address C(b) to establish a subflow to the
server's primary address S(a). So at the end, we have:

   C        S
  C(a) --- S(a)
  C(b) --- S(b)

In case of a 3rd address on each side (C(c) and S(c)), upon the
reception of an ADD_ADDR with S(c), the client should not pick C(b)
because it has already been used. C(c) should then be used.

Note that this situation is currently possible if C doesn't add any
endpoint, but configure the routing in order to pick C(b) for the route
to S(b), and pick C(c) for the route to S(c). That doesn't sound very
practical because it means knowing in advance the IP addresses that
will be used and announced by the server.

'laminar', like the idea of laminar flows: the different subflows don't
mix with each other on an endpoint, unlike the "turbulent" way traffic
is mixed by 'fullmesh'.

In the code, the new endpoint type is added. Similar to the other
subflow types, an MPTCP_INFO counter is added. While at it, hole are now
commented in struct mptcp_info, to remember next time that these holes
can no longer be used.

Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/503
Reviewed-by: Mat Martineau <martineau@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Link: https://patch.msgid.link/20250925-net-next-mptcp-c-flag-laminar-v1-15-ad126cc47c6b@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2025-09-26 17:44:05 -07:00
..
android
byteorder
caif
can can: netlink: document which symbols are FD specific 2025-09-24 17:09:44 +02:00
cifs
counter
dvb
genwqe
hdlc
hsi
iio
io_uring io_uring/mock: add trivial poll handler 2025-07-02 08:10:26 -06:00
isdn
media media: pisp_be: Use clamp() and define max sizes 2025-07-03 09:25:01 +02:00
misc
mmc
netfilter netfilter: nft_meta_bridge: introduce NFT_META_BRI_IIFHWADDR support 2025-09-11 15:40:55 +02:00
netfilter_arp
netfilter_bridge
netfilter_ipv4
netfilter_ipv6
nfsd
raid md: keep recovery_cp in mdp_superblock_s 2025-08-16 08:47:38 +08:00
sched
spi
sunrpc
surface_aggregator
tc_act
tc_ematch
usb
a.out.h
acct.h
acrn.h
adb.h
adfs_fs.h
affs_hardblocks.h
agpgart.h
aio_abi.h
am437x-vpfe.h
amt.h
apm_bios.h
arcfb.h
arm_sdei.h
aspeed-lpc-ctrl.h
aspeed-p2a-ctrl.h
aspeed-video.h
atalk.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_tcp.h
atm_zatm.h
atm.h
atmapi.h
atmarp.h
atmbr2684.h
atmclip.h
atmdev.h
atmioc.h
atmlec.h
atmmpc.h
atmppp.h
atmsap.h
atmsvc.h
audit.h
auto_dev-ioctl.h
auto_fs.h
auto_fs4.h
auxvec.h
ax25.h
batadv_packet.h
batman_adv.h
baycom.h
bcm933xx_hcs.h
bfs_fs.h
binfmts.h
bits.h uapi: bitops: use UAPI-safe variant of BITS_PER_LONG again (2) 2025-07-08 10:23:13 -04:00
blk-crypto.h
blkdev.h
blkpg.h
blktrace_api.h
blkzoned.h
bpf_common.h
bpf_perf_event.h
bpf.h bpf: Add struct bpf_token_info 2025-07-16 18:38:05 -07:00
bpqether.h
bsg.h
bt-bmc.h
btf.h
btrfs_tree.h
btrfs.h btrfs: defrag: add flag to force no-compression 2025-07-22 01:13:03 +02:00
cachefiles.h
can.h
capability.h uapi: fix broken link in linux/capability.h 2025-07-04 19:21:53 -05:00
capi.h
cciss_defs.h
cciss_ioctl.h
ccs.h
cdrom.h
cec-funcs.h
cec.h
cfm_bridge.h
cgroupstats.h
chio.h
close_range.h
cn_proc.h
coda.h
coff.h
comedi.h
connector.h
const.h
coredump.h coredump: allow for flexible coredump handling 2025-06-12 14:00:18 +02:00
coresight-stm.h
counter.h
cramfs_fs.h
cryptouser.h
cuda.h
cxl_mem.h
cyclades.h
cycx_cfm.h
dcbnl.h
dccp.h
devlink.h devlink: Make health reporter burst period configurable 2025-08-26 17:24:16 -07:00
dlm_device.h
dlm_plock.h
dlm.h
dlmconstants.h
dm-ioctl.h
dm-log-userspace.h
dma-buf.h
dma-heap.h
dns_resolver.h
dpll.h dpll: add reference-sync netlink attribute 2025-06-27 16:38:02 -07:00
dqblk_xfs.h
dw100.h
edd.h
efs_fs_sb.h
elf-em.h
elf-fdpic.h
elf.h
errno.h
errqueue.h
erspan.h
ethtool_netlink_generated.h ethtool: add FEC bins histogram report 2025-09-26 16:49:18 -07:00
ethtool_netlink.h netlink: specs: add the multicast group name to spec 2025-06-25 15:24:13 -07:00
ethtool.h net: ethtool: support including Flow Label in the flow hash for RSS 2025-08-14 11:40:13 +02:00
eventfd.h
eventpoll.h
exfat.h
ext4.h
f2fs.h
fadvise.h
falloc.h fs: introduce FALLOC_FL_WRITE_ZEROES to fallocate 2025-06-23 12:45:13 +02:00
fanotify.h
fb.h
fcntl.h uapi/fcntl: add FD_PIDFS_ROOT 2025-06-24 16:58:42 +02:00
fd.h
fdreg.h
fib_rules.h
fiemap.h
filter.h
firewire-cdev.h
firewire-constants.h
fou.h
fpga-dfl.h
fs.h vfs-6.17-rc1.fileattr 2025-07-28 15:24:14 -07:00
fscrypt.h
fsi.h
fsl_hypervisor.h
fsl_mc.h
fsmap.h
fsverity.h
fuse.h
futex.h
gameport.h
gen_stats.h
genetlink.h
gfs2_ondisk.h
gpio.h
gsmmux.h
gtp.h
handshake.h net/handshake: Add new parameter 'HANDSHAKE_A_ACCEPT_KEYRING' 2025-07-08 15:31:44 +02:00
hash_info.h
hdlc.h
hdlcdrv.h
hdreg.h
hid.h
hiddev.h
hidraw.h
hpet.h
hsr_netlink.h
hw_breakpoint.h
hyperv.h
i2c-dev.h
i2c.h i2c: Clarify behavior of I2C_M_RD flag 2025-07-14 09:15:58 +02:00
i2o-dev.h
i8k.h
icmp.h
icmpv6.h
idxd.h
if_addr.h
if_addrlabel.h
if_alg.h
if_arcnet.h
if_arp.h
if_bonding.h
if_bridge.h net: bridge: Introduce UAPI for BR_BOOLOPT_FDB_LOCAL_VLAN_0 2025-09-11 19:02:50 -07:00
if_eql.h
if_ether.h
if_fc.h
if_fddi.h
if_hippi.h
if_infiniband.h
if_link.h rtnetlink: add needed_{head,tail}room attributes 2025-09-19 17:21:55 -07:00
if_ltalk.h
if_macsec.h
if_packet.h
if_phonet.h
if_plip.h
if_ppp.h
if_pppol2tp.h
if_pppox.h
if_slip.h
if_team.h
if_tun.h tun: enable gso over UDP tunnel support. 2025-07-08 18:07:26 +02:00
if_tunnel.h
if_vlan.h
if_x25.h
if_xdp.h net: xsk: introduce XDP_MAX_TX_SKB_BUDGET setsockopt 2025-07-10 14:48:29 +02:00
if.h
ife.h
igmp.h
ila.h
in_route.h
in.h
in6.h uapi: in6: restore visibility of most IPv6 socket options 2025-06-10 14:41:14 -07:00
inet_diag.h
inotify.h
input-event-codes.h Input: add keycode for performance mode key 2025-08-05 13:51:10 -07:00
input.h HID: core: Add bus define for SoundWire bus 2025-06-20 11:52:06 +01:00
io_uring.h io_uring/net: Allow to do vectorized send 2025-07-30 08:23:04 -06:00
ioam6_genl.h
ioam6_iptunnel.h
ioam6.h
ioctl.h
iommufd.h iommufd: Destroy vdevice on idevice destroy 2025-07-18 17:33:08 -03:00
ioprio.h
ip_vs.h
ip.h
ip6_tunnel.h
ipc.h
ipmi_bmc.h
ipmi_msgdefs.h
ipmi_ssif_bmc.h
ipmi.h
ipsec.h
ipv6_route.h
ipv6.h ipv6: add force_forwarding sysctl to enable per-interface forwarding 2025-07-25 13:06:19 -07:00
irqnr.h
iso_fs.h
isst_if.h
ivtv.h
ivtvfb.h
jffs2.h
joystick.h
kcm.h
kcmp.h
kcov.h
kd.h
kdev_t.h
kernel-page-flags.h
kernel.h
kernelcapi.h
kexec.h kexec: enable CMA based contiguous allocation 2025-08-02 12:01:38 -07:00
keyboard.h
keyctl.h
kfd_ioctl.h
kfd_sysfs.h
kvm_para.h
kvm.h KVM/arm64 changes for 6.17, round #1 2025-07-29 12:27:40 -04:00
l2tp.h
landlock.h
libc-compat.h
limits.h
lirc.h
llc.h
loadpin.h
lockd_netlink.h
loop.h
lp.h
lsm.h
lwtunnel.h
magic.h
major.h
map_to_7segment.h
map_to_14segment.h
matroxfb.h
max2175.h
mctp.h net: mctp: add gateway routing support 2025-07-08 12:39:24 +02:00
mdio.h
media-bus-format.h
media.h
mei_uuid.h
mei.h
membarrier.h
memfd.h
mempolicy.h
mii.h
minix_fs.h
mman.h
mmtimer.h
module.h
mount.h
mpls_iptunnel.h
mpls.h
mptcp_pm.h mptcp: pm: netlink: only add server-side attr when true 2025-09-22 11:51:24 -07:00
mptcp.h mptcp: pm: in-kernel: add laminar endpoints 2025-09-26 17:44:05 -07:00
mqueue.h
mroute.h
mroute6.h
mrp_bridge.h
msdos_fs.h
msg.h
mshv.h
mtio.h
nbd-netlink.h
nbd.h
ncsi.h
ndctl.h
neighbour.h neighbor: Add NTF_EXT_VALIDATED flag for externally validated entries 2025-06-30 18:14:23 -07:00
net_dropmon.h uapi: net_dropmon: drop unused is_drop_point_hw macro 2025-06-25 15:35:20 -07:00
net_namespace.h
net_shaper.h
net_tstamp.h
net.h
netconf.h ipv6: add force_forwarding sysctl to enable per-interface forwarding 2025-07-25 13:06:19 -07:00
netdev.h net: define an enum for the napi threaded state 2025-07-24 18:34:55 -07:00
netdevice.h
netfilter_arp.h
netfilter_bridge.h
netfilter_ipv4.h
netfilter_ipv6.h
netfilter.h
netlink_diag.h
netlink.h
netrom.h
nexthop.h
nfc.h
nfs_fs.h
nfs_idmap.h
nfs_mount.h
nfs.h
nfs2.h
nfs3.h
nfs4_mount.h
nfs4.h
nfsacl.h
nfsd_netlink.h
nilfs2_api.h
nilfs2_ondisk.h
nitro_enclaves.h
nl80211-vnd-intel.h
nl80211.h wifi: cfg80211: correctly implement and validate S1G chandef 2025-09-19 11:55:56 +02:00
npcm-video.h
nsfs.h mntns: use stable inode number for initial mount ns 2025-06-11 11:59:08 +02:00
nsm.h
ntsync.h
nubus.h
nvme_ioctl.h
nvram.h
omap3isp.h
omapfb.h
oom.h
openat2.h
openvswitch.h net: openvswitch: allow providing upcall pid for the 'execute' command 2025-07-07 14:30:39 -07:00
ovpn.h
packet_diag.h
papr_pdsm.h
param.h
parport.h
patchkey.h
pci_regs.h PCI/IOV: Restore VF resizable BAR state after reset 2025-07-14 14:58:13 -05:00
pci.h
pcitest.h misc: pci_endpoint_test: Add doorbell test case 2025-07-24 16:51:46 -05:00
perf_event.h
personality.h
pfkeyv2.h
pfrut.h ACPI: pfr_update: Fix the driver update version check 2025-08-20 15:30:36 +02:00
pg.h
phantom.h
phonet.h
pidfd.h uapi/fcntl: mark range as reserved 2025-06-24 15:50:06 +02:00
pkt_cls.h
pkt_sched.h sched: Dump configuration and statistics of dualpi2 qdisc 2025-07-23 17:52:07 -07:00
pktcdvd.h
pmu.h
poll.h
posix_acl_xattr.h
posix_acl.h
posix_types.h
ppdev.h
ppp_defs.h
ppp-comp.h
ppp-ioctl.h
pps_gen.h
pps.h
pr.h
prctl.h arm64 updates for 6.17: 2025-07-29 20:21:54 -07:00
psample.h
psci.h
psp-dbc.h
psp-sev.h
psp.h net: psp: add socket security association code 2025-09-18 12:32:06 +02:00
ptp_clock.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2025-09-25 11:00:59 -07:00
ptrace.h
pwm.h pwm: Add support for pwmchip devices for faster and easier userspace access 2025-07-07 08:39:33 +02:00
qemu_fw_cfg.h
qnx4_fs.h
qnxtypes.h
qrtr.h
quota.h
radeonfb.h
random.h
rds.h
reboot.h
remoteproc_cdev.h
resource.h
rfkill.h
rio_cm_cdev.h
rio_mport_cdev.h
rkisp1-config.h media: rockchip: rkisp1: Add support for Wide Dynamic Range 2025-06-18 09:21:58 +02:00
romfs_fs.h
rose.h
route.h
rpl_iptunnel.h
rpl.h
rpmsg_types.h
rpmsg.h
rseq.h
rtc.h
rtnetlink.h
rxrpc.h
scc.h
sched.h
scif_ioctl.h
screen_info.h
sctp.h
seccomp.h
securebits.h
sed-opal.h
seg6_genl.h
seg6_hmac.h
seg6_iptunnel.h
seg6_local.h
seg6.h
selinux_netlink.h
sem.h
serial_core.h
serial_reg.h
serial.h
serio.h
sev-guest.h
shm.h
signal.h
signalfd.h
smc_diag.h
smc.h
smiapp.h
snmp.h tcp: add LINUX_MIB_BEYOND_WINDOW 2025-07-14 18:41:42 -07:00
sock_diag.h
socket.h
sockios.h
sonet.h
sonypi.h
sound.h
soundcard.h
stat.h
stddef.h uapi: wrap compiler_types.h in an ifdef instead of the implicit strip 2025-08-28 13:06:48 +02:00
stm.h
string.h
suspend_ioctls.h
swab.h
switchtec_ioctl.h
sync_file.h
synclink.h
sysctl.h ipv6: add force_forwarding sysctl to enable per-interface forwarding 2025-07-25 13:06:19 -07:00
sysinfo.h
target_core_user.h
taskstats.h
tcp_metrics.h
tcp.h tcp: accecn: AccECN option failure handling 2025-09-18 08:47:52 +02:00
tdx-guest.h
tee.h
termios.h
thermal.h
thp7312.h
time_types.h
time.h time: Introduce auxiliary POSIX clocks 2025-06-19 14:28:22 +02:00
timerfd.h
times.h
timex.h
tiocl.h
tipc_config.h
tipc_netlink.h
tipc_sockets_diag.h
tipc.h
tls.h
toshiba.h
tps6594_pfsm.h
trace_mmap.h
tty_flags.h
tty.h
types.h
ublk_cmd.h ublk: allow UBLK_IO_(UN)REGISTER_IO_BUF on any task 2025-06-30 20:13:42 -06:00
udf_fs_i.h
udmabuf.h
udp.h
uhid.h
uinput.h
uio.h
uleds.h
ultrasound.h
um_timetravel.h
un.h
unistd.h
unix_diag.h
usbdevice_fs.h
usbip.h
user_events.h
userfaultfd.h
userio.h
utime.h
utsname.h
uuid.h
uvcvideo.h
v4l2-common.h
v4l2-controls.h media: rkisp1: Add RKISP1_CID_SUPPORTED_PARAMS_BLOCKS control 2025-06-18 09:21:58 +02:00
v4l2-dv-timings.h
v4l2-mediabus.h
v4l2-subdev.h
vbox_err.h
vbox_vmmdev_types.h
vboxguest.h
vdpa.h
vduse.h uapi: vduse: fix typo in comment 2025-09-21 17:44:20 -04:00
vesa.h
veth.h
vfio_ccw.h
vfio_zdev.h
vfio.h vfio/pci: Do vf_token checks for VFIO_DEVICE_BIND_IOMMUFD 2025-08-05 15:41:14 -06:00
vhost_types.h vhost-net: allow configuring extended features 2025-07-08 18:05:23 +02:00
vhost.h vhost: Fix ioctl # for VHOST_[GS]ET_FORK_FROM_OWNER 2025-08-26 03:38:19 -04:00
videodev2.h media: uvcvideo: Introduce V4L2_META_FMT_UVC_MSXU_1_5 2025-07-11 19:27:30 +02:00
virtio_9p.h
virtio_balloon.h
virtio_blk.h
virtio_bt.h
virtio_config.h
virtio_console.h
virtio_crypto.h
virtio_fs.h
virtio_gpio.h
virtio_gpu.h
virtio_i2c.h
virtio_ids.h
virtio_input.h
virtio_iommu.h
virtio_mem.h
virtio_mmio.h
virtio_net.h net: implement virtio helpers to handle UDP GSO tunneling. 2025-07-08 18:05:47 +02:00
virtio_pci.h
virtio_pcidev.h
virtio_pmem.h
virtio_ring.h
virtio_rng.h
virtio_rtc.h virtio_rtc: Add RTC class driver 2025-05-27 10:27:54 -04:00
virtio_scmi.h
virtio_scsi.h
virtio_snd.h
virtio_types.h
virtio_vsock.h
vm_sockets_diag.h
vm_sockets.h vsock/uapi: fix linux/vm_sockets.h userspace compilation errors 2025-06-24 17:12:59 -07:00
vmclock-abi.h
vmcore.h
vsockmon.h
vt.h Revert "tty: vt: use _IO() to define ioctl numbers" 2025-08-01 10:42:22 +02:00
vtpm_proxy.h
wait.h
watch_queue.h
watchdog.h
wireguard.h wireguard: allowedips: add WGALLOWEDIP_F_REMOVE_ME flag 2025-05-27 09:06:19 +02:00
wireless.h
wmi.h
wwan.h
x25.h
xattr.h
xdp_diag.h
xfrm.h
xilinx-v4l2-controls.h
zorro_ids.h
zorro.h