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