100c94ca2SJakub Kicinski // SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) 200c94ca2SJakub Kicinski /* Do not edit directly, auto-generated from: */ 300c94ca2SJakub Kicinski /* Documentation/netlink/specs/psp.yaml */ 400c94ca2SJakub Kicinski /* YNL-GEN kernel source */ 500c94ca2SJakub Kicinski 600c94ca2SJakub Kicinski #include <net/netlink.h> 700c94ca2SJakub Kicinski #include <net/genetlink.h> 800c94ca2SJakub Kicinski 900c94ca2SJakub Kicinski #include "psp-nl-gen.h" 1000c94ca2SJakub Kicinski 1100c94ca2SJakub Kicinski #include <uapi/linux/psp.h> 1200c94ca2SJakub Kicinski 13*6b46ca26SJakub Kicinski /* Common nested types */ 14*6b46ca26SJakub Kicinski const struct nla_policy psp_keys_nl_policy[PSP_A_KEYS_SPI + 1] = { 15*6b46ca26SJakub Kicinski [PSP_A_KEYS_KEY] = { .type = NLA_BINARY, }, 16*6b46ca26SJakub Kicinski [PSP_A_KEYS_SPI] = { .type = NLA_U32, }, 17*6b46ca26SJakub Kicinski }; 18*6b46ca26SJakub Kicinski 1900c94ca2SJakub Kicinski /* PSP_CMD_DEV_GET - do */ 2000c94ca2SJakub Kicinski static const struct nla_policy psp_dev_get_nl_policy[PSP_A_DEV_ID + 1] = { 2100c94ca2SJakub Kicinski [PSP_A_DEV_ID] = NLA_POLICY_MIN(NLA_U32, 1), 2200c94ca2SJakub Kicinski }; 2300c94ca2SJakub Kicinski 2400c94ca2SJakub Kicinski /* PSP_CMD_DEV_SET - do */ 2500c94ca2SJakub Kicinski static const struct nla_policy psp_dev_set_nl_policy[PSP_A_DEV_PSP_VERSIONS_ENA + 1] = { 2600c94ca2SJakub Kicinski [PSP_A_DEV_ID] = NLA_POLICY_MIN(NLA_U32, 1), 2700c94ca2SJakub Kicinski [PSP_A_DEV_PSP_VERSIONS_ENA] = NLA_POLICY_MASK(NLA_U32, 0xf), 2800c94ca2SJakub Kicinski }; 2900c94ca2SJakub Kicinski 30117f02a4SJakub Kicinski /* PSP_CMD_KEY_ROTATE - do */ 31117f02a4SJakub Kicinski static const struct nla_policy psp_key_rotate_nl_policy[PSP_A_DEV_ID + 1] = { 32117f02a4SJakub Kicinski [PSP_A_DEV_ID] = NLA_POLICY_MIN(NLA_U32, 1), 33117f02a4SJakub Kicinski }; 34117f02a4SJakub Kicinski 35*6b46ca26SJakub Kicinski /* PSP_CMD_RX_ASSOC - do */ 36*6b46ca26SJakub Kicinski static const struct nla_policy psp_rx_assoc_nl_policy[PSP_A_ASSOC_SOCK_FD + 1] = { 37*6b46ca26SJakub Kicinski [PSP_A_ASSOC_DEV_ID] = NLA_POLICY_MIN(NLA_U32, 1), 38*6b46ca26SJakub Kicinski [PSP_A_ASSOC_VERSION] = NLA_POLICY_MAX(NLA_U32, 3), 39*6b46ca26SJakub Kicinski [PSP_A_ASSOC_SOCK_FD] = { .type = NLA_U32, }, 40*6b46ca26SJakub Kicinski }; 41*6b46ca26SJakub Kicinski 42*6b46ca26SJakub Kicinski /* PSP_CMD_TX_ASSOC - do */ 43*6b46ca26SJakub Kicinski static const struct nla_policy psp_tx_assoc_nl_policy[PSP_A_ASSOC_SOCK_FD + 1] = { 44*6b46ca26SJakub Kicinski [PSP_A_ASSOC_DEV_ID] = NLA_POLICY_MIN(NLA_U32, 1), 45*6b46ca26SJakub Kicinski [PSP_A_ASSOC_VERSION] = NLA_POLICY_MAX(NLA_U32, 3), 46*6b46ca26SJakub Kicinski [PSP_A_ASSOC_TX_KEY] = NLA_POLICY_NESTED(psp_keys_nl_policy), 47*6b46ca26SJakub Kicinski [PSP_A_ASSOC_SOCK_FD] = { .type = NLA_U32, }, 48*6b46ca26SJakub Kicinski }; 49*6b46ca26SJakub Kicinski 5000c94ca2SJakub Kicinski /* Ops table for psp */ 5100c94ca2SJakub Kicinski static const struct genl_split_ops psp_nl_ops[] = { 5200c94ca2SJakub Kicinski { 5300c94ca2SJakub Kicinski .cmd = PSP_CMD_DEV_GET, 5400c94ca2SJakub Kicinski .pre_doit = psp_device_get_locked, 5500c94ca2SJakub Kicinski .doit = psp_nl_dev_get_doit, 5600c94ca2SJakub Kicinski .post_doit = psp_device_unlock, 5700c94ca2SJakub Kicinski .policy = psp_dev_get_nl_policy, 5800c94ca2SJakub Kicinski .maxattr = PSP_A_DEV_ID, 5900c94ca2SJakub Kicinski .flags = GENL_CMD_CAP_DO, 6000c94ca2SJakub Kicinski }, 6100c94ca2SJakub Kicinski { 6200c94ca2SJakub Kicinski .cmd = PSP_CMD_DEV_GET, 6300c94ca2SJakub Kicinski .dumpit = psp_nl_dev_get_dumpit, 6400c94ca2SJakub Kicinski .flags = GENL_CMD_CAP_DUMP, 6500c94ca2SJakub Kicinski }, 6600c94ca2SJakub Kicinski { 6700c94ca2SJakub Kicinski .cmd = PSP_CMD_DEV_SET, 6800c94ca2SJakub Kicinski .pre_doit = psp_device_get_locked, 6900c94ca2SJakub Kicinski .doit = psp_nl_dev_set_doit, 7000c94ca2SJakub Kicinski .post_doit = psp_device_unlock, 7100c94ca2SJakub Kicinski .policy = psp_dev_set_nl_policy, 7200c94ca2SJakub Kicinski .maxattr = PSP_A_DEV_PSP_VERSIONS_ENA, 7300c94ca2SJakub Kicinski .flags = GENL_CMD_CAP_DO, 7400c94ca2SJakub Kicinski }, 75117f02a4SJakub Kicinski { 76117f02a4SJakub Kicinski .cmd = PSP_CMD_KEY_ROTATE, 77117f02a4SJakub Kicinski .pre_doit = psp_device_get_locked, 78117f02a4SJakub Kicinski .doit = psp_nl_key_rotate_doit, 79117f02a4SJakub Kicinski .post_doit = psp_device_unlock, 80117f02a4SJakub Kicinski .policy = psp_key_rotate_nl_policy, 81117f02a4SJakub Kicinski .maxattr = PSP_A_DEV_ID, 82117f02a4SJakub Kicinski .flags = GENL_CMD_CAP_DO, 83117f02a4SJakub Kicinski }, 84*6b46ca26SJakub Kicinski { 85*6b46ca26SJakub Kicinski .cmd = PSP_CMD_RX_ASSOC, 86*6b46ca26SJakub Kicinski .pre_doit = psp_assoc_device_get_locked, 87*6b46ca26SJakub Kicinski .doit = psp_nl_rx_assoc_doit, 88*6b46ca26SJakub Kicinski .post_doit = psp_device_unlock, 89*6b46ca26SJakub Kicinski .policy = psp_rx_assoc_nl_policy, 90*6b46ca26SJakub Kicinski .maxattr = PSP_A_ASSOC_SOCK_FD, 91*6b46ca26SJakub Kicinski .flags = GENL_CMD_CAP_DO, 92*6b46ca26SJakub Kicinski }, 93*6b46ca26SJakub Kicinski { 94*6b46ca26SJakub Kicinski .cmd = PSP_CMD_TX_ASSOC, 95*6b46ca26SJakub Kicinski .pre_doit = psp_assoc_device_get_locked, 96*6b46ca26SJakub Kicinski .doit = psp_nl_tx_assoc_doit, 97*6b46ca26SJakub Kicinski .post_doit = psp_device_unlock, 98*6b46ca26SJakub Kicinski .policy = psp_tx_assoc_nl_policy, 99*6b46ca26SJakub Kicinski .maxattr = PSP_A_ASSOC_SOCK_FD, 100*6b46ca26SJakub Kicinski .flags = GENL_CMD_CAP_DO, 101*6b46ca26SJakub Kicinski }, 10200c94ca2SJakub Kicinski }; 10300c94ca2SJakub Kicinski 10400c94ca2SJakub Kicinski static const struct genl_multicast_group psp_nl_mcgrps[] = { 10500c94ca2SJakub Kicinski [PSP_NLGRP_MGMT] = { "mgmt", }, 106117f02a4SJakub Kicinski [PSP_NLGRP_USE] = { "use", }, 10700c94ca2SJakub Kicinski }; 10800c94ca2SJakub Kicinski 10900c94ca2SJakub Kicinski struct genl_family psp_nl_family __ro_after_init = { 11000c94ca2SJakub Kicinski .name = PSP_FAMILY_NAME, 11100c94ca2SJakub Kicinski .version = PSP_FAMILY_VERSION, 11200c94ca2SJakub Kicinski .netnsok = true, 11300c94ca2SJakub Kicinski .parallel_ops = true, 11400c94ca2SJakub Kicinski .module = THIS_MODULE, 11500c94ca2SJakub Kicinski .split_ops = psp_nl_ops, 11600c94ca2SJakub Kicinski .n_split_ops = ARRAY_SIZE(psp_nl_ops), 11700c94ca2SJakub Kicinski .mcgrps = psp_nl_mcgrps, 11800c94ca2SJakub Kicinski .n_mcgrps = ARRAY_SIZE(psp_nl_mcgrps), 11900c94ca2SJakub Kicinski }; 120