aboutsummaryrefslogtreecommitdiffstats
path: root/sys/linux/socket_netlink_generic_smc.txt
blob: 6e88a65fa4bc43c0f03f16b8dffc51a765c1f0bc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 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.

include <linux/net.h>
include <uapi/linux/netlink.h>
include <uapi/linux/genetlink.h>
include <uapi/linux/smc.h>

resource genl_smc_family_id[int16]
type msghdr_nl_smc[CMD] msghdr_netlink[netlink_msg_t[genl_smc_family_id, genlmsghdr_t[CMD], smc_pnet_policy]]

syz_genetlink_get_family_id$smc(name ptr[in, string["SMC_PNETID"]], fd sock_nl_generic) genl_smc_family_id

sendmsg$SMC_PNETID_GET(fd sock_nl_generic, msg ptr[in, msghdr_nl_smc[SMC_PNETID_GET]], f flags[send_flags])
sendmsg$SMC_PNETID_ADD(fd sock_nl_generic, msg ptr[in, msghdr_nl_smc[SMC_PNETID_ADD]], f flags[send_flags])
sendmsg$SMC_PNETID_DEL(fd sock_nl_generic, msg ptr[in, msghdr_nl_smc[SMC_PNETID_DEL]], f flags[send_flags])
sendmsg$SMC_PNETID_FLUSH(fd sock_nl_generic, msg ptr[in, msghdr_nl_smc[SMC_PNETID_FLUSH]], f flags[send_flags])

smc_pnet_policy [
	SMC_PNETID_NAME		nlattr[SMC_PNETID_NAME, string[smc_pnetid_name]]
	SMC_PNETID_ETHNAME	nlattr[SMC_PNETID_ETHNAME, devname]
	SMC_PNETID_IBNAME	nlattr[SMC_PNETID_IBNAME, string[smc_pnetid_ibname]]
	SMC_PNETID_IBPORT	nlattr[SMC_PNETID_IBPORT, int8[1:2]]
] [varlen]

smc_pnetid_name = "syz0", "syz1", "syz2"
# TODO: unclear where do these come from? do we have any of these smcd/smcib things? can we add/create them?
smc_pnetid_ibname = "syz0", "syz1", "syz2"