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