aboutsummaryrefslogtreecommitdiffstats
path: root/sys/linux/socket_netlink_generic_devlink.txt
diff options
context:
space:
mode:
Diffstat (limited to 'sys/linux/socket_netlink_generic_devlink.txt')
-rw-r--r--sys/linux/socket_netlink_generic_devlink.txt62
1 files changed, 62 insertions, 0 deletions
diff --git a/sys/linux/socket_netlink_generic_devlink.txt b/sys/linux/socket_netlink_generic_devlink.txt
new file mode 100644
index 000000000..50312f5bb
--- /dev/null
+++ b/sys/linux/socket_netlink_generic_devlink.txt
@@ -0,0 +1,62 @@
+# Copyright 2019 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/devlink support.
+
+include <linux/net.h>
+include <net/netlink.h>
+include <uapi/linux/netlink.h>
+include <uapi/linux/genetlink.h>
+include <uapi/linux/devlink.h>
+
+resource genl_devlink_family_id[int16]
+syz_genetlink_get_family_id$devlink(name ptr[in, string["devlink"]]) genl_devlink_family_id
+
+devlink_devname {
+ prefix stringnoz["netdevsim"]
+ id proc['0', 1, int8]
+ z const[0, int8]
+} [packed]
+
+devlink_handle {
+ DEVLINK_ATTR_BUS_NAME nlattr[DEVLINK_ATTR_BUS_NAME, string["netdevsim"]]
+ DEVLINK_ATTR_DEV_NAME nlattr[DEVLINK_ATTR_DEV_NAME, devlink_devname]
+} [packed, align_4]
+
+devlink_port_handle {
+ port_handle devlink_handle
+# 0:3 is in sync with number of ports created by netdevsim_add()
+ DEVLINK_ATTR_PORT_INDEX nlattr[DEVLINK_ATTR_PORT_INDEX, int32[0:3]]
+} [packed, align_4]
+
+type msghdr_nl_devlink[CMD] msghdr_netlink[netlink_msg_t[genl_devlink_family_id, genlmsghdr_t[CMD], devlink_handle]]
+sendmsg$DEVLINK_CMD_GET(fd sock_nl_generic, msg ptr[in, msghdr_nl_devlink[DEVLINK_CMD_GET]], f flags[send_flags])
+
+type msghdr_nl_devlink_reload msghdr_netlink[netlink_msg_t[genl_devlink_family_id, genlmsghdr_t[DEVLINK_CMD_RELOAD], devlink_reload]]
+sendmsg$DEVLINK_CMD_RELOAD(fd sock_nl_generic, msg ptr[in, msghdr_nl_devlink_reload], f flags[send_flags])
+
+devlink_reload_arg [
+ DEVLINK_ATTR_NETNS_PID nlattr[DEVLINK_ATTR_NETNS_PID, pid]
+ DEVLINK_ATTR_NETNS_FD nlattr[DEVLINK_ATTR_NETNS_FD, fd_namespace]
+ DEVLINK_ATTR_NETNS_ID nlattr[DEVLINK_ATTR_NETNS_ID, netns_id]
+] [varlen]
+
+devlink_reload {
+ handle devlink_handle
+ arg devlink_reload_arg
+} [packed, align_4]
+
+type msghdr_nl_devlink_port_get msghdr_netlink[netlink_msg_t[genl_devlink_family_id, genlmsghdr_t[DEVLINK_CMD_PORT_GET], devlink_port_get]]
+sendmsg$DEVLINK_CMD_PORT_GET(fd sock_nl_generic, msg ptr[in, msghdr_nl_devlink_port_get], f flags[send_flags])
+
+devlink_port_get {
+ port_handle devlink_port_handle
+} [packed, align_4]
+
+type msghdr_nl_devlink_port_set msghdr_netlink[netlink_msg_t[genl_devlink_family_id, genlmsghdr_t[DEVLINK_CMD_PORT_SET], devlink_port_set]]
+sendmsg$DEVLINK_CMD_PORT_SET(fd sock_nl_generic, msg ptr[in, msghdr_nl_devlink_port_set], f flags[send_flags])
+
+devlink_port_set {
+ port_handle devlink_port_handle
+ DEVLINK_ATTR_PORT_TYPE nlattr[DEVLINK_ATTR_PORT_TYPE, int16[DEVLINK_PORT_TYPE_NOTSET:DEVLINK_PORT_TYPE_IB]]
+} [packed, align_4]