1*1b481fc3SMaciej Żenczykowski /* 2*1b481fc3SMaciej Żenczykowski * desc-genlctrl.c - genetlink control format descriptions 3*1b481fc3SMaciej Żenczykowski * 4*1b481fc3SMaciej Żenczykowski * Descriptions of genetlink control messages and attributes for pretty print. 5*1b481fc3SMaciej Żenczykowski */ 6*1b481fc3SMaciej Żenczykowski 7*1b481fc3SMaciej Żenczykowski #include <linux/genetlink.h> 8*1b481fc3SMaciej Żenczykowski 9*1b481fc3SMaciej Żenczykowski #include "../internal.h" 10*1b481fc3SMaciej Żenczykowski #include "prettymsg.h" 11*1b481fc3SMaciej Żenczykowski 12*1b481fc3SMaciej Żenczykowski static const struct pretty_nla_desc __attrop_desc[] = { 13*1b481fc3SMaciej Żenczykowski NLATTR_DESC_INVALID(CTRL_ATTR_OP_UNSPEC), 14*1b481fc3SMaciej Żenczykowski NLATTR_DESC_U32(CTRL_ATTR_OP_ID), 15*1b481fc3SMaciej Żenczykowski NLATTR_DESC_X32(CTRL_ATTR_OP_FLAGS), 16*1b481fc3SMaciej Żenczykowski }; 17*1b481fc3SMaciej Żenczykowski 18*1b481fc3SMaciej Żenczykowski static const struct pretty_nla_desc __attrops_desc[] = { 19*1b481fc3SMaciej Żenczykowski NLATTR_DESC_NESTED(0, attrop), 20*1b481fc3SMaciej Żenczykowski }; 21*1b481fc3SMaciej Żenczykowski 22*1b481fc3SMaciej Żenczykowski static const struct pretty_nla_desc __mcgrp_desc[] = { 23*1b481fc3SMaciej Żenczykowski NLATTR_DESC_INVALID(CTRL_ATTR_MCAST_GRP_UNSPEC), 24*1b481fc3SMaciej Żenczykowski NLATTR_DESC_STRING(CTRL_ATTR_MCAST_GRP_NAME), 25*1b481fc3SMaciej Żenczykowski NLATTR_DESC_U32(CTRL_ATTR_MCAST_GRP_ID), 26*1b481fc3SMaciej Żenczykowski }; 27*1b481fc3SMaciej Żenczykowski 28*1b481fc3SMaciej Żenczykowski static const struct pretty_nla_desc __mcgrps_desc[] = { 29*1b481fc3SMaciej Żenczykowski NLATTR_DESC_NESTED(0, mcgrp), 30*1b481fc3SMaciej Żenczykowski }; 31*1b481fc3SMaciej Żenczykowski 32*1b481fc3SMaciej Żenczykowski static const char *__policy_attr_type_names[] = { 33*1b481fc3SMaciej Żenczykowski [NL_ATTR_TYPE_INVALID] = "NL_ATTR_TYPE_INVALID", 34*1b481fc3SMaciej Żenczykowski [NL_ATTR_TYPE_FLAG] = "NL_ATTR_TYPE_FLAG", 35*1b481fc3SMaciej Żenczykowski [NL_ATTR_TYPE_U8] = "NL_ATTR_TYPE_U8", 36*1b481fc3SMaciej Żenczykowski [NL_ATTR_TYPE_U16] = "NL_ATTR_TYPE_U16", 37*1b481fc3SMaciej Żenczykowski [NL_ATTR_TYPE_U32] = "NL_ATTR_TYPE_U32", 38*1b481fc3SMaciej Żenczykowski [NL_ATTR_TYPE_U64] = "NL_ATTR_TYPE_U64", 39*1b481fc3SMaciej Żenczykowski [NL_ATTR_TYPE_S8] = "NL_ATTR_TYPE_S8", 40*1b481fc3SMaciej Żenczykowski [NL_ATTR_TYPE_S16] = "NL_ATTR_TYPE_S16", 41*1b481fc3SMaciej Żenczykowski [NL_ATTR_TYPE_S32] = "NL_ATTR_TYPE_S32", 42*1b481fc3SMaciej Żenczykowski [NL_ATTR_TYPE_S64] = "NL_ATTR_TYPE_S64", 43*1b481fc3SMaciej Żenczykowski [NL_ATTR_TYPE_BINARY] = "NL_ATTR_TYPE_BINARY", 44*1b481fc3SMaciej Żenczykowski [NL_ATTR_TYPE_STRING] = "NL_ATTR_TYPE_STRING", 45*1b481fc3SMaciej Żenczykowski [NL_ATTR_TYPE_NUL_STRING] = "NL_ATTR_TYPE_NUL_STRING", 46*1b481fc3SMaciej Żenczykowski [NL_ATTR_TYPE_NESTED] = "NL_ATTR_TYPE_NESTED", 47*1b481fc3SMaciej Żenczykowski [NL_ATTR_TYPE_NESTED_ARRAY] = "NL_ATTR_TYPE_NESTED_ARRAY", 48*1b481fc3SMaciej Żenczykowski [NL_ATTR_TYPE_BITFIELD32] = "NL_ATTR_TYPE_BITFIELD32", 49*1b481fc3SMaciej Żenczykowski }; 50*1b481fc3SMaciej Żenczykowski 51*1b481fc3SMaciej Żenczykowski static const struct pretty_nla_desc __policy_attr_desc[] = { 52*1b481fc3SMaciej Żenczykowski NLATTR_DESC_INVALID(NL_POLICY_TYPE_ATTR_UNSPEC), 53*1b481fc3SMaciej Żenczykowski NLATTR_DESC_U32_ENUM(NL_POLICY_TYPE_ATTR_TYPE, policy_attr_type), 54*1b481fc3SMaciej Żenczykowski NLATTR_DESC_S64(NL_POLICY_TYPE_ATTR_MIN_VALUE_S), 55*1b481fc3SMaciej Żenczykowski NLATTR_DESC_S64(NL_POLICY_TYPE_ATTR_MAX_VALUE_S), 56*1b481fc3SMaciej Żenczykowski NLATTR_DESC_U64(NL_POLICY_TYPE_ATTR_MIN_VALUE_U), 57*1b481fc3SMaciej Żenczykowski NLATTR_DESC_U64(NL_POLICY_TYPE_ATTR_MAX_VALUE_U), 58*1b481fc3SMaciej Żenczykowski NLATTR_DESC_U32(NL_POLICY_TYPE_ATTR_MIN_LENGTH), 59*1b481fc3SMaciej Żenczykowski NLATTR_DESC_U32(NL_POLICY_TYPE_ATTR_MAX_LENGTH), 60*1b481fc3SMaciej Żenczykowski NLATTR_DESC_U32(NL_POLICY_TYPE_ATTR_POLICY_IDX), 61*1b481fc3SMaciej Żenczykowski NLATTR_DESC_U32(NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE), 62*1b481fc3SMaciej Żenczykowski NLATTR_DESC_X32(NL_POLICY_TYPE_ATTR_BITFIELD32_MASK), 63*1b481fc3SMaciej Żenczykowski NLATTR_DESC_X64(NL_POLICY_TYPE_ATTR_PAD), 64*1b481fc3SMaciej Żenczykowski NLATTR_DESC_BINARY(NL_POLICY_TYPE_ATTR_MASK), 65*1b481fc3SMaciej Żenczykowski }; 66*1b481fc3SMaciej Żenczykowski 67*1b481fc3SMaciej Żenczykowski static const struct pretty_nla_desc __policy_attrs_desc[] = { 68*1b481fc3SMaciej Żenczykowski NLATTR_DESC_NESTED(0, policy_attr), 69*1b481fc3SMaciej Żenczykowski }; 70*1b481fc3SMaciej Żenczykowski 71*1b481fc3SMaciej Żenczykowski static const struct pretty_nla_desc __policies_desc[] = { 72*1b481fc3SMaciej Żenczykowski NLATTR_DESC_ARRAY(0, policy_attrs), 73*1b481fc3SMaciej Żenczykowski }; 74*1b481fc3SMaciej Żenczykowski 75*1b481fc3SMaciej Żenczykowski static const struct pretty_nla_desc __op_policy_desc[] = { 76*1b481fc3SMaciej Żenczykowski NLATTR_DESC_INVALID(CTRL_ATTR_POLICY_UNSPEC), 77*1b481fc3SMaciej Żenczykowski NLATTR_DESC_U32(CTRL_ATTR_POLICY_DO), 78*1b481fc3SMaciej Żenczykowski NLATTR_DESC_U32(CTRL_ATTR_POLICY_DUMP), 79*1b481fc3SMaciej Żenczykowski }; 80*1b481fc3SMaciej Żenczykowski 81*1b481fc3SMaciej Żenczykowski static const struct pretty_nla_desc __op_policies_desc[] = { 82*1b481fc3SMaciej Żenczykowski NLATTR_DESC_NESTED(0, op_policy), 83*1b481fc3SMaciej Żenczykowski }; 84*1b481fc3SMaciej Żenczykowski 85*1b481fc3SMaciej Żenczykowski static const struct pretty_nla_desc __attr_desc[] = { 86*1b481fc3SMaciej Żenczykowski NLATTR_DESC_INVALID(CTRL_ATTR_UNSPEC), 87*1b481fc3SMaciej Żenczykowski NLATTR_DESC_U16(CTRL_ATTR_FAMILY_ID), 88*1b481fc3SMaciej Żenczykowski NLATTR_DESC_STRING(CTRL_ATTR_FAMILY_NAME), 89*1b481fc3SMaciej Żenczykowski NLATTR_DESC_U32(CTRL_ATTR_VERSION), 90*1b481fc3SMaciej Żenczykowski NLATTR_DESC_U32(CTRL_ATTR_HDRSIZE), 91*1b481fc3SMaciej Żenczykowski NLATTR_DESC_U32(CTRL_ATTR_MAXATTR), 92*1b481fc3SMaciej Żenczykowski NLATTR_DESC_ARRAY(CTRL_ATTR_OPS, attrops), 93*1b481fc3SMaciej Żenczykowski NLATTR_DESC_ARRAY(CTRL_ATTR_MCAST_GROUPS, mcgrps), 94*1b481fc3SMaciej Żenczykowski NLATTR_DESC_ARRAY(CTRL_ATTR_POLICY, policies), 95*1b481fc3SMaciej Żenczykowski NLATTR_DESC_ARRAY(CTRL_ATTR_OP_POLICY, op_policies), 96*1b481fc3SMaciej Żenczykowski NLATTR_DESC_U32(CTRL_ATTR_OP), 97*1b481fc3SMaciej Żenczykowski }; 98*1b481fc3SMaciej Żenczykowski 99*1b481fc3SMaciej Żenczykowski const struct pretty_nlmsg_desc genlctrl_msg_desc[] = { 100*1b481fc3SMaciej Żenczykowski NLMSG_DESC_INVALID(CTRL_CMD_UNSPEC), 101*1b481fc3SMaciej Żenczykowski NLMSG_DESC(CTRL_CMD_NEWFAMILY, attr), 102*1b481fc3SMaciej Żenczykowski NLMSG_DESC(CTRL_CMD_DELFAMILY, attr), 103*1b481fc3SMaciej Żenczykowski NLMSG_DESC(CTRL_CMD_GETFAMILY, attr), 104*1b481fc3SMaciej Żenczykowski NLMSG_DESC(CTRL_CMD_NEWOPS, attr), 105*1b481fc3SMaciej Żenczykowski NLMSG_DESC(CTRL_CMD_DELOPS, attr), 106*1b481fc3SMaciej Żenczykowski NLMSG_DESC(CTRL_CMD_GETOPS, attr), 107*1b481fc3SMaciej Żenczykowski NLMSG_DESC(CTRL_CMD_NEWMCAST_GRP, attr), 108*1b481fc3SMaciej Żenczykowski NLMSG_DESC(CTRL_CMD_DELMCAST_GRP, attr), 109*1b481fc3SMaciej Żenczykowski NLMSG_DESC(CTRL_CMD_GETMCAST_GRP, attr), 110*1b481fc3SMaciej Żenczykowski NLMSG_DESC(CTRL_CMD_GETPOLICY, attr), 111*1b481fc3SMaciej Żenczykowski }; 112*1b481fc3SMaciej Żenczykowski 113*1b481fc3SMaciej Żenczykowski const unsigned int genlctrl_msg_n_desc = ARRAY_SIZE(genlctrl_msg_desc); 114