# 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