aboutsummaryrefslogtreecommitdiffstats
path: root/sys/linux
diff options
context:
space:
mode:
authorChristoph Paasch <cpaasch@apple.com>2020-01-31 15:51:09 -0800
committerDmitry Vyukov <dvyukov@google.com>2020-06-11 22:16:56 +0200
commit1ffa7b1e771dad7944976c721ed61a0762d7b65f (patch)
tree36a5e7823585aa0a3c7f46f519ef5017f8ae09fe /sys/linux
parent6dd6b37bc78fd2045096b6414fcfc42a7a943cf2 (diff)
sys/linux: mptcp: Add netlink-API for MPTCP path-management
MPTCP exposes a generic netlink API to control address advertisement and subflow-creation. syzkaller should make use of this interface.
Diffstat (limited to 'sys/linux')
-rw-r--r--sys/linux/socket_netlink_generic_mptcp.txt40
-rw-r--r--sys/linux/socket_netlink_generic_mptcp_386.const23
-rw-r--r--sys/linux/socket_netlink_generic_mptcp_amd64.const23
-rw-r--r--sys/linux/socket_netlink_generic_mptcp_arm.const23
-rw-r--r--sys/linux/socket_netlink_generic_mptcp_arm64.const23
-rw-r--r--sys/linux/socket_netlink_generic_mptcp_mips64le.const23
-rw-r--r--sys/linux/socket_netlink_generic_mptcp_ppc64le.const23
7 files changed, 178 insertions, 0 deletions
diff --git a/sys/linux/socket_netlink_generic_mptcp.txt b/sys/linux/socket_netlink_generic_mptcp.txt
new file mode 100644
index 000000000..a0ea0351a
--- /dev/null
+++ b/sys/linux/socket_netlink_generic_mptcp.txt
@@ -0,0 +1,40 @@
+# Copyright 2020 syzkaller project authors. All rights reserved.
+# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+# AF_NETLINK/NETLINK_GENERIC/mptcp support.
+
+include <linux/net.h>
+include <uapi/linux/netlink.h>
+include <uapi/linux/genetlink.h>
+include <uapi/linux/mptcp.h>
+
+resource genl_mptcp_family_id[int16]
+type msghdr_nl_mptcp[CMD] msghdr_netlink[netlink_msg_t[genl_mptcp_family_id, genlmsghdr_t[CMD], mptcp_pm_policy]]
+
+syz_genetlink_get_family_id$mptcp(name ptr[in, string["mptcp_pm"]]) genl_mptcp_family_id
+
+sendmsg$MPTCP_PM_CMD_ADD_ADDR(fd sock_nl_generic, msg ptr[in, msghdr_nl_mptcp[MPTCP_PM_CMD_ADD_ADDR]], f flags[send_flags])
+sendmsg$MPTCP_PM_CMD_DEL_ADDR(fd sock_nl_generic, msg ptr[in, msghdr_nl_mptcp[MPTCP_PM_CMD_DEL_ADDR]], f flags[send_flags])
+sendmsg$MPTCP_PM_CMD_GET_ADDR(fd sock_nl_generic, msg ptr[in, msghdr_nl_mptcp[MPTCP_PM_CMD_GET_ADDR]], f flags[send_flags])
+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])
+
+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]]
+] [varlen]
+
+mptcp_pm_addr_policy [
+ MPTCP_PM_ADDR_ATTR_FAMILY nlattr[MPTCP_PM_ADDR_ATTR_FAMILY, flags[mptcp_families, int16]]
+ MPTCP_PM_ADDR_ATTR_ID nlattr[MPTCP_PM_ADDR_ATTR_ID, int8]
+ MPTCP_PM_ADDR_ATTR_ADDR4 nlattr[MPTCP_PM_ADDR_ATTR_ADDR4, ipv4_addr]
+ MPTCP_PM_ADDR_ATTR_ADDR6 nlattr[MPTCP_PM_ADDR_ATTR_ADDR6, ipv6_addr]
+ MPTCP_PM_ADDR_ATTR_PORT nlattr[MPTCP_PM_ADDR_ATTR_PORT, sock_port]
+ MPTCP_PM_ADDR_ATTR_FLAGS nlattr[MPTCP_PM_ADDR_ATTR_FLAGS, flags[mptcp_pm_addr_flags, int32]]
+ MPTCP_PM_ADDR_ATTR_IF_IDX nlattr[MPTCP_PM_ADDR_ATTR_IF_IDX, ifindex]
+] [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
diff --git a/sys/linux/socket_netlink_generic_mptcp_386.const b/sys/linux/socket_netlink_generic_mptcp_386.const
new file mode 100644
index 000000000..d32dd32d7
--- /dev/null
+++ b/sys/linux/socket_netlink_generic_mptcp_386.const
@@ -0,0 +1,23 @@
+# AUTOGENERATED FILE
+AF_INET = 2
+AF_INET6 = 10
+MPTCP_PM_ADDR_ATTR_ADDR4 = 3
+MPTCP_PM_ADDR_ATTR_ADDR6 = 4
+MPTCP_PM_ADDR_ATTR_FAMILY = 1
+MPTCP_PM_ADDR_ATTR_FLAGS = 6
+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_SIGNAL = 1
+MPTCP_PM_ADDR_FLAG_SUBFLOW = 2
+MPTCP_PM_ATTR_ADDR = 1
+MPTCP_PM_ATTR_RCV_ADD_ADDRS = 2
+MPTCP_PM_ATTR_SUBFLOWS = 3
+MPTCP_PM_CMD_ADD_ADDR = 1
+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_SET_LIMITS = 5
+__NR_sendmsg = 370
diff --git a/sys/linux/socket_netlink_generic_mptcp_amd64.const b/sys/linux/socket_netlink_generic_mptcp_amd64.const
new file mode 100644
index 000000000..70f7bd8ba
--- /dev/null
+++ b/sys/linux/socket_netlink_generic_mptcp_amd64.const
@@ -0,0 +1,23 @@
+# AUTOGENERATED FILE
+AF_INET = 2
+AF_INET6 = 10
+MPTCP_PM_ADDR_ATTR_ADDR4 = 3
+MPTCP_PM_ADDR_ATTR_ADDR6 = 4
+MPTCP_PM_ADDR_ATTR_FAMILY = 1
+MPTCP_PM_ADDR_ATTR_FLAGS = 6
+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_SIGNAL = 1
+MPTCP_PM_ADDR_FLAG_SUBFLOW = 2
+MPTCP_PM_ATTR_ADDR = 1
+MPTCP_PM_ATTR_RCV_ADD_ADDRS = 2
+MPTCP_PM_ATTR_SUBFLOWS = 3
+MPTCP_PM_CMD_ADD_ADDR = 1
+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_SET_LIMITS = 5
+__NR_sendmsg = 46
diff --git a/sys/linux/socket_netlink_generic_mptcp_arm.const b/sys/linux/socket_netlink_generic_mptcp_arm.const
new file mode 100644
index 000000000..6be8fdd68
--- /dev/null
+++ b/sys/linux/socket_netlink_generic_mptcp_arm.const
@@ -0,0 +1,23 @@
+# AUTOGENERATED FILE
+AF_INET = 2
+AF_INET6 = 10
+MPTCP_PM_ADDR_ATTR_ADDR4 = 3
+MPTCP_PM_ADDR_ATTR_ADDR6 = 4
+MPTCP_PM_ADDR_ATTR_FAMILY = 1
+MPTCP_PM_ADDR_ATTR_FLAGS = 6
+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_SIGNAL = 1
+MPTCP_PM_ADDR_FLAG_SUBFLOW = 2
+MPTCP_PM_ATTR_ADDR = 1
+MPTCP_PM_ATTR_RCV_ADD_ADDRS = 2
+MPTCP_PM_ATTR_SUBFLOWS = 3
+MPTCP_PM_CMD_ADD_ADDR = 1
+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_SET_LIMITS = 5
+__NR_sendmsg = 296
diff --git a/sys/linux/socket_netlink_generic_mptcp_arm64.const b/sys/linux/socket_netlink_generic_mptcp_arm64.const
new file mode 100644
index 000000000..3a20abaaf
--- /dev/null
+++ b/sys/linux/socket_netlink_generic_mptcp_arm64.const
@@ -0,0 +1,23 @@
+# AUTOGENERATED FILE
+AF_INET = 2
+AF_INET6 = 10
+MPTCP_PM_ADDR_ATTR_ADDR4 = 3
+MPTCP_PM_ADDR_ATTR_ADDR6 = 4
+MPTCP_PM_ADDR_ATTR_FAMILY = 1
+MPTCP_PM_ADDR_ATTR_FLAGS = 6
+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_SIGNAL = 1
+MPTCP_PM_ADDR_FLAG_SUBFLOW = 2
+MPTCP_PM_ATTR_ADDR = 1
+MPTCP_PM_ATTR_RCV_ADD_ADDRS = 2
+MPTCP_PM_ATTR_SUBFLOWS = 3
+MPTCP_PM_CMD_ADD_ADDR = 1
+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_SET_LIMITS = 5
+__NR_sendmsg = 211
diff --git a/sys/linux/socket_netlink_generic_mptcp_mips64le.const b/sys/linux/socket_netlink_generic_mptcp_mips64le.const
new file mode 100644
index 000000000..e0bcf7b47
--- /dev/null
+++ b/sys/linux/socket_netlink_generic_mptcp_mips64le.const
@@ -0,0 +1,23 @@
+# AUTOGENERATED FILE
+AF_INET = 2
+AF_INET6 = 10
+MPTCP_PM_ADDR_ATTR_ADDR4 = 3
+MPTCP_PM_ADDR_ATTR_ADDR6 = 4
+MPTCP_PM_ADDR_ATTR_FAMILY = 1
+MPTCP_PM_ADDR_ATTR_FLAGS = 6
+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_SIGNAL = 1
+MPTCP_PM_ADDR_FLAG_SUBFLOW = 2
+MPTCP_PM_ATTR_ADDR = 1
+MPTCP_PM_ATTR_RCV_ADD_ADDRS = 2
+MPTCP_PM_ATTR_SUBFLOWS = 3
+MPTCP_PM_CMD_ADD_ADDR = 1
+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_SET_LIMITS = 5
+__NR_sendmsg = 5045
diff --git a/sys/linux/socket_netlink_generic_mptcp_ppc64le.const b/sys/linux/socket_netlink_generic_mptcp_ppc64le.const
new file mode 100644
index 000000000..032070891
--- /dev/null
+++ b/sys/linux/socket_netlink_generic_mptcp_ppc64le.const
@@ -0,0 +1,23 @@
+# AUTOGENERATED FILE
+AF_INET = 2
+AF_INET6 = 10
+MPTCP_PM_ADDR_ATTR_ADDR4 = 3
+MPTCP_PM_ADDR_ATTR_ADDR6 = 4
+MPTCP_PM_ADDR_ATTR_FAMILY = 1
+MPTCP_PM_ADDR_ATTR_FLAGS = 6
+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_SIGNAL = 1
+MPTCP_PM_ADDR_FLAG_SUBFLOW = 2
+MPTCP_PM_ATTR_ADDR = 1
+MPTCP_PM_ATTR_RCV_ADD_ADDRS = 2
+MPTCP_PM_ATTR_SUBFLOWS = 3
+MPTCP_PM_CMD_ADD_ADDR = 1
+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_SET_LIMITS = 5
+__NR_sendmsg = 341