From 2df526854481775aa7dfcf9b2da4be92cbe5f53b Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Mon, 31 Oct 2022 17:57:30 -0700 Subject: sys/linux: add NFC netlink descriptions Add NFC netlink descriptions and improve socket descriptions a bit. --- sys/linux/socket_netlink_generic_nfc.txt | 116 +++++++++++++++++++++++++ sys/linux/socket_netlink_generic_nfc.txt.const | 43 +++++++++ sys/linux/socket_nfc.txt | 22 +++-- sys/linux/socket_nfc.txt.const | 9 ++ 4 files changed, 181 insertions(+), 9 deletions(-) create mode 100644 sys/linux/socket_netlink_generic_nfc.txt create mode 100644 sys/linux/socket_netlink_generic_nfc.txt.const (limited to 'sys') 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 +include +include +include +include +include +include + +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 -include +include +include include +include +include +include 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 -- cgit mrf-deployment