xref: /aosp_15_r20/external/ethtool/netlink/desc-rtnl.c (revision 1b481fc3bb1b45d4cf28d1ec12969dc1055f555d)
1 /*
2  * desc-rtnl.c - rtnetlink message descriptions
3  *
4  * Descriptions of rtnetlink messages and attributes for pretty print.
5  */
6 
7 #include <linux/rtnetlink.h>
8 
9 #include "../internal.h"
10 #include "prettymsg.h"
11 
12 static const struct pretty_nla_desc __link_desc[] = {
13 	NLATTR_DESC_INVALID(IFLA_UNSPEC),
14 	NLATTR_DESC_BINARY(IFLA_ADDRESS),
15 	NLATTR_DESC_BINARY(IFLA_BROADCAST),
16 	NLATTR_DESC_STRING(IFLA_IFNAME),
17 	NLATTR_DESC_U32(IFLA_MTU),
18 	NLATTR_DESC_U32(IFLA_LINK),
19 	NLATTR_DESC_STRING(IFLA_QDISC),
20 	NLATTR_DESC_BINARY(IFLA_STATS),
21 	NLATTR_DESC_INVALID(IFLA_COST),
22 	NLATTR_DESC_INVALID(IFLA_PRIORITY),
23 	NLATTR_DESC_U32(IFLA_MASTER),
24 	NLATTR_DESC_BINARY(IFLA_WIRELESS),
25 	NLATTR_DESC_NESTED_NODESC(IFLA_PROTINFO),
26 	NLATTR_DESC_U32(IFLA_TXQLEN),
27 	NLATTR_DESC_BINARY(IFLA_MAP),
28 	NLATTR_DESC_U32(IFLA_WEIGHT),
29 	NLATTR_DESC_U8(IFLA_OPERSTATE),
30 	NLATTR_DESC_U8(IFLA_LINKMODE),
31 	NLATTR_DESC_NESTED_NODESC(IFLA_LINKINFO),
32 	NLATTR_DESC_U32(IFLA_NET_NS_PID),
33 	NLATTR_DESC_STRING(IFLA_IFALIAS),
34 	NLATTR_DESC_U32(IFLA_NUM_VF),
35 	NLATTR_DESC_NESTED_NODESC(IFLA_VFINFO_LIST),
36 	NLATTR_DESC_BINARY(IFLA_STATS64),
37 	NLATTR_DESC_NESTED_NODESC(IFLA_VF_PORTS),
38 	NLATTR_DESC_NESTED_NODESC(IFLA_PORT_SELF),
39 	NLATTR_DESC_NESTED_NODESC(IFLA_AF_SPEC),
40 	NLATTR_DESC_U32(IFLA_GROUP),
41 	NLATTR_DESC_U32(IFLA_NET_NS_FD),
42 	NLATTR_DESC_U32(IFLA_EXT_MASK),
43 	NLATTR_DESC_U32(IFLA_PROMISCUITY),
44 	NLATTR_DESC_U32(IFLA_NUM_TX_QUEUES),
45 	NLATTR_DESC_U32(IFLA_NUM_RX_QUEUES),
46 	NLATTR_DESC_U8(IFLA_CARRIER),
47 	NLATTR_DESC_BINARY(IFLA_PHYS_PORT_ID),
48 	NLATTR_DESC_U32(IFLA_CARRIER_CHANGES),
49 	NLATTR_DESC_BINARY(IFLA_PHYS_SWITCH_ID),
50 	NLATTR_DESC_S32(IFLA_LINK_NETNSID),
51 	NLATTR_DESC_STRING(IFLA_PHYS_PORT_NAME),
52 	NLATTR_DESC_U8(IFLA_PROTO_DOWN),
53 	NLATTR_DESC_U32(IFLA_GSO_MAX_SEGS),
54 	NLATTR_DESC_U32(IFLA_GSO_MAX_SIZE),
55 	NLATTR_DESC_BINARY(IFLA_PAD),
56 	NLATTR_DESC_U32(IFLA_XDP),
57 	NLATTR_DESC_U32(IFLA_EVENT),
58 	NLATTR_DESC_S32(IFLA_NEW_NETNSID),
59 	NLATTR_DESC_S32(IFLA_IF_NETNSID),
60 	NLATTR_DESC_U32(IFLA_CARRIER_UP_COUNT),
61 	NLATTR_DESC_U32(IFLA_CARRIER_DOWN_COUNT),
62 	NLATTR_DESC_S32(IFLA_NEW_IFINDEX),
63 	NLATTR_DESC_U32(IFLA_MIN_MTU),
64 	NLATTR_DESC_U32(IFLA_MAX_MTU),
65 	NLATTR_DESC_NESTED_NODESC(IFLA_PROP_LIST),
66 	NLATTR_DESC_STRING(IFLA_ALT_IFNAME),
67 	NLATTR_DESC_BINARY(IFLA_PERM_ADDRESS),
68 };
69 
70 const struct pretty_nlmsg_desc rtnl_msg_desc[] = {
71 	NLMSG_DESC(RTM_NEWLINK, link),
72 	NLMSG_DESC(RTM_DELLINK, link),
73 	NLMSG_DESC(RTM_GETLINK, link),
74 	NLMSG_DESC(RTM_SETLINK, link),
75 };
76 
77 const unsigned int rtnl_msg_n_desc = ARRAY_SIZE(rtnl_msg_desc);
78 
79 #define RTNL_MSGHDR_LEN(_name, _struct) \
80 	[((RTM_ ## _name) - RTM_BASE) / 4] = sizeof(struct _struct)
81 #define RTNL_MSGHDR_NOLEN(_name) \
82 	[((RTM_ ## _name) - RTM_BASE) / 4] = USHRT_MAX
83 
84 const unsigned short rtnl_msghdr_lengths[] = {
85 	RTNL_MSGHDR_LEN(NEWLINK, ifinfomsg),
86 	RTNL_MSGHDR_LEN(NEWADDR, ifaddrmsg),
87 	RTNL_MSGHDR_LEN(NEWROUTE, rtmsg),
88 	RTNL_MSGHDR_LEN(NEWNEIGH, ndmsg),
89 	RTNL_MSGHDR_LEN(NEWRULE, rtmsg),
90 	RTNL_MSGHDR_LEN(NEWQDISC, tcmsg),
91 	RTNL_MSGHDR_LEN(NEWTCLASS, tcmsg),
92 	RTNL_MSGHDR_LEN(NEWTFILTER, tcmsg),
93 	RTNL_MSGHDR_LEN(NEWACTION, tcamsg),
94 };
95 
96 const unsigned int rtnl_msghdr_n_len = ARRAY_SIZE(rtnl_msghdr_lengths);
97