xref: /aosp_15_r20/external/ethtool/netlink/desc-genlctrl.c (revision 1b481fc3bb1b45d4cf28d1ec12969dc1055f555d)
1*1b481fc3SMaciej Żenczykowski /*
2*1b481fc3SMaciej Żenczykowski  * desc-genlctrl.c - genetlink control format descriptions
3*1b481fc3SMaciej Żenczykowski  *
4*1b481fc3SMaciej Żenczykowski  * Descriptions of genetlink control messages and attributes for pretty print.
5*1b481fc3SMaciej Żenczykowski  */
6*1b481fc3SMaciej Żenczykowski 
7*1b481fc3SMaciej Żenczykowski #include <linux/genetlink.h>
8*1b481fc3SMaciej Żenczykowski 
9*1b481fc3SMaciej Żenczykowski #include "../internal.h"
10*1b481fc3SMaciej Żenczykowski #include "prettymsg.h"
11*1b481fc3SMaciej Żenczykowski 
12*1b481fc3SMaciej Żenczykowski static const struct pretty_nla_desc __attrop_desc[] = {
13*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_INVALID(CTRL_ATTR_OP_UNSPEC),
14*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_U32(CTRL_ATTR_OP_ID),
15*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_X32(CTRL_ATTR_OP_FLAGS),
16*1b481fc3SMaciej Żenczykowski };
17*1b481fc3SMaciej Żenczykowski 
18*1b481fc3SMaciej Żenczykowski static const struct pretty_nla_desc __attrops_desc[] = {
19*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_NESTED(0, attrop),
20*1b481fc3SMaciej Żenczykowski };
21*1b481fc3SMaciej Żenczykowski 
22*1b481fc3SMaciej Żenczykowski static const struct pretty_nla_desc __mcgrp_desc[] = {
23*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_INVALID(CTRL_ATTR_MCAST_GRP_UNSPEC),
24*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_STRING(CTRL_ATTR_MCAST_GRP_NAME),
25*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_U32(CTRL_ATTR_MCAST_GRP_ID),
26*1b481fc3SMaciej Żenczykowski };
27*1b481fc3SMaciej Żenczykowski 
28*1b481fc3SMaciej Żenczykowski static const struct pretty_nla_desc __mcgrps_desc[] = {
29*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_NESTED(0, mcgrp),
30*1b481fc3SMaciej Żenczykowski };
31*1b481fc3SMaciej Żenczykowski 
32*1b481fc3SMaciej Żenczykowski static const char *__policy_attr_type_names[] = {
33*1b481fc3SMaciej Żenczykowski 	[NL_ATTR_TYPE_INVALID]		= "NL_ATTR_TYPE_INVALID",
34*1b481fc3SMaciej Żenczykowski 	[NL_ATTR_TYPE_FLAG]		= "NL_ATTR_TYPE_FLAG",
35*1b481fc3SMaciej Żenczykowski 	[NL_ATTR_TYPE_U8]		= "NL_ATTR_TYPE_U8",
36*1b481fc3SMaciej Żenczykowski 	[NL_ATTR_TYPE_U16]		= "NL_ATTR_TYPE_U16",
37*1b481fc3SMaciej Żenczykowski 	[NL_ATTR_TYPE_U32]		= "NL_ATTR_TYPE_U32",
38*1b481fc3SMaciej Żenczykowski 	[NL_ATTR_TYPE_U64]		= "NL_ATTR_TYPE_U64",
39*1b481fc3SMaciej Żenczykowski 	[NL_ATTR_TYPE_S8]		= "NL_ATTR_TYPE_S8",
40*1b481fc3SMaciej Żenczykowski 	[NL_ATTR_TYPE_S16]		= "NL_ATTR_TYPE_S16",
41*1b481fc3SMaciej Żenczykowski 	[NL_ATTR_TYPE_S32]		= "NL_ATTR_TYPE_S32",
42*1b481fc3SMaciej Żenczykowski 	[NL_ATTR_TYPE_S64]		= "NL_ATTR_TYPE_S64",
43*1b481fc3SMaciej Żenczykowski 	[NL_ATTR_TYPE_BINARY]		= "NL_ATTR_TYPE_BINARY",
44*1b481fc3SMaciej Żenczykowski 	[NL_ATTR_TYPE_STRING]		= "NL_ATTR_TYPE_STRING",
45*1b481fc3SMaciej Żenczykowski 	[NL_ATTR_TYPE_NUL_STRING]	= "NL_ATTR_TYPE_NUL_STRING",
46*1b481fc3SMaciej Żenczykowski 	[NL_ATTR_TYPE_NESTED]		= "NL_ATTR_TYPE_NESTED",
47*1b481fc3SMaciej Żenczykowski 	[NL_ATTR_TYPE_NESTED_ARRAY]	= "NL_ATTR_TYPE_NESTED_ARRAY",
48*1b481fc3SMaciej Żenczykowski 	[NL_ATTR_TYPE_BITFIELD32]	= "NL_ATTR_TYPE_BITFIELD32",
49*1b481fc3SMaciej Żenczykowski };
50*1b481fc3SMaciej Żenczykowski 
51*1b481fc3SMaciej Żenczykowski static const struct pretty_nla_desc __policy_attr_desc[] = {
52*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_INVALID(NL_POLICY_TYPE_ATTR_UNSPEC),
53*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_U32_ENUM(NL_POLICY_TYPE_ATTR_TYPE, policy_attr_type),
54*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_S64(NL_POLICY_TYPE_ATTR_MIN_VALUE_S),
55*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_S64(NL_POLICY_TYPE_ATTR_MAX_VALUE_S),
56*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_U64(NL_POLICY_TYPE_ATTR_MIN_VALUE_U),
57*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_U64(NL_POLICY_TYPE_ATTR_MAX_VALUE_U),
58*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_U32(NL_POLICY_TYPE_ATTR_MIN_LENGTH),
59*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_U32(NL_POLICY_TYPE_ATTR_MAX_LENGTH),
60*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_U32(NL_POLICY_TYPE_ATTR_POLICY_IDX),
61*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_U32(NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE),
62*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_X32(NL_POLICY_TYPE_ATTR_BITFIELD32_MASK),
63*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_X64(NL_POLICY_TYPE_ATTR_PAD),
64*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_BINARY(NL_POLICY_TYPE_ATTR_MASK),
65*1b481fc3SMaciej Żenczykowski };
66*1b481fc3SMaciej Żenczykowski 
67*1b481fc3SMaciej Żenczykowski static const struct pretty_nla_desc __policy_attrs_desc[] = {
68*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_NESTED(0, policy_attr),
69*1b481fc3SMaciej Żenczykowski };
70*1b481fc3SMaciej Żenczykowski 
71*1b481fc3SMaciej Żenczykowski static const struct pretty_nla_desc __policies_desc[] = {
72*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_ARRAY(0, policy_attrs),
73*1b481fc3SMaciej Żenczykowski };
74*1b481fc3SMaciej Żenczykowski 
75*1b481fc3SMaciej Żenczykowski static const struct pretty_nla_desc __op_policy_desc[] = {
76*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_INVALID(CTRL_ATTR_POLICY_UNSPEC),
77*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_U32(CTRL_ATTR_POLICY_DO),
78*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_U32(CTRL_ATTR_POLICY_DUMP),
79*1b481fc3SMaciej Żenczykowski };
80*1b481fc3SMaciej Żenczykowski 
81*1b481fc3SMaciej Żenczykowski static const struct pretty_nla_desc __op_policies_desc[] = {
82*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_NESTED(0, op_policy),
83*1b481fc3SMaciej Żenczykowski };
84*1b481fc3SMaciej Żenczykowski 
85*1b481fc3SMaciej Żenczykowski static const struct pretty_nla_desc __attr_desc[] = {
86*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_INVALID(CTRL_ATTR_UNSPEC),
87*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_U16(CTRL_ATTR_FAMILY_ID),
88*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_STRING(CTRL_ATTR_FAMILY_NAME),
89*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_U32(CTRL_ATTR_VERSION),
90*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_U32(CTRL_ATTR_HDRSIZE),
91*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_U32(CTRL_ATTR_MAXATTR),
92*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_ARRAY(CTRL_ATTR_OPS, attrops),
93*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_ARRAY(CTRL_ATTR_MCAST_GROUPS, mcgrps),
94*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_ARRAY(CTRL_ATTR_POLICY, policies),
95*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_ARRAY(CTRL_ATTR_OP_POLICY, op_policies),
96*1b481fc3SMaciej Żenczykowski 	NLATTR_DESC_U32(CTRL_ATTR_OP),
97*1b481fc3SMaciej Żenczykowski };
98*1b481fc3SMaciej Żenczykowski 
99*1b481fc3SMaciej Żenczykowski const struct pretty_nlmsg_desc genlctrl_msg_desc[] = {
100*1b481fc3SMaciej Żenczykowski 	NLMSG_DESC_INVALID(CTRL_CMD_UNSPEC),
101*1b481fc3SMaciej Żenczykowski 	NLMSG_DESC(CTRL_CMD_NEWFAMILY, attr),
102*1b481fc3SMaciej Żenczykowski 	NLMSG_DESC(CTRL_CMD_DELFAMILY, attr),
103*1b481fc3SMaciej Żenczykowski 	NLMSG_DESC(CTRL_CMD_GETFAMILY, attr),
104*1b481fc3SMaciej Żenczykowski 	NLMSG_DESC(CTRL_CMD_NEWOPS, attr),
105*1b481fc3SMaciej Żenczykowski 	NLMSG_DESC(CTRL_CMD_DELOPS, attr),
106*1b481fc3SMaciej Żenczykowski 	NLMSG_DESC(CTRL_CMD_GETOPS, attr),
107*1b481fc3SMaciej Żenczykowski 	NLMSG_DESC(CTRL_CMD_NEWMCAST_GRP, attr),
108*1b481fc3SMaciej Żenczykowski 	NLMSG_DESC(CTRL_CMD_DELMCAST_GRP, attr),
109*1b481fc3SMaciej Żenczykowski 	NLMSG_DESC(CTRL_CMD_GETMCAST_GRP, attr),
110*1b481fc3SMaciej Żenczykowski 	NLMSG_DESC(CTRL_CMD_GETPOLICY, attr),
111*1b481fc3SMaciej Żenczykowski };
112*1b481fc3SMaciej Żenczykowski 
113*1b481fc3SMaciej Żenczykowski const unsigned int genlctrl_msg_n_desc = ARRAY_SIZE(genlctrl_msg_desc);
114