shaper_nl_gen.c 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. // SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
  2. /* Do not edit directly, auto-generated from: */
  3. /* Documentation/netlink/specs/net_shaper.yaml */
  4. /* YNL-GEN kernel source */
  5. /* To regenerate run: tools/net/ynl/ynl-regen.sh */
  6. #include <net/netlink.h>
  7. #include <net/genetlink.h>
  8. #include "shaper_nl_gen.h"
  9. #include <uapi/linux/net_shaper.h>
  10. /* Common nested types */
  11. const struct nla_policy net_shaper_handle_nl_policy[NET_SHAPER_A_HANDLE_ID + 1] = {
  12. [NET_SHAPER_A_HANDLE_SCOPE] = NLA_POLICY_MAX(NLA_U32, 3),
  13. [NET_SHAPER_A_HANDLE_ID] = { .type = NLA_U32, },
  14. };
  15. const struct nla_policy net_shaper_leaf_info_nl_policy[NET_SHAPER_A_WEIGHT + 1] = {
  16. [NET_SHAPER_A_HANDLE] = NLA_POLICY_NESTED(net_shaper_handle_nl_policy),
  17. [NET_SHAPER_A_PRIORITY] = { .type = NLA_U32, },
  18. [NET_SHAPER_A_WEIGHT] = { .type = NLA_U32, },
  19. };
  20. /* NET_SHAPER_CMD_GET - do */
  21. static const struct nla_policy net_shaper_get_do_nl_policy[NET_SHAPER_A_IFINDEX + 1] = {
  22. [NET_SHAPER_A_IFINDEX] = { .type = NLA_U32, },
  23. [NET_SHAPER_A_HANDLE] = NLA_POLICY_NESTED(net_shaper_handle_nl_policy),
  24. };
  25. /* NET_SHAPER_CMD_GET - dump */
  26. static const struct nla_policy net_shaper_get_dump_nl_policy[NET_SHAPER_A_IFINDEX + 1] = {
  27. [NET_SHAPER_A_IFINDEX] = { .type = NLA_U32, },
  28. };
  29. /* NET_SHAPER_CMD_SET - do */
  30. static const struct nla_policy net_shaper_set_nl_policy[NET_SHAPER_A_IFINDEX + 1] = {
  31. [NET_SHAPER_A_IFINDEX] = { .type = NLA_U32, },
  32. [NET_SHAPER_A_HANDLE] = NLA_POLICY_NESTED(net_shaper_handle_nl_policy),
  33. [NET_SHAPER_A_METRIC] = NLA_POLICY_MAX(NLA_U32, 1),
  34. [NET_SHAPER_A_BW_MIN] = { .type = NLA_UINT, },
  35. [NET_SHAPER_A_BW_MAX] = { .type = NLA_UINT, },
  36. [NET_SHAPER_A_BURST] = { .type = NLA_UINT, },
  37. [NET_SHAPER_A_PRIORITY] = { .type = NLA_U32, },
  38. [NET_SHAPER_A_WEIGHT] = { .type = NLA_U32, },
  39. };
  40. /* NET_SHAPER_CMD_DELETE - do */
  41. static const struct nla_policy net_shaper_delete_nl_policy[NET_SHAPER_A_IFINDEX + 1] = {
  42. [NET_SHAPER_A_IFINDEX] = { .type = NLA_U32, },
  43. [NET_SHAPER_A_HANDLE] = NLA_POLICY_NESTED(net_shaper_handle_nl_policy),
  44. };
  45. /* NET_SHAPER_CMD_GROUP - do */
  46. static const struct nla_policy net_shaper_group_nl_policy[NET_SHAPER_A_LEAVES + 1] = {
  47. [NET_SHAPER_A_IFINDEX] = { .type = NLA_U32, },
  48. [NET_SHAPER_A_PARENT] = NLA_POLICY_NESTED(net_shaper_handle_nl_policy),
  49. [NET_SHAPER_A_HANDLE] = NLA_POLICY_NESTED(net_shaper_handle_nl_policy),
  50. [NET_SHAPER_A_METRIC] = NLA_POLICY_MAX(NLA_U32, 1),
  51. [NET_SHAPER_A_BW_MIN] = { .type = NLA_UINT, },
  52. [NET_SHAPER_A_BW_MAX] = { .type = NLA_UINT, },
  53. [NET_SHAPER_A_BURST] = { .type = NLA_UINT, },
  54. [NET_SHAPER_A_PRIORITY] = { .type = NLA_U32, },
  55. [NET_SHAPER_A_WEIGHT] = { .type = NLA_U32, },
  56. [NET_SHAPER_A_LEAVES] = NLA_POLICY_NESTED(net_shaper_leaf_info_nl_policy),
  57. };
  58. /* NET_SHAPER_CMD_CAP_GET - do */
  59. static const struct nla_policy net_shaper_cap_get_do_nl_policy[NET_SHAPER_A_CAPS_SCOPE + 1] = {
  60. [NET_SHAPER_A_CAPS_IFINDEX] = { .type = NLA_U32, },
  61. [NET_SHAPER_A_CAPS_SCOPE] = NLA_POLICY_MAX(NLA_U32, 3),
  62. };
  63. /* NET_SHAPER_CMD_CAP_GET - dump */
  64. static const struct nla_policy net_shaper_cap_get_dump_nl_policy[NET_SHAPER_A_CAPS_IFINDEX + 1] = {
  65. [NET_SHAPER_A_CAPS_IFINDEX] = { .type = NLA_U32, },
  66. };
  67. /* Ops table for net_shaper */
  68. static const struct genl_split_ops net_shaper_nl_ops[] = {
  69. {
  70. .cmd = NET_SHAPER_CMD_GET,
  71. .pre_doit = net_shaper_nl_pre_doit,
  72. .doit = net_shaper_nl_get_doit,
  73. .post_doit = net_shaper_nl_post_doit,
  74. .policy = net_shaper_get_do_nl_policy,
  75. .maxattr = NET_SHAPER_A_IFINDEX,
  76. .flags = GENL_CMD_CAP_DO,
  77. },
  78. {
  79. .cmd = NET_SHAPER_CMD_GET,
  80. .start = net_shaper_nl_pre_dumpit,
  81. .dumpit = net_shaper_nl_get_dumpit,
  82. .done = net_shaper_nl_post_dumpit,
  83. .policy = net_shaper_get_dump_nl_policy,
  84. .maxattr = NET_SHAPER_A_IFINDEX,
  85. .flags = GENL_CMD_CAP_DUMP,
  86. },
  87. {
  88. .cmd = NET_SHAPER_CMD_SET,
  89. .pre_doit = net_shaper_nl_pre_doit_write,
  90. .doit = net_shaper_nl_set_doit,
  91. .post_doit = net_shaper_nl_post_doit_write,
  92. .policy = net_shaper_set_nl_policy,
  93. .maxattr = NET_SHAPER_A_IFINDEX,
  94. .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO,
  95. },
  96. {
  97. .cmd = NET_SHAPER_CMD_DELETE,
  98. .pre_doit = net_shaper_nl_pre_doit_write,
  99. .doit = net_shaper_nl_delete_doit,
  100. .post_doit = net_shaper_nl_post_doit_write,
  101. .policy = net_shaper_delete_nl_policy,
  102. .maxattr = NET_SHAPER_A_IFINDEX,
  103. .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO,
  104. },
  105. {
  106. .cmd = NET_SHAPER_CMD_GROUP,
  107. .pre_doit = net_shaper_nl_pre_doit_write,
  108. .doit = net_shaper_nl_group_doit,
  109. .post_doit = net_shaper_nl_post_doit_write,
  110. .policy = net_shaper_group_nl_policy,
  111. .maxattr = NET_SHAPER_A_LEAVES,
  112. .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO,
  113. },
  114. {
  115. .cmd = NET_SHAPER_CMD_CAP_GET,
  116. .pre_doit = net_shaper_nl_cap_pre_doit,
  117. .doit = net_shaper_nl_cap_get_doit,
  118. .post_doit = net_shaper_nl_cap_post_doit,
  119. .policy = net_shaper_cap_get_do_nl_policy,
  120. .maxattr = NET_SHAPER_A_CAPS_SCOPE,
  121. .flags = GENL_CMD_CAP_DO,
  122. },
  123. {
  124. .cmd = NET_SHAPER_CMD_CAP_GET,
  125. .start = net_shaper_nl_cap_pre_dumpit,
  126. .dumpit = net_shaper_nl_cap_get_dumpit,
  127. .done = net_shaper_nl_cap_post_dumpit,
  128. .policy = net_shaper_cap_get_dump_nl_policy,
  129. .maxattr = NET_SHAPER_A_CAPS_IFINDEX,
  130. .flags = GENL_CMD_CAP_DUMP,
  131. },
  132. };
  133. struct genl_family net_shaper_nl_family __ro_after_init = {
  134. .name = NET_SHAPER_FAMILY_NAME,
  135. .version = NET_SHAPER_FAMILY_VERSION,
  136. .netnsok = true,
  137. .parallel_ops = true,
  138. .module = THIS_MODULE,
  139. .split_ops = net_shaper_nl_ops,
  140. .n_split_ops = ARRAY_SIZE(net_shaper_nl_ops),
  141. };