xref: /aosp_15_r20/external/ethtool/uapi/linux/genetlink.h (revision 1b481fc3bb1b45d4cf28d1ec12969dc1055f555d)
1*1b481fc3SMaciej Żenczykowski /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2*1b481fc3SMaciej Żenczykowski #ifndef __LINUX_GENERIC_NETLINK_H
3*1b481fc3SMaciej Żenczykowski #define __LINUX_GENERIC_NETLINK_H
4*1b481fc3SMaciej Żenczykowski 
5*1b481fc3SMaciej Żenczykowski #include <linux/types.h>
6*1b481fc3SMaciej Żenczykowski #include <linux/netlink.h>
7*1b481fc3SMaciej Żenczykowski 
8*1b481fc3SMaciej Żenczykowski #define GENL_NAMSIZ	16	/* length of family name */
9*1b481fc3SMaciej Żenczykowski 
10*1b481fc3SMaciej Żenczykowski #define GENL_MIN_ID	NLMSG_MIN_TYPE
11*1b481fc3SMaciej Żenczykowski #define GENL_MAX_ID	1023
12*1b481fc3SMaciej Żenczykowski 
13*1b481fc3SMaciej Żenczykowski struct genlmsghdr {
14*1b481fc3SMaciej Żenczykowski 	__u8	cmd;
15*1b481fc3SMaciej Żenczykowski 	__u8	version;
16*1b481fc3SMaciej Żenczykowski 	__u16	reserved;
17*1b481fc3SMaciej Żenczykowski };
18*1b481fc3SMaciej Żenczykowski 
19*1b481fc3SMaciej Żenczykowski #define GENL_HDRLEN	NLMSG_ALIGN(sizeof(struct genlmsghdr))
20*1b481fc3SMaciej Żenczykowski 
21*1b481fc3SMaciej Żenczykowski #define GENL_ADMIN_PERM		0x01
22*1b481fc3SMaciej Żenczykowski #define GENL_CMD_CAP_DO		0x02
23*1b481fc3SMaciej Żenczykowski #define GENL_CMD_CAP_DUMP	0x04
24*1b481fc3SMaciej Żenczykowski #define GENL_CMD_CAP_HASPOL	0x08
25*1b481fc3SMaciej Żenczykowski #define GENL_UNS_ADMIN_PERM	0x10
26*1b481fc3SMaciej Żenczykowski 
27*1b481fc3SMaciej Żenczykowski /*
28*1b481fc3SMaciej Żenczykowski  * List of reserved static generic netlink identifiers:
29*1b481fc3SMaciej Żenczykowski  */
30*1b481fc3SMaciej Żenczykowski #define GENL_ID_CTRL		NLMSG_MIN_TYPE
31*1b481fc3SMaciej Żenczykowski #define GENL_ID_VFS_DQUOT	(NLMSG_MIN_TYPE + 1)
32*1b481fc3SMaciej Żenczykowski #define GENL_ID_PMCRAID		(NLMSG_MIN_TYPE + 2)
33*1b481fc3SMaciej Żenczykowski /* must be last reserved + 1 */
34*1b481fc3SMaciej Żenczykowski #define GENL_START_ALLOC	(NLMSG_MIN_TYPE + 3)
35*1b481fc3SMaciej Żenczykowski 
36*1b481fc3SMaciej Żenczykowski /**************************************************************************
37*1b481fc3SMaciej Żenczykowski  * Controller
38*1b481fc3SMaciej Żenczykowski  **************************************************************************/
39*1b481fc3SMaciej Żenczykowski 
40*1b481fc3SMaciej Żenczykowski enum {
41*1b481fc3SMaciej Żenczykowski 	CTRL_CMD_UNSPEC,
42*1b481fc3SMaciej Żenczykowski 	CTRL_CMD_NEWFAMILY,
43*1b481fc3SMaciej Żenczykowski 	CTRL_CMD_DELFAMILY,
44*1b481fc3SMaciej Żenczykowski 	CTRL_CMD_GETFAMILY,
45*1b481fc3SMaciej Żenczykowski 	CTRL_CMD_NEWOPS,
46*1b481fc3SMaciej Żenczykowski 	CTRL_CMD_DELOPS,
47*1b481fc3SMaciej Żenczykowski 	CTRL_CMD_GETOPS,
48*1b481fc3SMaciej Żenczykowski 	CTRL_CMD_NEWMCAST_GRP,
49*1b481fc3SMaciej Żenczykowski 	CTRL_CMD_DELMCAST_GRP,
50*1b481fc3SMaciej Żenczykowski 	CTRL_CMD_GETMCAST_GRP, /* unused */
51*1b481fc3SMaciej Żenczykowski 	CTRL_CMD_GETPOLICY,
52*1b481fc3SMaciej Żenczykowski 	__CTRL_CMD_MAX,
53*1b481fc3SMaciej Żenczykowski };
54*1b481fc3SMaciej Żenczykowski 
55*1b481fc3SMaciej Żenczykowski #define CTRL_CMD_MAX (__CTRL_CMD_MAX - 1)
56*1b481fc3SMaciej Żenczykowski 
57*1b481fc3SMaciej Żenczykowski enum {
58*1b481fc3SMaciej Żenczykowski 	CTRL_ATTR_UNSPEC,
59*1b481fc3SMaciej Żenczykowski 	CTRL_ATTR_FAMILY_ID,
60*1b481fc3SMaciej Żenczykowski 	CTRL_ATTR_FAMILY_NAME,
61*1b481fc3SMaciej Żenczykowski 	CTRL_ATTR_VERSION,
62*1b481fc3SMaciej Żenczykowski 	CTRL_ATTR_HDRSIZE,
63*1b481fc3SMaciej Żenczykowski 	CTRL_ATTR_MAXATTR,
64*1b481fc3SMaciej Żenczykowski 	CTRL_ATTR_OPS,
65*1b481fc3SMaciej Żenczykowski 	CTRL_ATTR_MCAST_GROUPS,
66*1b481fc3SMaciej Żenczykowski 	CTRL_ATTR_POLICY,
67*1b481fc3SMaciej Żenczykowski 	CTRL_ATTR_OP_POLICY,
68*1b481fc3SMaciej Żenczykowski 	CTRL_ATTR_OP,
69*1b481fc3SMaciej Żenczykowski 	__CTRL_ATTR_MAX,
70*1b481fc3SMaciej Żenczykowski };
71*1b481fc3SMaciej Żenczykowski 
72*1b481fc3SMaciej Żenczykowski #define CTRL_ATTR_MAX (__CTRL_ATTR_MAX - 1)
73*1b481fc3SMaciej Żenczykowski 
74*1b481fc3SMaciej Żenczykowski enum {
75*1b481fc3SMaciej Żenczykowski 	CTRL_ATTR_OP_UNSPEC,
76*1b481fc3SMaciej Żenczykowski 	CTRL_ATTR_OP_ID,
77*1b481fc3SMaciej Żenczykowski 	CTRL_ATTR_OP_FLAGS,
78*1b481fc3SMaciej Żenczykowski 	__CTRL_ATTR_OP_MAX,
79*1b481fc3SMaciej Żenczykowski };
80*1b481fc3SMaciej Żenczykowski 
81*1b481fc3SMaciej Żenczykowski #define CTRL_ATTR_OP_MAX (__CTRL_ATTR_OP_MAX - 1)
82*1b481fc3SMaciej Żenczykowski 
83*1b481fc3SMaciej Żenczykowski enum {
84*1b481fc3SMaciej Żenczykowski 	CTRL_ATTR_MCAST_GRP_UNSPEC,
85*1b481fc3SMaciej Żenczykowski 	CTRL_ATTR_MCAST_GRP_NAME,
86*1b481fc3SMaciej Żenczykowski 	CTRL_ATTR_MCAST_GRP_ID,
87*1b481fc3SMaciej Żenczykowski 	__CTRL_ATTR_MCAST_GRP_MAX,
88*1b481fc3SMaciej Żenczykowski };
89*1b481fc3SMaciej Żenczykowski 
90*1b481fc3SMaciej Żenczykowski #define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
91*1b481fc3SMaciej Żenczykowski 
92*1b481fc3SMaciej Żenczykowski enum {
93*1b481fc3SMaciej Żenczykowski 	CTRL_ATTR_POLICY_UNSPEC,
94*1b481fc3SMaciej Żenczykowski 	CTRL_ATTR_POLICY_DO,
95*1b481fc3SMaciej Żenczykowski 	CTRL_ATTR_POLICY_DUMP,
96*1b481fc3SMaciej Żenczykowski 
97*1b481fc3SMaciej Żenczykowski 	__CTRL_ATTR_POLICY_DUMP_MAX,
98*1b481fc3SMaciej Żenczykowski 	CTRL_ATTR_POLICY_DUMP_MAX = __CTRL_ATTR_POLICY_DUMP_MAX - 1
99*1b481fc3SMaciej Żenczykowski };
100*1b481fc3SMaciej Żenczykowski 
101*1b481fc3SMaciej Żenczykowski #define CTRL_ATTR_POLICY_MAX (__CTRL_ATTR_POLICY_DUMP_MAX - 1)
102*1b481fc3SMaciej Żenczykowski 
103*1b481fc3SMaciej Żenczykowski #endif /* __LINUX_GENERIC_NETLINK_H */
104