1*53ee8cc1Swenshuai.xi #ifndef __LINUX_GENERIC_NETLINK_H 2*53ee8cc1Swenshuai.xi #define __LINUX_GENERIC_NETLINK_H 3*53ee8cc1Swenshuai.xi 4*53ee8cc1Swenshuai.xi #include <linux/netlink.h> 5*53ee8cc1Swenshuai.xi 6*53ee8cc1Swenshuai.xi #define GENL_NAMSIZ 16 /* length of family name */ 7*53ee8cc1Swenshuai.xi 8*53ee8cc1Swenshuai.xi #define GENL_MIN_ID NLMSG_MIN_TYPE 9*53ee8cc1Swenshuai.xi #define GENL_MAX_ID 1023 10*53ee8cc1Swenshuai.xi 11*53ee8cc1Swenshuai.xi struct genlmsghdr { 12*53ee8cc1Swenshuai.xi __u8 cmd; 13*53ee8cc1Swenshuai.xi __u8 version; 14*53ee8cc1Swenshuai.xi __u16 reserved; 15*53ee8cc1Swenshuai.xi }; 16*53ee8cc1Swenshuai.xi 17*53ee8cc1Swenshuai.xi #define GENL_HDRLEN NLMSG_ALIGN(sizeof(struct genlmsghdr)) 18*53ee8cc1Swenshuai.xi 19*53ee8cc1Swenshuai.xi #define GENL_ADMIN_PERM 0x01 20*53ee8cc1Swenshuai.xi #define GENL_CMD_CAP_DO 0x02 21*53ee8cc1Swenshuai.xi #define GENL_CMD_CAP_DUMP 0x04 22*53ee8cc1Swenshuai.xi #define GENL_CMD_CAP_HASPOL 0x08 23*53ee8cc1Swenshuai.xi 24*53ee8cc1Swenshuai.xi /* 25*53ee8cc1Swenshuai.xi * List of reserved static generic netlink identifiers: 26*53ee8cc1Swenshuai.xi */ 27*53ee8cc1Swenshuai.xi #define GENL_ID_GENERATE 0 28*53ee8cc1Swenshuai.xi #define GENL_ID_CTRL NLMSG_MIN_TYPE 29*53ee8cc1Swenshuai.xi 30*53ee8cc1Swenshuai.xi /************************************************************************** 31*53ee8cc1Swenshuai.xi * Controller 32*53ee8cc1Swenshuai.xi **************************************************************************/ 33*53ee8cc1Swenshuai.xi 34*53ee8cc1Swenshuai.xi enum { 35*53ee8cc1Swenshuai.xi CTRL_CMD_UNSPEC, 36*53ee8cc1Swenshuai.xi CTRL_CMD_NEWFAMILY, 37*53ee8cc1Swenshuai.xi CTRL_CMD_DELFAMILY, 38*53ee8cc1Swenshuai.xi CTRL_CMD_GETFAMILY, 39*53ee8cc1Swenshuai.xi CTRL_CMD_NEWOPS, 40*53ee8cc1Swenshuai.xi CTRL_CMD_DELOPS, 41*53ee8cc1Swenshuai.xi CTRL_CMD_GETOPS, 42*53ee8cc1Swenshuai.xi CTRL_CMD_NEWMCAST_GRP, 43*53ee8cc1Swenshuai.xi CTRL_CMD_DELMCAST_GRP, 44*53ee8cc1Swenshuai.xi CTRL_CMD_GETMCAST_GRP, /* unused */ 45*53ee8cc1Swenshuai.xi __CTRL_CMD_MAX, 46*53ee8cc1Swenshuai.xi }; 47*53ee8cc1Swenshuai.xi 48*53ee8cc1Swenshuai.xi #define CTRL_CMD_MAX (__CTRL_CMD_MAX - 1) 49*53ee8cc1Swenshuai.xi 50*53ee8cc1Swenshuai.xi enum { 51*53ee8cc1Swenshuai.xi CTRL_ATTR_UNSPEC, 52*53ee8cc1Swenshuai.xi CTRL_ATTR_FAMILY_ID, 53*53ee8cc1Swenshuai.xi CTRL_ATTR_FAMILY_NAME, 54*53ee8cc1Swenshuai.xi CTRL_ATTR_VERSION, 55*53ee8cc1Swenshuai.xi CTRL_ATTR_HDRSIZE, 56*53ee8cc1Swenshuai.xi CTRL_ATTR_MAXATTR, 57*53ee8cc1Swenshuai.xi CTRL_ATTR_OPS, 58*53ee8cc1Swenshuai.xi CTRL_ATTR_MCAST_GROUPS, 59*53ee8cc1Swenshuai.xi __CTRL_ATTR_MAX, 60*53ee8cc1Swenshuai.xi }; 61*53ee8cc1Swenshuai.xi 62*53ee8cc1Swenshuai.xi #define CTRL_ATTR_MAX (__CTRL_ATTR_MAX - 1) 63*53ee8cc1Swenshuai.xi 64*53ee8cc1Swenshuai.xi enum { 65*53ee8cc1Swenshuai.xi CTRL_ATTR_OP_UNSPEC, 66*53ee8cc1Swenshuai.xi CTRL_ATTR_OP_ID, 67*53ee8cc1Swenshuai.xi CTRL_ATTR_OP_FLAGS, 68*53ee8cc1Swenshuai.xi __CTRL_ATTR_OP_MAX, 69*53ee8cc1Swenshuai.xi }; 70*53ee8cc1Swenshuai.xi 71*53ee8cc1Swenshuai.xi #define CTRL_ATTR_OP_MAX (__CTRL_ATTR_OP_MAX - 1) 72*53ee8cc1Swenshuai.xi 73*53ee8cc1Swenshuai.xi enum { 74*53ee8cc1Swenshuai.xi CTRL_ATTR_MCAST_GRP_UNSPEC, 75*53ee8cc1Swenshuai.xi CTRL_ATTR_MCAST_GRP_NAME, 76*53ee8cc1Swenshuai.xi CTRL_ATTR_MCAST_GRP_ID, 77*53ee8cc1Swenshuai.xi __CTRL_ATTR_MCAST_GRP_MAX, 78*53ee8cc1Swenshuai.xi }; 79*53ee8cc1Swenshuai.xi 80*53ee8cc1Swenshuai.xi #define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1) 81*53ee8cc1Swenshuai.xi 82*53ee8cc1Swenshuai.xi #endif /* __LINUX_GENERIC_NETLINK_H */ 83