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