104e65df9SPaolo Abeni // SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) 204e65df9SPaolo Abeni /* Do not edit directly, auto-generated from: */ 304e65df9SPaolo Abeni /* Documentation/netlink/specs/net_shaper.yaml */ 404e65df9SPaolo Abeni /* YNL-GEN kernel source */ 504e65df9SPaolo Abeni 604e65df9SPaolo Abeni #include <net/netlink.h> 704e65df9SPaolo Abeni #include <net/genetlink.h> 804e65df9SPaolo Abeni 904e65df9SPaolo Abeni #include "shaper_nl_gen.h" 1004e65df9SPaolo Abeni 1104e65df9SPaolo Abeni #include <uapi/linux/net_shaper.h> 1204e65df9SPaolo Abeni 1304e65df9SPaolo Abeni /* Common nested types */ 1404e65df9SPaolo Abeni const struct nla_policy net_shaper_handle_nl_policy[NET_SHAPER_A_HANDLE_ID + 1] = { 1504e65df9SPaolo Abeni [NET_SHAPER_A_HANDLE_SCOPE] = NLA_POLICY_MAX(NLA_U32, 3), 1604e65df9SPaolo Abeni [NET_SHAPER_A_HANDLE_ID] = { .type = NLA_U32, }, 1704e65df9SPaolo Abeni }; 1804e65df9SPaolo Abeni 1904e65df9SPaolo Abeni const struct nla_policy net_shaper_leaf_info_nl_policy[NET_SHAPER_A_WEIGHT + 1] = { 2004e65df9SPaolo Abeni [NET_SHAPER_A_HANDLE] = NLA_POLICY_NESTED(net_shaper_handle_nl_policy), 2104e65df9SPaolo Abeni [NET_SHAPER_A_PRIORITY] = { .type = NLA_U32, }, 2204e65df9SPaolo Abeni [NET_SHAPER_A_WEIGHT] = { .type = NLA_U32, }, 2304e65df9SPaolo Abeni }; 2404e65df9SPaolo Abeni 2504e65df9SPaolo Abeni /* NET_SHAPER_CMD_GET - do */ 2604e65df9SPaolo Abeni static const struct nla_policy net_shaper_get_do_nl_policy[NET_SHAPER_A_IFINDEX + 1] = { 2704e65df9SPaolo Abeni [NET_SHAPER_A_IFINDEX] = { .type = NLA_U32, }, 2804e65df9SPaolo Abeni [NET_SHAPER_A_HANDLE] = NLA_POLICY_NESTED(net_shaper_handle_nl_policy), 2904e65df9SPaolo Abeni }; 3004e65df9SPaolo Abeni 3104e65df9SPaolo Abeni /* NET_SHAPER_CMD_GET - dump */ 3204e65df9SPaolo Abeni static const struct nla_policy net_shaper_get_dump_nl_policy[NET_SHAPER_A_IFINDEX + 1] = { 3304e65df9SPaolo Abeni [NET_SHAPER_A_IFINDEX] = { .type = NLA_U32, }, 3404e65df9SPaolo Abeni }; 3504e65df9SPaolo Abeni 3604e65df9SPaolo Abeni /* NET_SHAPER_CMD_SET - do */ 3704e65df9SPaolo Abeni static const struct nla_policy net_shaper_set_nl_policy[NET_SHAPER_A_IFINDEX + 1] = { 3804e65df9SPaolo Abeni [NET_SHAPER_A_IFINDEX] = { .type = NLA_U32, }, 3904e65df9SPaolo Abeni [NET_SHAPER_A_HANDLE] = NLA_POLICY_NESTED(net_shaper_handle_nl_policy), 4004e65df9SPaolo Abeni [NET_SHAPER_A_METRIC] = NLA_POLICY_MAX(NLA_U32, 1), 4104e65df9SPaolo Abeni [NET_SHAPER_A_BW_MIN] = { .type = NLA_UINT, }, 4204e65df9SPaolo Abeni [NET_SHAPER_A_BW_MAX] = { .type = NLA_UINT, }, 4304e65df9SPaolo Abeni [NET_SHAPER_A_BURST] = { .type = NLA_UINT, }, 4404e65df9SPaolo Abeni [NET_SHAPER_A_PRIORITY] = { .type = NLA_U32, }, 4504e65df9SPaolo Abeni [NET_SHAPER_A_WEIGHT] = { .type = NLA_U32, }, 4604e65df9SPaolo Abeni }; 4704e65df9SPaolo Abeni 4804e65df9SPaolo Abeni /* NET_SHAPER_CMD_DELETE - do */ 4904e65df9SPaolo Abeni static const struct nla_policy net_shaper_delete_nl_policy[NET_SHAPER_A_IFINDEX + 1] = { 5004e65df9SPaolo Abeni [NET_SHAPER_A_IFINDEX] = { .type = NLA_U32, }, 5104e65df9SPaolo Abeni [NET_SHAPER_A_HANDLE] = NLA_POLICY_NESTED(net_shaper_handle_nl_policy), 5204e65df9SPaolo Abeni }; 5304e65df9SPaolo Abeni 5404e65df9SPaolo Abeni /* NET_SHAPER_CMD_GROUP - do */ 5504e65df9SPaolo Abeni static const struct nla_policy net_shaper_group_nl_policy[NET_SHAPER_A_LEAVES + 1] = { 5604e65df9SPaolo Abeni [NET_SHAPER_A_IFINDEX] = { .type = NLA_U32, }, 5704e65df9SPaolo Abeni [NET_SHAPER_A_PARENT] = NLA_POLICY_NESTED(net_shaper_handle_nl_policy), 5804e65df9SPaolo Abeni [NET_SHAPER_A_HANDLE] = NLA_POLICY_NESTED(net_shaper_handle_nl_policy), 5904e65df9SPaolo Abeni [NET_SHAPER_A_METRIC] = NLA_POLICY_MAX(NLA_U32, 1), 6004e65df9SPaolo Abeni [NET_SHAPER_A_BW_MIN] = { .type = NLA_UINT, }, 6104e65df9SPaolo Abeni [NET_SHAPER_A_BW_MAX] = { .type = NLA_UINT, }, 6204e65df9SPaolo Abeni [NET_SHAPER_A_BURST] = { .type = NLA_UINT, }, 6304e65df9SPaolo Abeni [NET_SHAPER_A_PRIORITY] = { .type = NLA_U32, }, 6404e65df9SPaolo Abeni [NET_SHAPER_A_WEIGHT] = { .type = NLA_U32, }, 6504e65df9SPaolo Abeni [NET_SHAPER_A_LEAVES] = NLA_POLICY_NESTED(net_shaper_leaf_info_nl_policy), 6604e65df9SPaolo Abeni }; 6704e65df9SPaolo Abeni 68*14bba928SPaolo Abeni /* NET_SHAPER_CMD_CAP_GET - do */ 69*14bba928SPaolo Abeni static const struct nla_policy net_shaper_cap_get_do_nl_policy[NET_SHAPER_A_CAPS_SCOPE + 1] = { 70*14bba928SPaolo Abeni [NET_SHAPER_A_CAPS_IFINDEX] = { .type = NLA_U32, }, 71*14bba928SPaolo Abeni [NET_SHAPER_A_CAPS_SCOPE] = NLA_POLICY_MAX(NLA_U32, 3), 72*14bba928SPaolo Abeni }; 73*14bba928SPaolo Abeni 74*14bba928SPaolo Abeni /* NET_SHAPER_CMD_CAP_GET - dump */ 75*14bba928SPaolo Abeni static const struct nla_policy net_shaper_cap_get_dump_nl_policy[NET_SHAPER_A_CAPS_IFINDEX + 1] = { 76*14bba928SPaolo Abeni [NET_SHAPER_A_CAPS_IFINDEX] = { .type = NLA_U32, }, 77*14bba928SPaolo Abeni }; 78*14bba928SPaolo Abeni 7904e65df9SPaolo Abeni /* Ops table for net_shaper */ 8004e65df9SPaolo Abeni static const struct genl_split_ops net_shaper_nl_ops[] = { 8104e65df9SPaolo Abeni { 8204e65df9SPaolo Abeni .cmd = NET_SHAPER_CMD_GET, 8304e65df9SPaolo Abeni .pre_doit = net_shaper_nl_pre_doit, 8404e65df9SPaolo Abeni .doit = net_shaper_nl_get_doit, 8504e65df9SPaolo Abeni .post_doit = net_shaper_nl_post_doit, 8604e65df9SPaolo Abeni .policy = net_shaper_get_do_nl_policy, 8704e65df9SPaolo Abeni .maxattr = NET_SHAPER_A_IFINDEX, 8804e65df9SPaolo Abeni .flags = GENL_CMD_CAP_DO, 8904e65df9SPaolo Abeni }, 9004e65df9SPaolo Abeni { 9104e65df9SPaolo Abeni .cmd = NET_SHAPER_CMD_GET, 9204e65df9SPaolo Abeni .start = net_shaper_nl_pre_dumpit, 9304e65df9SPaolo Abeni .dumpit = net_shaper_nl_get_dumpit, 9404e65df9SPaolo Abeni .done = net_shaper_nl_post_dumpit, 9504e65df9SPaolo Abeni .policy = net_shaper_get_dump_nl_policy, 9604e65df9SPaolo Abeni .maxattr = NET_SHAPER_A_IFINDEX, 9704e65df9SPaolo Abeni .flags = GENL_CMD_CAP_DUMP, 9804e65df9SPaolo Abeni }, 9904e65df9SPaolo Abeni { 10004e65df9SPaolo Abeni .cmd = NET_SHAPER_CMD_SET, 10104e65df9SPaolo Abeni .pre_doit = net_shaper_nl_pre_doit, 10204e65df9SPaolo Abeni .doit = net_shaper_nl_set_doit, 10304e65df9SPaolo Abeni .post_doit = net_shaper_nl_post_doit, 10404e65df9SPaolo Abeni .policy = net_shaper_set_nl_policy, 10504e65df9SPaolo Abeni .maxattr = NET_SHAPER_A_IFINDEX, 10604e65df9SPaolo Abeni .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO, 10704e65df9SPaolo Abeni }, 10804e65df9SPaolo Abeni { 10904e65df9SPaolo Abeni .cmd = NET_SHAPER_CMD_DELETE, 11004e65df9SPaolo Abeni .pre_doit = net_shaper_nl_pre_doit, 11104e65df9SPaolo Abeni .doit = net_shaper_nl_delete_doit, 11204e65df9SPaolo Abeni .post_doit = net_shaper_nl_post_doit, 11304e65df9SPaolo Abeni .policy = net_shaper_delete_nl_policy, 11404e65df9SPaolo Abeni .maxattr = NET_SHAPER_A_IFINDEX, 11504e65df9SPaolo Abeni .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO, 11604e65df9SPaolo Abeni }, 11704e65df9SPaolo Abeni { 11804e65df9SPaolo Abeni .cmd = NET_SHAPER_CMD_GROUP, 11904e65df9SPaolo Abeni .pre_doit = net_shaper_nl_pre_doit, 12004e65df9SPaolo Abeni .doit = net_shaper_nl_group_doit, 12104e65df9SPaolo Abeni .post_doit = net_shaper_nl_post_doit, 12204e65df9SPaolo Abeni .policy = net_shaper_group_nl_policy, 12304e65df9SPaolo Abeni .maxattr = NET_SHAPER_A_LEAVES, 12404e65df9SPaolo Abeni .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO, 12504e65df9SPaolo Abeni }, 126*14bba928SPaolo Abeni { 127*14bba928SPaolo Abeni .cmd = NET_SHAPER_CMD_CAP_GET, 128*14bba928SPaolo Abeni .pre_doit = net_shaper_nl_cap_pre_doit, 129*14bba928SPaolo Abeni .doit = net_shaper_nl_cap_get_doit, 130*14bba928SPaolo Abeni .post_doit = net_shaper_nl_cap_post_doit, 131*14bba928SPaolo Abeni .policy = net_shaper_cap_get_do_nl_policy, 132*14bba928SPaolo Abeni .maxattr = NET_SHAPER_A_CAPS_SCOPE, 133*14bba928SPaolo Abeni .flags = GENL_CMD_CAP_DO, 134*14bba928SPaolo Abeni }, 135*14bba928SPaolo Abeni { 136*14bba928SPaolo Abeni .cmd = NET_SHAPER_CMD_CAP_GET, 137*14bba928SPaolo Abeni .start = net_shaper_nl_cap_pre_dumpit, 138*14bba928SPaolo Abeni .dumpit = net_shaper_nl_cap_get_dumpit, 139*14bba928SPaolo Abeni .done = net_shaper_nl_cap_post_dumpit, 140*14bba928SPaolo Abeni .policy = net_shaper_cap_get_dump_nl_policy, 141*14bba928SPaolo Abeni .maxattr = NET_SHAPER_A_CAPS_IFINDEX, 142*14bba928SPaolo Abeni .flags = GENL_CMD_CAP_DUMP, 143*14bba928SPaolo Abeni }, 14404e65df9SPaolo Abeni }; 14504e65df9SPaolo Abeni 14604e65df9SPaolo Abeni struct genl_family net_shaper_nl_family __ro_after_init = { 14704e65df9SPaolo Abeni .name = NET_SHAPER_FAMILY_NAME, 14804e65df9SPaolo Abeni .version = NET_SHAPER_FAMILY_VERSION, 14904e65df9SPaolo Abeni .netnsok = true, 15004e65df9SPaolo Abeni .parallel_ops = true, 15104e65df9SPaolo Abeni .module = THIS_MODULE, 15204e65df9SPaolo Abeni .split_ops = net_shaper_nl_ops, 15304e65df9SPaolo Abeni .n_split_ops = ARRAY_SIZE(net_shaper_nl_ops), 15404e65df9SPaolo Abeni }; 155