xref: /linux/include/uapi/linux/genetlink.h (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
16f52b16cSGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2607ca46eSDavid Howells #ifndef _UAPI__LINUX_GENERIC_NETLINK_H
3607ca46eSDavid Howells #define _UAPI__LINUX_GENERIC_NETLINK_H
4607ca46eSDavid Howells 
5607ca46eSDavid Howells #include <linux/types.h>
6607ca46eSDavid Howells #include <linux/netlink.h>
7607ca46eSDavid Howells 
8607ca46eSDavid Howells #define GENL_NAMSIZ	16	/* length of family name */
9607ca46eSDavid Howells 
10607ca46eSDavid Howells #define GENL_MIN_ID	NLMSG_MIN_TYPE
11607ca46eSDavid Howells #define GENL_MAX_ID	1023
12607ca46eSDavid Howells 
13607ca46eSDavid Howells struct genlmsghdr {
14607ca46eSDavid Howells 	__u8	cmd;
15607ca46eSDavid Howells 	__u8	version;
16607ca46eSDavid Howells 	__u16	reserved;
17607ca46eSDavid Howells };
18607ca46eSDavid Howells 
19607ca46eSDavid Howells #define GENL_HDRLEN	NLMSG_ALIGN(sizeof(struct genlmsghdr))
20607ca46eSDavid Howells 
21607ca46eSDavid Howells #define GENL_ADMIN_PERM		0x01
22607ca46eSDavid Howells #define GENL_CMD_CAP_DO		0x02
23607ca46eSDavid Howells #define GENL_CMD_CAP_DUMP	0x04
24607ca46eSDavid Howells #define GENL_CMD_CAP_HASPOL	0x08
254a92602aSTycho Andersen #define GENL_UNS_ADMIN_PERM	0x10
26607ca46eSDavid Howells 
27607ca46eSDavid Howells /*
28607ca46eSDavid Howells  * List of reserved static generic netlink identifiers:
29607ca46eSDavid Howells  */
30607ca46eSDavid Howells #define GENL_ID_CTRL		NLMSG_MIN_TYPE
312ecf7536SJohannes Berg #define GENL_ID_VFS_DQUOT	(NLMSG_MIN_TYPE + 1)
325e53e689SJohannes Berg #define GENL_ID_PMCRAID		(NLMSG_MIN_TYPE + 2)
332ae0f17dSJohannes Berg /* must be last reserved + 1 */
342ae0f17dSJohannes Berg #define GENL_START_ALLOC	(NLMSG_MIN_TYPE + 3)
35607ca46eSDavid Howells 
36607ca46eSDavid Howells /**************************************************************************
37607ca46eSDavid Howells  * Controller
38607ca46eSDavid Howells  **************************************************************************/
39607ca46eSDavid Howells 
40607ca46eSDavid Howells enum {
41607ca46eSDavid Howells 	CTRL_CMD_UNSPEC,
42607ca46eSDavid Howells 	CTRL_CMD_NEWFAMILY,
43607ca46eSDavid Howells 	CTRL_CMD_DELFAMILY,
44607ca46eSDavid Howells 	CTRL_CMD_GETFAMILY,
45607ca46eSDavid Howells 	CTRL_CMD_NEWOPS,
46607ca46eSDavid Howells 	CTRL_CMD_DELOPS,
47607ca46eSDavid Howells 	CTRL_CMD_GETOPS,
48607ca46eSDavid Howells 	CTRL_CMD_NEWMCAST_GRP,
49607ca46eSDavid Howells 	CTRL_CMD_DELMCAST_GRP,
50607ca46eSDavid Howells 	CTRL_CMD_GETMCAST_GRP, /* unused */
51d07dcf9aSJohannes Berg 	CTRL_CMD_GETPOLICY,
52607ca46eSDavid Howells 	__CTRL_CMD_MAX,
53607ca46eSDavid Howells };
54607ca46eSDavid Howells 
55607ca46eSDavid Howells #define CTRL_CMD_MAX (__CTRL_CMD_MAX - 1)
56607ca46eSDavid Howells 
57607ca46eSDavid Howells enum {
58607ca46eSDavid Howells 	CTRL_ATTR_UNSPEC,
59607ca46eSDavid Howells 	CTRL_ATTR_FAMILY_ID,
60607ca46eSDavid Howells 	CTRL_ATTR_FAMILY_NAME,
61607ca46eSDavid Howells 	CTRL_ATTR_VERSION,
62607ca46eSDavid Howells 	CTRL_ATTR_HDRSIZE,
63607ca46eSDavid Howells 	CTRL_ATTR_MAXATTR,
64607ca46eSDavid Howells 	CTRL_ATTR_OPS,
65607ca46eSDavid Howells 	CTRL_ATTR_MCAST_GROUPS,
66d07dcf9aSJohannes Berg 	CTRL_ATTR_POLICY,
6750a896cfSJohannes Berg 	CTRL_ATTR_OP_POLICY,
68e992a6edSJakub Kicinski 	CTRL_ATTR_OP,
69607ca46eSDavid Howells 	__CTRL_ATTR_MAX,
70607ca46eSDavid Howells };
71607ca46eSDavid Howells 
72607ca46eSDavid Howells #define CTRL_ATTR_MAX (__CTRL_ATTR_MAX - 1)
73607ca46eSDavid Howells 
74607ca46eSDavid Howells enum {
75607ca46eSDavid Howells 	CTRL_ATTR_OP_UNSPEC,
76607ca46eSDavid Howells 	CTRL_ATTR_OP_ID,
77607ca46eSDavid Howells 	CTRL_ATTR_OP_FLAGS,
78607ca46eSDavid Howells 	__CTRL_ATTR_OP_MAX,
79607ca46eSDavid Howells };
80607ca46eSDavid Howells 
81607ca46eSDavid Howells #define CTRL_ATTR_OP_MAX (__CTRL_ATTR_OP_MAX - 1)
82607ca46eSDavid Howells 
83607ca46eSDavid Howells enum {
84607ca46eSDavid Howells 	CTRL_ATTR_MCAST_GRP_UNSPEC,
85607ca46eSDavid Howells 	CTRL_ATTR_MCAST_GRP_NAME,
86607ca46eSDavid Howells 	CTRL_ATTR_MCAST_GRP_ID,
87607ca46eSDavid Howells 	__CTRL_ATTR_MCAST_GRP_MAX,
88607ca46eSDavid Howells };
89607ca46eSDavid Howells 
90*f329a0ebSJakub Kicinski #define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
91*f329a0ebSJakub Kicinski 
9250a896cfSJohannes Berg enum {
9350a896cfSJohannes Berg 	CTRL_ATTR_POLICY_UNSPEC,
9450a896cfSJohannes Berg 	CTRL_ATTR_POLICY_DO,
9550a896cfSJohannes Berg 	CTRL_ATTR_POLICY_DUMP,
9650a896cfSJohannes Berg 
9750a896cfSJohannes Berg 	__CTRL_ATTR_POLICY_DUMP_MAX,
9850a896cfSJohannes Berg 	CTRL_ATTR_POLICY_DUMP_MAX = __CTRL_ATTR_POLICY_DUMP_MAX - 1
9950a896cfSJohannes Berg };
10050a896cfSJohannes Berg 
101*f329a0ebSJakub Kicinski #define CTRL_ATTR_POLICY_MAX (__CTRL_ATTR_POLICY_DUMP_MAX - 1)
102607ca46eSDavid Howells 
103607ca46eSDavid Howells #endif /* _UAPI__LINUX_GENERIC_NETLINK_H */
104