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