aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Paasch <cpaasch@apple.com>2023-08-22 09:18:31 -0700
committerAleksandr Nogikh <nogikh@google.com>2023-09-04 10:11:42 +0000
commitabdf9b3bbffdc55f63021393df30df4ff7a446cf (patch)
treec734e826d8a3c111ae4a85c012df21af60c58444
parentc5dc938a6bb38a9ccb20990ed05e2a80f7161ba3 (diff)
sys/linux: add more coverage for MPTCP
New netlink command has been added to MPTCP as well as a few getsockopt. Add the necessary syskaller instructions.
-rw-r--r--sys/linux/bpf.txt2
-rw-r--r--sys/linux/dev_msm.txt.const19
-rw-r--r--sys/linux/filesystem.txt.const4
-rw-r--r--sys/linux/fs_fuse.txt.const2
-rw-r--r--sys/linux/io_uring.txt.const5
-rw-r--r--sys/linux/socket_alg.txt.const2
-rw-r--r--sys/linux/socket_inet_tcp.txt18
-rw-r--r--sys/linux/socket_inet_tcp.txt.const5
-rw-r--r--sys/linux/socket_netlink_generic_mptcp.txt10
-rw-r--r--sys/linux/socket_netlink_generic_mptcp.txt.const10
-rw-r--r--sys/linux/sys.txt1
-rw-r--r--sys/linux/sys.txt.const4
12 files changed, 63 insertions, 19 deletions
diff --git a/sys/linux/bpf.txt b/sys/linux/bpf.txt
index a1dc7b1c6..763f18338 100644
--- a/sys/linux/bpf.txt
+++ b/sys/linux/bpf.txt
@@ -947,4 +947,4 @@ bpf_prog_query_attach_type = BPF_CGROUP_INET_INGRESS, BPF_CGROUP_INET_EGRESS, BP
bpf_open_flags = BPF_F_RDONLY, BPF_F_WRONLY
bpf_stat_types = BPF_STATS_RUN_TIME
bpf_core_relo_kind = BPF_CORE_FIELD_BYTE_OFFSET, BPF_CORE_FIELD_BYTE_SIZE, BPF_CORE_FIELD_EXISTS, BPF_CORE_FIELD_SIGNED, BPF_CORE_FIELD_LSHIFT_U64, BPF_CORE_FIELD_RSHIFT_U64, BPF_CORE_TYPE_ID_LOCAL, BPF_CORE_TYPE_ID_TARGET, BPF_CORE_TYPE_EXISTS, BPF_CORE_TYPE_SIZE, BPF_CORE_ENUMVAL_EXISTS, BPF_CORE_ENUMVAL_VALUE, BPF_CORE_TYPE_MATCHES
-bpf_obj_get_flags = BPF_F_PATH_FD, bpf_open_flags
+bpf_obj_get_flags = BPF_F_PATH_FD, BPF_F_RDONLY, BPF_F_WRONLY
diff --git a/sys/linux/dev_msm.txt.const b/sys/linux/dev_msm.txt.const
index c621e35e9..04bc55762 100644
--- a/sys/linux/dev_msm.txt.const
+++ b/sys/linux/dev_msm.txt.const
@@ -8,7 +8,7 @@ DRM_IOCTL_MSM_GEM_MADVISE = 3222037576
DRM_IOCTL_MSM_GEM_NEW = 3222299714
DRM_IOCTL_MSM_GEM_SUBMIT = 3225969734
DRM_IOCTL_MSM_GET_PARAM = 3222824000
-DRM_IOCTL_MSM_SET_PARAM = 3222824001
+DRM_IOCTL_MSM_SET_PARAM = 1075340353, mips64le:ppc64le:2149082177
DRM_IOCTL_MSM_SUBMITQUEUE_CLOSE = 1074029643, mips64le:ppc64le:2147771467
DRM_IOCTL_MSM_SUBMITQUEUE_NEW = 3222037578
DRM_IOCTL_MSM_SUBMITQUEUE_QUERY = 1075340364, mips64le:ppc64le:2149082188
@@ -22,30 +22,31 @@ MSM_BO_WC = 131072
MSM_INFO_GET_IOVA = 1
MSM_INFO_GET_NAME = 3
MSM_INFO_GET_OFFSET = 0
-MSM_INFO_SET_NAME = 2
MSM_INFO_SET_IOVA = 4
+MSM_INFO_SET_NAME = 2
MSM_MADV_DONTNEED = 1
MSM_MADV_WILLNEED = 0
MSM_PARAM_CHIP_ID = 3
+MSM_PARAM_CMDLINE = 13
+MSM_PARAM_COMM = 12
MSM_PARAM_FAULTS = 9
MSM_PARAM_GMEM_BASE = 6
-MSM_PARAM_PRIORITIES = 7
MSM_PARAM_GMEM_SIZE = 2
MSM_PARAM_GPU_ID = 1
MSM_PARAM_MAX_FREQ = 4
MSM_PARAM_NR_RINGS = 7
MSM_PARAM_PP_PGTABLE = 8
+MSM_PARAM_PRIORITIES = 7
MSM_PARAM_SUSPENDS = 10
MSM_PARAM_SYSPROF = 11
-MSM_PARAM_COMM = 12
-MSM_PARAM_CMDLINE = 13
-MSM_PARAM_VA_START = 14
-MSM_PARAM_VA_SIZE = 15
MSM_PARAM_TIMESTAMP = 5
+MSM_PARAM_VA_SIZE = 15
+MSM_PARAM_VA_START = 14
MSM_PIPE_2D0 = 1
MSM_PIPE_2D1 = 2
MSM_PIPE_3D0 = 16
MSM_PIPE_NONE = 0
+MSM_PREP_BOOST = 8
MSM_PREP_NOSYNC = 4
MSM_PREP_READ = 1
MSM_PREP_WRITE = 2
@@ -59,13 +60,13 @@ MSM_SUBMIT_CMD_CTX_RESTORE_BUF = 3
MSM_SUBMIT_CMD_IB_TARGET_BUF = 2
MSM_SUBMIT_FENCE_FD_IN = 1073741824
MSM_SUBMIT_FENCE_FD_OUT = 536870912
+MSM_SUBMIT_FENCE_SN_IN = 33554432
MSM_SUBMIT_NO_IMPLICIT = 2147483648
MSM_SUBMIT_SUDO = 268435456
-MSM_WAIT_FENCE_BOOST = 1
-MSM_SUBMIT_FENCE_SN_IN = 33554432
MSM_SUBMIT_SYNCOBJ_IN = 134217728
MSM_SUBMIT_SYNCOBJ_OUT = 67108864
MSM_SUBMIT_SYNCOBJ_RESET = 1
+MSM_WAIT_FENCE_BOOST = 1
__MSM_MADV_PURGED = 2
__NR_ioctl = 54, amd64:16, arm64:riscv64:29, mips64le:5015
__NR_mmap = 90, 386:arm:192, amd64:9, arm64:riscv64:222, mips64le:5009
diff --git a/sys/linux/filesystem.txt.const b/sys/linux/filesystem.txt.const
index fbb91ee3a..4defa5144 100644
--- a/sys/linux/filesystem.txt.const
+++ b/sys/linux/filesystem.txt.const
@@ -25,14 +25,14 @@ MOUNT_ATTR_NOEXEC = 8
MOUNT_ATTR_NOSUID = 2
MOUNT_ATTR_RDONLY = 1
MOUNT_ATTR__ATIME = 112
+MOVE_MOUNT_BENEATH = 512
MOVE_MOUNT_F_AUTOMOUNTS = 2
MOVE_MOUNT_F_EMPTY_PATH = 4
MOVE_MOUNT_F_SYMLINKS = 1
+MOVE_MOUNT_SET_GROUP = 256
MOVE_MOUNT_T_AUTOMOUNTS = 32
MOVE_MOUNT_T_EMPTY_PATH = 64
MOVE_MOUNT_T_SYMLINKS = 16
-MOVE_MOUNT_SET_GROUP = 256
-MOVE_MOUNT_BENEATH = 512
MS_BIND = 4096
MS_DIRSYNC = 128
MS_I_VERSION = 8388608
diff --git a/sys/linux/fs_fuse.txt.const b/sys/linux/fs_fuse.txt.const
index dc1c77100..4be173c01 100644
--- a/sys/linux/fs_fuse.txt.const
+++ b/sys/linux/fs_fuse.txt.const
@@ -23,7 +23,7 @@ FUSE_FLOCK_LOCKS = 1024
FUSE_HANDLE_KILLPRIV = 524288
FUSE_HAS_IOCTL_DIR = 2048
FUSE_IOCTL_RETRY = 4
-FUSE_KERNEL_MINOR_VERSION = 38
+FUSE_KERNEL_MINOR_VERSION = 39
FUSE_KERNEL_VERSION = 7
FUSE_MAX_PAGES = 4194304
FUSE_MIN_READ_BUFFER = 8192
diff --git a/sys/linux/io_uring.txt.const b/sys/linux/io_uring.txt.const
index 79f7f89d5..df15f7b76 100644
--- a/sys/linux/io_uring.txt.const
+++ b/sys/linux/io_uring.txt.const
@@ -70,6 +70,9 @@ IORING_OP_UNLINKAT = 36
IORING_OP_WRITE = 23
IORING_OP_WRITEV = 2
IORING_OP_WRITE_FIXED = 5
+IORING_RECVSEND_FIXED_BUF = 4
+IORING_RECVSEND_POLL_FIRST = 1
+IORING_RECV_MULTISHOT = 2
IORING_REGISTER_BUFFERS = 0
IORING_REGISTER_BUFFERS2 = 15
IORING_REGISTER_BUFFERS_UPDATE = 16
@@ -99,8 +102,10 @@ IORING_SETUP_CLAMP = 16
IORING_SETUP_COOP_TASKRUN = 256
IORING_SETUP_CQE32 = 2048
IORING_SETUP_CQSIZE = 8
+IORING_SETUP_DEFER_TASKRUN = 8192
IORING_SETUP_IOPOLL = 1
IORING_SETUP_R_DISABLED = 64
+IORING_SETUP_SINGLE_ISSUER = 4096
IORING_SETUP_SQE128 = 1024
IORING_SETUP_SQPOLL = 2
IORING_SETUP_SQ_AFF = 4
diff --git a/sys/linux/socket_alg.txt.const b/sys/linux/socket_alg.txt.const
index c050a6242..038808dea 100644
--- a/sys/linux/socket_alg.txt.const
+++ b/sys/linux/socket_alg.txt.const
@@ -19,7 +19,7 @@ CRYPTO_ALG_NEED_FALLBACK = 256
CRYPTO_ALG_TESTED = 1024
CRYPTO_ALG_TYPE_AEAD = 3
CRYPTO_ALG_TYPE_AHASH = 15
-CRYPTO_ALG_TYPE_AKCIPHER = 13
+CRYPTO_ALG_TYPE_AKCIPHER = 6
CRYPTO_ALG_TYPE_CIPHER = 1
CRYPTO_ALG_TYPE_COMPRESS = 2
CRYPTO_ALG_TYPE_HASH = 14
diff --git a/sys/linux/socket_inet_tcp.txt b/sys/linux/socket_inet_tcp.txt
index b59c47e2f..3f4f360db 100644
--- a/sys/linux/socket_inet_tcp.txt
+++ b/sys/linux/socket_inet_tcp.txt
@@ -5,6 +5,7 @@
include <asm/ioctls.h>
include <linux/tcp.h>
+include <linux/mptcp.h>
include <net/tcp.h>
include <uapi/linux/sockios.h>
include <uapi/linux/tls.h>
@@ -12,7 +13,9 @@ include <uapi/linux/tls.h>
resource sock_tcp[sock_in]
socket$inet_tcp(domain const[AF_INET], type const[SOCK_STREAM], proto const[0]) sock_tcp
-socket$inet_mptcp(domain const[AF_INET], type const[SOCK_STREAM], proto const[IPPROTO_MPTCP]) sock_tcp
+
+resource sock_mptcp[sock_tcp]
+socket$inet_mptcp(domain const[AF_INET], type const[SOCK_STREAM], proto const[IPPROTO_MPTCP]) sock_mptcp
# From interface point of view SMC sockets seem to be the same as TCP.
socket$inet_smc(domain const[AF_SMC], type const[SOCK_STREAM], proto const[0]) sock_tcp
@@ -20,7 +23,9 @@ socket$inet_smc(domain const[AF_SMC], type const[SOCK_STREAM], proto const[0]) s
resource sock_tcp6[sock_in6]
socket$inet6_tcp(domain const[AF_INET6], type const[SOCK_STREAM], proto const[0]) sock_tcp6
-socket$inet6_mptcp(domain const[AF_INET6], type const[SOCK_STREAM], proto const[IPPROTO_MPTCP]) sock_tcp6
+
+resource sock_mptcp6[sock_tcp6]
+socket$inet6_mptcp(domain const[AF_INET6], type const[SOCK_STREAM], proto const[IPPROTO_MPTCP]) sock_mptcp6
# Generic TCP socket options
@@ -38,6 +43,15 @@ setsockopt$inet_tcp_buf(fd sock_tcp, level const[IPPROTO_TCP], optname flags[tcp
getsockopt$inet6_tcp_buf(fd sock_tcp6, level const[IPPROTO_TCP], optname flags[tcp_option_types_buf], optval buffer[out], optlen ptr[inout, len[optval, int32]])
setsockopt$inet6_tcp_buf(fd sock_tcp6, level const[IPPROTO_TCP], optname flags[tcp_option_types_buf], optval buffer[in], optlen len[optval])
+# Generic MPTCP socket options
+
+mptcp_option_types_buf = MPTCP_INFO, MPTCP_FULL_INFO, MPTCP_TCPINFO, MPTCP_SUBFLOW_ADDRS
+
+getsockopt$inet_mptcp_buf(fd sock_mptcp, level const[SOL_MPTCP], optname flags[mptcp_option_types_buf], optval buffer[out], optlen ptr[inout, len[optval, int32]])
+getsockopt$inet6_mptcp_buf(fd sock_mptcp6, level const[SOL_MPTCP], optname flags[mptcp_option_types_buf], optval buffer[out], optlen ptr[inout, len[optval, int32]])
+
+# Specific TCP socket options
+
getsockopt$inet_tcp_TCP_ZEROCOPY_RECEIVE(fd sock_tcp, level const[IPPROTO_TCP], optname const[TCP_ZEROCOPY_RECEIVE], optval ptr[in, tcp_zerocopy_receive], optlen ptr[inout, len[optval, int32]])
getsockopt$inet6_tcp_TCP_ZEROCOPY_RECEIVE(fd sock_tcp6, level const[IPPROTO_TCP], optname const[TCP_ZEROCOPY_RECEIVE], optval ptr[in, tcp_zerocopy_receive], optlen ptr[inout, len[optval, int32]])
diff --git a/sys/linux/socket_inet_tcp.txt.const b/sys/linux/socket_inet_tcp.txt.const
index 38324a93e..b5a15d87d 100644
--- a/sys/linux/socket_inet_tcp.txt.const
+++ b/sys/linux/socket_inet_tcp.txt.const
@@ -5,11 +5,16 @@ AF_INET6 = 10
AF_SMC = 43
IPPROTO_MPTCP = 262
IPPROTO_TCP = 6
+MPTCP_FULL_INFO = 4
+MPTCP_INFO = 1
+MPTCP_SUBFLOW_ADDRS = 3
+MPTCP_TCPINFO = 2
SIOCATMARK = 35077, mips64le:1074033415
SIOCINQ = 21531, mips64le:18047, ppc64le:1074030207
SIOCOUTQ = 21521, mips64le:29810, ppc64le:1074033779
SIOCOUTQNSD = 35147
SOCK_STREAM = 1, mips64le:2
+SOL_MPTCP = 284
TCPOPT_MSS = 2
TCPOPT_SACK_PERM = 4
TCPOPT_TIMESTAMP = 8
diff --git a/sys/linux/socket_netlink_generic_mptcp.txt b/sys/linux/socket_netlink_generic_mptcp.txt
index c0ef24711..8b6398536 100644
--- a/sys/linux/socket_netlink_generic_mptcp.txt
+++ b/sys/linux/socket_netlink_generic_mptcp.txt
@@ -19,11 +19,19 @@ sendmsg$MPTCP_PM_CMD_GET_ADDR(fd sock_nl_generic, msg ptr[in, msghdr_nl_mptcp[MP
sendmsg$MPTCP_PM_CMD_FLUSH_ADDRS(fd sock_nl_generic, msg ptr[in, msghdr_nl_mptcp[MPTCP_PM_CMD_FLUSH_ADDRS]], f flags[send_flags])
sendmsg$MPTCP_PM_CMD_SET_LIMITS(fd sock_nl_generic, msg ptr[in, msghdr_nl_mptcp[MPTCP_PM_CMD_SET_LIMITS]], f flags[send_flags])
sendmsg$MPTCP_PM_CMD_GET_LIMITS(fd sock_nl_generic, msg ptr[in, msghdr_nl_mptcp[MPTCP_PM_CMD_GET_LIMITS]], f flags[send_flags])
+sendmsg$MPTCP_PM_CMD_SET_FLAGS(fd sock_nl_generic, msg ptr[in, msghdr_nl_mptcp[MPTCP_PM_CMD_SET_FLAGS]], f flags[send_flags])
+sendmsg$MPTCP_PM_CMD_ANNOUNCE(fd sock_nl_generic, msg ptr[in, msghdr_nl_mptcp[MPTCP_PM_CMD_ANNOUNCE]], f flags[send_flags])
+sendmsg$MPTCP_PM_CMD_REMOVE(fd sock_nl_generic, msg ptr[in, msghdr_nl_mptcp[MPTCP_PM_CMD_REMOVE]], f flags[send_flags])
+sendmsg$MPTCP_PM_CMD_SUBFLOW_CREATE(fd sock_nl_generic, msg ptr[in, msghdr_nl_mptcp[MPTCP_PM_CMD_SUBFLOW_CREATE]], f flags[send_flags])
+sendmsg$MPTCP_PM_CMD_SUBFLOW_DESTROY(fd sock_nl_generic, msg ptr[in, msghdr_nl_mptcp[MPTCP_PM_CMD_SUBFLOW_DESTROY]], f flags[send_flags])
mptcp_pm_policy [
MPTCP_PM_ATTR_ADDR nlnest[MPTCP_PM_ATTR_ADDR, array[mptcp_pm_addr_policy, 0:7]]
MPTCP_PM_ATTR_RCV_ADD_ADDRS nlattr[MPTCP_PM_ATTR_RCV_ADD_ADDRS, int32[0:8]]
MPTCP_PM_ATTR_SUBFLOWS nlattr[MPTCP_PM_ATTR_SUBFLOWS, int32[0:8]]
+ MPTCP_PM_ATTR_TOKEN nlattr[MPTCP_PM_ATTR_TOKEN, int32]
+ MPTCP_PM_ATTR_LOC_ID nlattr[MPTCP_PM_ATTR_LOC_ID, int8]
+ MPTCP_PM_ATTR_ADDR_REMOTE nlnest[MPTCP_PM_ATTR_ADDR_REMOTE, array[mptcp_pm_addr_policy, 0:7]]
] [varlen]
mptcp_pm_addr_policy [
@@ -37,4 +45,4 @@ mptcp_pm_addr_policy [
] [varlen]
mptcp_families = AF_INET, AF_INET6
-mptcp_pm_addr_flags = MPTCP_PM_ADDR_FLAG_SIGNAL, MPTCP_PM_ADDR_FLAG_SUBFLOW, MPTCP_PM_ADDR_FLAG_BACKUP
+mptcp_pm_addr_flags = MPTCP_PM_ADDR_FLAG_SIGNAL, MPTCP_PM_ADDR_FLAG_SUBFLOW, MPTCP_PM_ADDR_FLAG_BACKUP, MPTCP_PM_ADDR_FLAG_FULLMESH, MPTCP_PM_ADDR_FLAG_IMPLICIT
diff --git a/sys/linux/socket_netlink_generic_mptcp.txt.const b/sys/linux/socket_netlink_generic_mptcp.txt.const
index 482e2278f..d9eb45808 100644
--- a/sys/linux/socket_netlink_generic_mptcp.txt.const
+++ b/sys/linux/socket_netlink_generic_mptcp.txt.const
@@ -10,15 +10,25 @@ MPTCP_PM_ADDR_ATTR_ID = 2
MPTCP_PM_ADDR_ATTR_IF_IDX = 7
MPTCP_PM_ADDR_ATTR_PORT = 5
MPTCP_PM_ADDR_FLAG_BACKUP = 4
+MPTCP_PM_ADDR_FLAG_FULLMESH = 8
+MPTCP_PM_ADDR_FLAG_IMPLICIT = 16
MPTCP_PM_ADDR_FLAG_SIGNAL = 1
MPTCP_PM_ADDR_FLAG_SUBFLOW = 2
MPTCP_PM_ATTR_ADDR = 1
+MPTCP_PM_ATTR_ADDR_REMOTE = 6
+MPTCP_PM_ATTR_LOC_ID = 5
MPTCP_PM_ATTR_RCV_ADD_ADDRS = 2
MPTCP_PM_ATTR_SUBFLOWS = 3
+MPTCP_PM_ATTR_TOKEN = 4
MPTCP_PM_CMD_ADD_ADDR = 1
+MPTCP_PM_CMD_ANNOUNCE = 8
MPTCP_PM_CMD_DEL_ADDR = 2
MPTCP_PM_CMD_FLUSH_ADDRS = 4
MPTCP_PM_CMD_GET_ADDR = 3
MPTCP_PM_CMD_GET_LIMITS = 6
+MPTCP_PM_CMD_REMOVE = 9
+MPTCP_PM_CMD_SET_FLAGS = 7
MPTCP_PM_CMD_SET_LIMITS = 5
+MPTCP_PM_CMD_SUBFLOW_CREATE = 10
+MPTCP_PM_CMD_SUBFLOW_DESTROY = 11
__NR_sendmsg = 211, 386:s390x:370, amd64:46, arm:296, mips64le:5045, ppc64le:341
diff --git a/sys/linux/sys.txt b/sys/linux/sys.txt
index 4b403ddd9..9c9874b33 100644
--- a/sys/linux/sys.txt
+++ b/sys/linux/sys.txt
@@ -45,6 +45,7 @@ include <linux/nfs.h>
include <linux/syslog.h>
include <linux/exportfs.h>
include <linux/splice.h>
+include <linux/filelock.h>
include <fs/overlayfs/overlayfs.h>
include <uapi/linux/memfd.h>
include <uapi/linux/module.h>
diff --git a/sys/linux/sys.txt.const b/sys/linux/sys.txt.const
index dc14e4ea0..df849f3b5 100644
--- a/sys/linux/sys.txt.const
+++ b/sys/linux/sys.txt.const
@@ -705,11 +705,11 @@ __NR_lseek = 19, amd64:8, arm64:riscv64:62, mips64le:5008
__NR_lstat = 107, amd64:6, arm64:riscv64:???, mips64le:5006
__NR_lstat64 = 196, amd64:arm64:mips64le:ppc64le:riscv64:s390x:???
__NR_madvise = 219, amd64:28, arm:220, arm64:riscv64:233, mips64le:5027, ppc64le:205
-__NR_map_shadow_stack = 386:arm:arm64:mips64le:ppc64le:riscv64:s390x:???, amd64:451
+__NR_map_shadow_stack = 386:arm:arm64:mips64le:ppc64le:riscv64:s390x:???, amd64:453
__NR_mbind = 235, 386:274, amd64:237, arm:319, mips64le:5227, ppc64le:259, s390x:268
__NR_membarrier = 283, 386:375, amd64:324, arm:389, mips64le:5318, ppc64le:365, s390x:356
__NR_memfd_create = 279, 386:356, amd64:319, arm:385, mips64le:5314, ppc64le:360, s390x:350
-__NR_memfd_secret = 447, arm:mips64le:ppc64le:s390x:???
+__NR_memfd_secret = 447, arm:mips64le:ppc64le:???
__NR_migrate_pages = 238, 386:294, amd64:256, arm:400, mips64le:5246, ppc64le:258, s390x:287
__NR_mincore = 218, amd64:27, arm:219, arm64:riscv64:232, mips64le:5026, ppc64le:206
__NR_mkdir = 39, amd64:83, arm64:riscv64:???, mips64le:5081