| # 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_nsim { |
| 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_handle_pci { |
| DEVLINK_ATTR_BUS_NAME nlattr[DEVLINK_ATTR_BUS_NAME, string["pci"]] |
| # 0000:00:10.0 is a fixed pci address what is moved from initial network namespace by initialize_devlink() |
| DEVLINK_ATTR_DEV_NAME nlattr[DEVLINK_ATTR_DEV_NAME, string["0000:00:10.0"]] |
| } [packed, align_4] |
| |
| devlink_handle [ |
| nsim devlink_handle_nsim |
| pci devlink_handle_pci |
| ] [varlen] |
| |
| 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] |