aboutsummaryrefslogtreecommitdiffstats
path: root/sys/linux/socket_netlink_generic_nfc.txt
blob: 1d270e28ec6fa7bfe6beb82272f3eabc453df5b6 (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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# Copyright 2022 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/nfc support.

include <linux/net.h>
include <uapi/linux/netlink.h>
include <uapi/linux/genetlink.h>
include <uapi/linux/nfc.h>
include <net/sock.h>
include <net/nfc/nfc.h>
include <net/nfc/llcp.h>

resource genl_nfc_family_id[int16]
type msghdr_nl_nfc[CMD, POLICY] msghdr_netlink[netlink_msg_t[genl_nfc_family_id, genlmsghdr_t[CMD], POLICY]]

syz_genetlink_get_family_id$nfc(name ptr[in, string["nfc"]], fd sock_nl_generic_init) genl_nfc_family_id

# TODO: it's unclear if anybody uses target idx other than 0. I only see 0.
type nfc_target_idx int32[NFC_TARGET_IDX_ANY:1]

sendmsg$NFC_CMD_GET_DEVICE(fd sock_nl_generic_init, msg ptr[in, msghdr_nl_nfc[NFC_CMD_GET_DEVICE, nfc_genl_policy_dev_index]], f flags[send_flags])
sendmsg$NFC_CMD_DEV_UP(fd sock_nl_generic_init, msg ptr[in, msghdr_nl_nfc[NFC_CMD_DEV_UP, nfc_genl_policy_dev_index]], f flags[send_flags])
sendmsg$NFC_CMD_DEV_DOWN(fd sock_nl_generic_init, msg ptr[in, msghdr_nl_nfc[NFC_CMD_DEV_DOWN, nfc_genl_policy_dev_index]], f flags[send_flags])
sendmsg$NFC_CMD_START_POLL(fd sock_nl_generic_init, msg ptr[in, msghdr_nl_nfc[NFC_CMD_START_POLL, nfc_genl_policy_START_POLL]], f flags[send_flags])
sendmsg$NFC_CMD_ACTIVATE_TARGET(fd sock_nl_generic_init, msg ptr[in, msghdr_nl_nfc[NFC_CMD_ACTIVATE_TARGET, nfc_genl_policy_ACTIVATE_TARGET]], f flags[send_flags])
sendmsg$NFC_CMD_DEACTIVATE_TARGET(fd sock_nl_generic_init, msg ptr[in, msghdr_nl_nfc[NFC_CMD_DEACTIVATE_TARGET, nfc_genl_policy_DEACTIVATE_TARGET]], f flags[send_flags])
sendmsg$NFC_CMD_DEP_LINK_UP(fd sock_nl_generic_init, msg ptr[in, msghdr_nl_nfc[NFC_CMD_DEP_LINK_UP, nfc_genl_policy_DEP_LINK_UP]], f flags[send_flags])
sendmsg$NFC_CMD_DEP_LINK_DOWN(fd sock_nl_generic_init, msg ptr[in, msghdr_nl_nfc[NFC_CMD_DEP_LINK_DOWN, nfc_genl_policy_DEP_LINK_DOWN]], f flags[send_flags])
sendmsg$NFC_CMD_GET_TARGET(fd sock_nl_generic_init, msg ptr[in, msghdr_nl_nfc[NFC_CMD_GET_TARGET, void]], f flags[send_flags])
sendmsg$NFC_CMD_LLC_GET_PARAMS(fd sock_nl_generic_init, msg ptr[in, msghdr_nl_nfc[NFC_CMD_LLC_GET_PARAMS, nfc_genl_policy_LLC_GET_PARAMS]], f flags[send_flags])
sendmsg$NFC_CMD_LLC_SET_PARAMS(fd sock_nl_generic_init, msg ptr[in, msghdr_nl_nfc[NFC_CMD_LLC_SET_PARAMS, nfc_genl_policy_LLC_SET_PARAMS]], f flags[send_flags])
sendmsg$NFC_CMD_LLC_SDREQ(fd sock_nl_generic_init, msg ptr[in, msghdr_nl_nfc[NFC_CMD_LLC_SDREQ, nfc_genl_policy_LLC_SDREQ]], f flags[send_flags])
sendmsg$NFC_CMD_ENABLE_SE(fd sock_nl_generic_init, msg ptr[in, msghdr_nl_nfc[NFC_CMD_ENABLE_SE, nfc_genl_policy_se]], f flags[send_flags])
sendmsg$NFC_CMD_DISABLE_SE(fd sock_nl_generic_init, msg ptr[in, msghdr_nl_nfc[NFC_CMD_DISABLE_SE, nfc_genl_policy_se]], f flags[send_flags])
sendmsg$NFC_CMD_FW_DOWNLOAD(fd sock_nl_generic_init, msg ptr[in, msghdr_nl_nfc[NFC_CMD_FW_DOWNLOAD, nfc_genl_policy_FW_DOWNLOAD]], f flags[send_flags])
sendmsg$NFC_CMD_GET_SE(fd sock_nl_generic_init, msg ptr[in, msghdr_nl_nfc[NFC_CMD_GET_SE, void]], f flags[send_flags])
sendmsg$NFC_CMD_SE_IO(fd sock_nl_generic_init, msg ptr[in, msghdr_nl_nfc[NFC_CMD_SE_IO, nfc_genl_policy_SE_IO]], f flags[send_flags])
sendmsg$NFC_CMD_VENDOR(fd sock_nl_generic_init, msg ptr[in, msghdr_nl_nfc[NFC_CMD_VENDOR, nfc_genl_policy_VENDOR]], f flags[send_flags])

nfc_genl_policy_dev_index [
	NFC_ATTR_DEVICE_INDEX	nlattr[NFC_ATTR_DEVICE_INDEX, nfc_dev_id]
] [varlen]

nfc_genl_policy_START_POLL [
	NFC_ATTR_DEVICE_INDEX	nlattr[NFC_ATTR_DEVICE_INDEX, nfc_dev_id]
	NFC_ATTR_PROTOCOLS	nlattr[NFC_ATTR_PROTOCOLS, flags[nfc_proto_mask, int32]]
	NFC_ATTR_IM_PROTOCOLS	nlattr[NFC_ATTR_IM_PROTOCOLS, flags[nfc_proto_mask, int32]]
	NFC_ATTR_TM_PROTOCOLS	nlattr[NFC_ATTR_TM_PROTOCOLS, flags[nfc_proto_mask, int32]]
] [varlen]

nfc_genl_policy_ACTIVATE_TARGET [
	NFC_ATTR_DEVICE_INDEX	nlattr[NFC_ATTR_DEVICE_INDEX, nfc_dev_id]
	NFC_ATTR_TARGET_INDEX	nlattr[NFC_ATTR_TARGET_INDEX, nfc_target_idx]
	NFC_ATTR_PROTOCOLS	nlattr[NFC_ATTR_PROTOCOLS, flags[nfc_proto, int32]]
] [varlen]

nfc_genl_policy_DEACTIVATE_TARGET [
	NFC_ATTR_DEVICE_INDEX	nlattr[NFC_ATTR_DEVICE_INDEX, nfc_dev_id]
	NFC_ATTR_TARGET_INDEX	nlattr[NFC_ATTR_TARGET_INDEX, nfc_target_idx]
] [varlen]

nfc_genl_policy_DEP_LINK_UP [
	NFC_ATTR_DEVICE_INDEX	nlattr[NFC_ATTR_DEVICE_INDEX, nfc_dev_id]
	NFC_ATTR_TARGET_INDEX	nlattr[NFC_ATTR_TARGET_INDEX, nfc_target_idx]
	NFC_ATTR_COMM_MODE	nlattr[NFC_ATTR_COMM_MODE, flags[nfc_comm_mode, int8]]
] [varlen]

nfc_genl_policy_DEP_LINK_DOWN [
	NFC_ATTR_DEVICE_INDEX	nlattr[NFC_ATTR_DEVICE_INDEX, nfc_dev_id]
	NFC_ATTR_TARGET_INDEX	nlattr[NFC_ATTR_TARGET_INDEX, nfc_target_idx]
] [varlen]

nfc_genl_policy_LLC_GET_PARAMS [
	NFC_ATTR_DEVICE_INDEX	nlattr[NFC_ATTR_DEVICE_INDEX, nfc_dev_id]
	NFC_ATTR_FIRMWARE_NAME	nlattr[NFC_ATTR_FIRMWARE_NAME, stringnoz]
] [varlen]

nfc_genl_policy_LLC_SET_PARAMS [
	NFC_ATTR_DEVICE_INDEX	nlattr[NFC_ATTR_DEVICE_INDEX, nfc_dev_id]
	NFC_ATTR_LLC_PARAM_LTO	nlattr[NFC_ATTR_LLC_PARAM_LTO, int8]
	NFC_ATTR_LLC_PARAM_RW	nlattr[NFC_ATTR_LLC_PARAM_RW, int8[0:LLCP_MAX_RW]]
	NFC_ATTR_LLC_PARAM_MIUX	nlattr[NFC_ATTR_LLC_PARAM_MIUX, int16[0:LLCP_MAX_MIUX]]
] [varlen]

nfc_genl_policy_se [
	NFC_ATTR_DEVICE_INDEX	nlattr[NFC_ATTR_DEVICE_INDEX, nfc_dev_id]
	NFC_ATTR_SE_INDEX	nlattr[NFC_ATTR_SE_INDEX, flags[nfc_se_index, int32]]
] [varlen]

nfc_genl_policy_LLC_SDREQ [
	NFC_ATTR_DEVICE_INDEX	nlattr[NFC_ATTR_DEVICE_INDEX, nfc_dev_id]
	NFC_ATTR_LLC_SDP	nlnest[NFC_ATTR_LLC_SDP, array[nlnest[0, array[nlattr[NFC_SDP_ATTR_URI, stringnoz]]]]]
] [varlen]

nfc_genl_policy_FW_DOWNLOAD [
	NFC_ATTR_DEVICE_INDEX	nlattr[NFC_ATTR_DEVICE_INDEX, nfc_dev_id]
	NFC_ATTR_FIRMWARE_NAME	nlattr[NFC_ATTR_FIRMWARE_NAME, stringnoz]
] [varlen]

nfc_genl_policy_SE_IO [
	NFC_ATTR_DEVICE_INDEX	nlattr[NFC_ATTR_DEVICE_INDEX, nfc_dev_id]
	NFC_ATTR_SE_INDEX	nlattr[NFC_ATTR_SE_INDEX, flags[nfc_se_index, int32]]
	NFC_ATTR_SE_APDU	nlattr[NFC_ATTR_SE_APDU, array[int8]]
] [varlen]

nfc_genl_policy_VENDOR [
	NFC_ATTR_DEVICE_INDEX	nlattr[NFC_ATTR_DEVICE_INDEX, nfc_dev_id]
	NFC_ATTR_VENDOR_ID	nlattr[NFC_ATTR_VENDOR_ID, int32]
	NFC_ATTR_VENDOR_SUBCMD	nlattr[NFC_ATTR_VENDOR_SUBCMD, int32]
	NFC_ATTR_VENDOR_DATA	nlattr[NFC_ATTR_VENDOR_DATA, array[int8]]
] [varlen]

nfc_comm_mode = NFC_COMM_ACTIVE, NFC_COMM_PASSIVE
# These are taken from nfc_add_se() arguments.
nfc_se_index = 0, 1, 2, 192