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