aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2022-10-31 17:57:30 -0700
committerDmitry Vyukov <dvyukov@google.com>2022-11-13 17:49:14 +0100
commit2df526854481775aa7dfcf9b2da4be92cbe5f53b (patch)
tree80e3bf7b1e599c57a0c00173ba9c6e59dc3ec6a8
parent4b3d9bad621a06070332b473aa34d5b2924c6272 (diff)
sys/linux: add NFC netlink descriptions
Add NFC netlink descriptions and improve socket descriptions a bit.
-rw-r--r--sys/linux/socket_netlink_generic_nfc.txt116
-rw-r--r--sys/linux/socket_netlink_generic_nfc.txt.const43
-rw-r--r--sys/linux/socket_nfc.txt22
-rw-r--r--sys/linux/socket_nfc.txt.const9
4 files changed, 181 insertions, 9 deletions
diff --git a/sys/linux/socket_netlink_generic_nfc.txt b/sys/linux/socket_netlink_generic_nfc.txt
new file mode 100644
index 000000000..1d270e28e
--- /dev/null
+++ b/sys/linux/socket_netlink_generic_nfc.txt
@@ -0,0 +1,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
diff --git a/sys/linux/socket_netlink_generic_nfc.txt.const b/sys/linux/socket_netlink_generic_nfc.txt.const
new file mode 100644
index 000000000..a2d7a106f
--- /dev/null
+++ b/sys/linux/socket_netlink_generic_nfc.txt.const
@@ -0,0 +1,43 @@
+# Code generated by syz-sysgen. DO NOT EDIT.
+arches = 386, amd64, arm, arm64, mips64le, ppc64le, riscv64, s390x
+LLCP_MAX_MIUX = 2047
+LLCP_MAX_RW = 15
+NFC_ATTR_COMM_MODE = 10
+NFC_ATTR_DEVICE_INDEX = 1
+NFC_ATTR_FIRMWARE_NAME = 20
+NFC_ATTR_IM_PROTOCOLS = 13
+NFC_ATTR_LLC_PARAM_LTO = 15
+NFC_ATTR_LLC_PARAM_MIUX = 17
+NFC_ATTR_LLC_PARAM_RW = 16
+NFC_ATTR_LLC_SDP = 19
+NFC_ATTR_PROTOCOLS = 3
+NFC_ATTR_SE_APDU = 25
+NFC_ATTR_SE_INDEX = 21
+NFC_ATTR_TARGET_INDEX = 4
+NFC_ATTR_TM_PROTOCOLS = 14
+NFC_ATTR_VENDOR_DATA = 31
+NFC_ATTR_VENDOR_ID = 29
+NFC_ATTR_VENDOR_SUBCMD = 30
+NFC_CMD_ACTIVATE_TARGET = 28
+NFC_CMD_DEACTIVATE_TARGET = 30
+NFC_CMD_DEP_LINK_DOWN = 5
+NFC_CMD_DEP_LINK_UP = 4
+NFC_CMD_DEV_DOWN = 3
+NFC_CMD_DEV_UP = 2
+NFC_CMD_DISABLE_SE = 18
+NFC_CMD_ENABLE_SE = 17
+NFC_CMD_FW_DOWNLOAD = 21
+NFC_CMD_GET_DEVICE = 1
+NFC_CMD_GET_SE = 26
+NFC_CMD_GET_TARGET = 8
+NFC_CMD_LLC_GET_PARAMS = 15
+NFC_CMD_LLC_SDREQ = 19
+NFC_CMD_LLC_SET_PARAMS = 16
+NFC_CMD_SE_IO = 27
+NFC_CMD_START_POLL = 6
+NFC_CMD_VENDOR = 29
+NFC_COMM_ACTIVE = 0
+NFC_COMM_PASSIVE = 1
+NFC_SDP_ATTR_URI = 1
+NFC_TARGET_IDX_ANY = 18446744073709551615
+__NR_sendmsg = 211, 386:s390x:370, amd64:46, arm:296, mips64le:5045, ppc64le:341
diff --git a/sys/linux/socket_nfc.txt b/sys/linux/socket_nfc.txt
index 569dc5c21..c4e2d08fb 100644
--- a/sys/linux/socket_nfc.txt
+++ b/sys/linux/socket_nfc.txt
@@ -3,9 +3,12 @@
# AF_NFC support.
-include <linux/socket.h>
-include <linux/net.h>
+include <uapi/linux/socket.h>
+include <uapi/linux/net.h>
include <uapi/linux/nfc.h>
+include <net/sock.h>
+include <net/nfc/nfc.h>
+include <net/nfc/llcp.h>
resource sock_nfc_llcp[sock]
@@ -14,8 +17,8 @@ bind$nfc_llcp(fd sock_nfc_llcp, addr ptr[in, sockaddr_nfc_llcp], addrlen len[add
connect$nfc_llcp(fd sock_nfc_llcp, addr ptr[in, sockaddr_nfc_llcp], addrlen len[addr])
accept$nfc_llcp(fd sock_nfc_llcp, peer ptr[out, sockaddr_nfc_llcp, opt], peerlen ptr[inout, len[peer, int32]]) sock_nfc_llcp
accept4$nfc_llcp(fd sock_nfc_llcp, peer ptr[out, sockaddr_nfc_llcp, opt], peerlen ptr[inout, len[peer, int32]], flags flags[accept_flags]) sock_nfc_llcp
-setsockopt$nfc_llcp_NFC_LLCP_RW(fd sock_nfc_llcp, level const[SOL_NFC], opt const[NFC_LLCP_RW], arg ptr[in, int32], arglen len[arg])
-setsockopt$nfc_llcp_NFC_LLCP_MIUX(fd sock_nfc_llcp, level const[SOL_NFC], opt const[NFC_LLCP_MIUX], arg ptr[in, int32], arglen len[arg])
+setsockopt$nfc_llcp_NFC_LLCP_RW(fd sock_nfc_llcp, level const[SOL_NFC], opt const[NFC_LLCP_RW], arg ptr[in, int32[0:LLCP_MAX_RW]], arglen len[arg])
+setsockopt$nfc_llcp_NFC_LLCP_MIUX(fd sock_nfc_llcp, level const[SOL_NFC], opt const[NFC_LLCP_MIUX], arg ptr[in, int32[0:LLCP_MAX_MIUX]], arglen len[arg])
getsockopt$nfc_llcp(fd sock_nfc_llcp, level const[SOL_NFC], opt flags[nfc_llcp_opts], arg buffer[out], arglen len[arg])
sendmsg$nfc_llcp(fd sock_nfc_llcp, msg ptr[in, nfc_llcp_send_msghdr], f flags[send_flags])
sendmmsg$nfc_llcp(fd sock_nfc_llcp, mmsg ptr[in, array[nfc_llcp_send_msghdr]], vlen len[mmsg], f flags[send_flags])
@@ -28,13 +31,14 @@ connect$nfc_raw(fd sock_nfc_raw, addr ptr[in, sockaddr_nfc], addrlen len[addr])
nfc_llcp_type = SOCK_STREAM, SOCK_DGRAM, SOCK_RAW
nfc_raw_type = SOCK_SEQPACKET, SOCK_RAW
nfc_proto = NFC_PROTO_JEWEL, NFC_PROTO_MIFARE, NFC_PROTO_FELICA, NFC_PROTO_ISO14443, NFC_PROTO_NFC_DEP, NFC_PROTO_ISO14443_B, NFC_PROTO_ISO15693
+nfc_proto_mask = NFC_PROTO_JEWEL_MASK, NFC_PROTO_MIFARE_MASK, NFC_PROTO_FELICA_MASK, NFC_PROTO_ISO14443_MASK, NFC_PROTO_NFC_DEP_MASK, NFC_PROTO_ISO14443_B_MASK, NFC_PROTO_ISO15693_MASK
nfc_llcp_opts = NFC_LLCP_RW, NFC_LLCP_MIUX, NFC_LLCP_REMOTE_MIU, NFC_LLCP_REMOTE_LTO, NFC_LLCP_REMOTE_RW
sockaddr_nfc_llcp {
family const[AF_NFC, int16]
- devidx int32[0:1]
- target int32[0:2]
- proto flags[nfc_proto, int32]
+ devidx nfc_dev_id
+ target nfc_target_idx
+ nfc_protocol flags[nfc_proto, int32]
dsap int8
ssap int8
service_name array[int8, NFC_LLCP_MAX_SERVICE_NAME]
@@ -43,8 +47,8 @@ sockaddr_nfc_llcp {
sockaddr_nfc {
sa_family const[AF_NFC, int16]
- dev_idx int32[0:1]
- target_idx int32[0:2]
+ dev_idx nfc_dev_id
+ target_idx nfc_target_idx
nfc_protocol flags[nfc_proto, int32]
}
diff --git a/sys/linux/socket_nfc.txt.const b/sys/linux/socket_nfc.txt.const
index 7ae094cb4..3019c5730 100644
--- a/sys/linux/socket_nfc.txt.const
+++ b/sys/linux/socket_nfc.txt.const
@@ -1,6 +1,8 @@
# Code generated by syz-sysgen. DO NOT EDIT.
arches = 386, amd64, arm, arm64, mips64le, ppc64le, riscv64, s390x
AF_NFC = 39
+LLCP_MAX_MIUX = 2047
+LLCP_MAX_RW = 15
NFC_LLCP_MAX_SERVICE_NAME = 63
NFC_LLCP_MIUX = 1
NFC_LLCP_REMOTE_LTO = 3
@@ -8,12 +10,19 @@ NFC_LLCP_REMOTE_MIU = 2
NFC_LLCP_REMOTE_RW = 4
NFC_LLCP_RW = 0
NFC_PROTO_FELICA = 3
+NFC_PROTO_FELICA_MASK = 8
NFC_PROTO_ISO14443 = 4
NFC_PROTO_ISO14443_B = 6
+NFC_PROTO_ISO14443_B_MASK = 64
+NFC_PROTO_ISO14443_MASK = 16
NFC_PROTO_ISO15693 = 7
+NFC_PROTO_ISO15693_MASK = 128
NFC_PROTO_JEWEL = 1
+NFC_PROTO_JEWEL_MASK = 2
NFC_PROTO_MIFARE = 2
+NFC_PROTO_MIFARE_MASK = 4
NFC_PROTO_NFC_DEP = 5
+NFC_PROTO_NFC_DEP_MASK = 32
NFC_SOCKPROTO_LLCP = 1
NFC_SOCKPROTO_RAW = 0
SOCK_DGRAM = 2, mips64le:1