144d362409d5469aed47d19e7908d19bd194493aThomas Graf#ifndef _LINUX_IF_LINK_H 244d362409d5469aed47d19e7908d19bd194493aThomas Graf#define _LINUX_IF_LINK_H 344d362409d5469aed47d19e7908d19bd194493aThomas Graf 444d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <linux/netlink.h> 544d362409d5469aed47d19e7908d19bd194493aThomas Graf 644d362409d5469aed47d19e7908d19bd194493aThomas Graf/* The struct should be in sync with struct net_device_stats */ 744d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_link_stats 844d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 944d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 rx_packets; /* total packets received */ 1044d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 tx_packets; /* total packets transmitted */ 1144d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 rx_bytes; /* total bytes received */ 1244d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 tx_bytes; /* total bytes transmitted */ 1344d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 rx_errors; /* bad packets received */ 1444d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 tx_errors; /* packet transmit problems */ 1544d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 rx_dropped; /* no space in linux buffers */ 1644d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 tx_dropped; /* no space available in linux */ 1744d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 multicast; /* multicast packets received */ 1844d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 collisions; 1944d362409d5469aed47d19e7908d19bd194493aThomas Graf 2044d362409d5469aed47d19e7908d19bd194493aThomas Graf /* detailed rx_errors: */ 2144d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 rx_length_errors; 2244d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 rx_over_errors; /* receiver ring buff overflow */ 2344d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 rx_crc_errors; /* recved pkt with crc error */ 2444d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 rx_frame_errors; /* recv'd frame alignment error */ 2544d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 rx_fifo_errors; /* recv'r fifo overrun */ 2644d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 rx_missed_errors; /* receiver missed packet */ 2744d362409d5469aed47d19e7908d19bd194493aThomas Graf 2844d362409d5469aed47d19e7908d19bd194493aThomas Graf /* detailed tx_errors */ 2944d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 tx_aborted_errors; 3044d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 tx_carrier_errors; 3144d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 tx_fifo_errors; 3244d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 tx_heartbeat_errors; 3344d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 tx_window_errors; 3444d362409d5469aed47d19e7908d19bd194493aThomas Graf 3544d362409d5469aed47d19e7908d19bd194493aThomas Graf /* for cslip etc */ 3644d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 rx_compressed; 3744d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 tx_compressed; 3844d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 3944d362409d5469aed47d19e7908d19bd194493aThomas Graf 4044d362409d5469aed47d19e7908d19bd194493aThomas Graf/* The struct should be in sync with struct ifmap */ 4144d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_link_ifmap 4244d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 4344d362409d5469aed47d19e7908d19bd194493aThomas Graf __u64 mem_start; 4444d362409d5469aed47d19e7908d19bd194493aThomas Graf __u64 mem_end; 4544d362409d5469aed47d19e7908d19bd194493aThomas Graf __u64 base_addr; 4644d362409d5469aed47d19e7908d19bd194493aThomas Graf __u16 irq; 4744d362409d5469aed47d19e7908d19bd194493aThomas Graf __u8 dma; 4844d362409d5469aed47d19e7908d19bd194493aThomas Graf __u8 port; 4944d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 5044d362409d5469aed47d19e7908d19bd194493aThomas Graf 5144d362409d5469aed47d19e7908d19bd194493aThomas Grafenum 5244d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 5344d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_UNSPEC, 5444d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_ADDRESS, 5544d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_BROADCAST, 5644d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_IFNAME, 5744d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_MTU, 5844d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_LINK, 5944d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_QDISC, 6044d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_STATS, 6144d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_COST, 6244d362409d5469aed47d19e7908d19bd194493aThomas Graf#define IFLA_COST IFLA_COST 6344d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_PRIORITY, 6444d362409d5469aed47d19e7908d19bd194493aThomas Graf#define IFLA_PRIORITY IFLA_PRIORITY 6544d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_MASTER, 6644d362409d5469aed47d19e7908d19bd194493aThomas Graf#define IFLA_MASTER IFLA_MASTER 6744d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_WIRELESS, /* Wireless Extension event - see wireless.h */ 6844d362409d5469aed47d19e7908d19bd194493aThomas Graf#define IFLA_WIRELESS IFLA_WIRELESS 6944d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_PROTINFO, /* Protocol specific information for a link */ 7044d362409d5469aed47d19e7908d19bd194493aThomas Graf#define IFLA_PROTINFO IFLA_PROTINFO 7144d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_TXQLEN, 7244d362409d5469aed47d19e7908d19bd194493aThomas Graf#define IFLA_TXQLEN IFLA_TXQLEN 7344d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_MAP, 7444d362409d5469aed47d19e7908d19bd194493aThomas Graf#define IFLA_MAP IFLA_MAP 7544d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_WEIGHT, 7644d362409d5469aed47d19e7908d19bd194493aThomas Graf#define IFLA_WEIGHT IFLA_WEIGHT 7744d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_OPERSTATE, 7844d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_LINKMODE, 79a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf IFLA_LINKINFO, 80a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf#define IFLA_LINKINFO IFLA_LINKINFO 81a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf IFLA_NET_NS_PID, 8244d362409d5469aed47d19e7908d19bd194493aThomas Graf __IFLA_MAX 8344d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 8444d362409d5469aed47d19e7908d19bd194493aThomas Graf 8544d362409d5469aed47d19e7908d19bd194493aThomas Graf 8644d362409d5469aed47d19e7908d19bd194493aThomas Graf#define IFLA_MAX (__IFLA_MAX - 1) 8744d362409d5469aed47d19e7908d19bd194493aThomas Graf 8844d362409d5469aed47d19e7908d19bd194493aThomas Graf/* backwards compatibility for userspace */ 8944d362409d5469aed47d19e7908d19bd194493aThomas Graf#ifndef __KERNEL__ 9044d362409d5469aed47d19e7908d19bd194493aThomas Graf#define IFLA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg)))) 9144d362409d5469aed47d19e7908d19bd194493aThomas Graf#define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg)) 9244d362409d5469aed47d19e7908d19bd194493aThomas Graf#endif 9344d362409d5469aed47d19e7908d19bd194493aThomas Graf 9444d362409d5469aed47d19e7908d19bd194493aThomas Graf/* ifi_flags. 9544d362409d5469aed47d19e7908d19bd194493aThomas Graf 9644d362409d5469aed47d19e7908d19bd194493aThomas Graf IFF_* flags. 9744d362409d5469aed47d19e7908d19bd194493aThomas Graf 9844d362409d5469aed47d19e7908d19bd194493aThomas Graf The only change is: 9944d362409d5469aed47d19e7908d19bd194493aThomas Graf IFF_LOOPBACK, IFF_BROADCAST and IFF_POINTOPOINT are 10044d362409d5469aed47d19e7908d19bd194493aThomas Graf more not changeable by user. They describe link media 10144d362409d5469aed47d19e7908d19bd194493aThomas Graf characteristics and set by device driver. 10244d362409d5469aed47d19e7908d19bd194493aThomas Graf 10344d362409d5469aed47d19e7908d19bd194493aThomas Graf Comments: 10444d362409d5469aed47d19e7908d19bd194493aThomas Graf - Combination IFF_BROADCAST|IFF_POINTOPOINT is invalid 10544d362409d5469aed47d19e7908d19bd194493aThomas Graf - If neither of these three flags are set; 10644d362409d5469aed47d19e7908d19bd194493aThomas Graf the interface is NBMA. 10744d362409d5469aed47d19e7908d19bd194493aThomas Graf 10844d362409d5469aed47d19e7908d19bd194493aThomas Graf - IFF_MULTICAST does not mean anything special: 10944d362409d5469aed47d19e7908d19bd194493aThomas Graf multicasts can be used on all not-NBMA links. 11044d362409d5469aed47d19e7908d19bd194493aThomas Graf IFF_MULTICAST means that this media uses special encapsulation 11144d362409d5469aed47d19e7908d19bd194493aThomas Graf for multicast frames. Apparently, all IFF_POINTOPOINT and 11244d362409d5469aed47d19e7908d19bd194493aThomas Graf IFF_BROADCAST devices are able to use multicasts too. 11344d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 11444d362409d5469aed47d19e7908d19bd194493aThomas Graf 11544d362409d5469aed47d19e7908d19bd194493aThomas Graf/* IFLA_LINK. 11644d362409d5469aed47d19e7908d19bd194493aThomas Graf For usual devices it is equal ifi_index. 11744d362409d5469aed47d19e7908d19bd194493aThomas Graf If it is a "virtual interface" (f.e. tunnel), ifi_link 11844d362409d5469aed47d19e7908d19bd194493aThomas Graf can point to real physical interface (f.e. for bandwidth calculations), 11944d362409d5469aed47d19e7908d19bd194493aThomas Graf or maybe 0, what means, that real media is unknown (usual 12044d362409d5469aed47d19e7908d19bd194493aThomas Graf for IPIP tunnels, when route to endpoint is allowed to change) 12144d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 12244d362409d5469aed47d19e7908d19bd194493aThomas Graf 12344d362409d5469aed47d19e7908d19bd194493aThomas Graf/* Subtype attributes for IFLA_PROTINFO */ 12444d362409d5469aed47d19e7908d19bd194493aThomas Grafenum 12544d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 12644d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_INET6_UNSPEC, 12744d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_INET6_FLAGS, /* link flags */ 12844d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_INET6_CONF, /* sysctl parameters */ 12944d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_INET6_STATS, /* statistics */ 13044d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_INET6_MCAST, /* MC things. What of them? */ 13144d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_INET6_CACHEINFO, /* time values and max reasm size */ 13244d362409d5469aed47d19e7908d19bd194493aThomas Graf IFLA_INET6_ICMP6STATS, /* statistics (icmpv6) */ 13344d362409d5469aed47d19e7908d19bd194493aThomas Graf __IFLA_INET6_MAX 13444d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 13544d362409d5469aed47d19e7908d19bd194493aThomas Graf 13644d362409d5469aed47d19e7908d19bd194493aThomas Graf#define IFLA_INET6_MAX (__IFLA_INET6_MAX - 1) 13744d362409d5469aed47d19e7908d19bd194493aThomas Graf 13844d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct ifla_cacheinfo 13944d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 14044d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 max_reasm_len; 14144d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 tstamp; /* ipv6InterfaceTable updated timestamp */ 14244d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 reachable_time; 14344d362409d5469aed47d19e7908d19bd194493aThomas Graf __u32 retrans_time; 14444d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 14544d362409d5469aed47d19e7908d19bd194493aThomas Graf 146a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Grafenum 147a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf{ 148a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf IFLA_INFO_UNSPEC, 149a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf IFLA_INFO_KIND, 150a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf IFLA_INFO_DATA, 151a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf IFLA_INFO_XSTATS, 152a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf __IFLA_INFO_MAX, 153a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf}; 154a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf 155a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf#define IFLA_INFO_MAX (__IFLA_INFO_MAX - 1) 156a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf 157a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf/* VLAN section */ 158a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf 159a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Grafenum 160a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf{ 161a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf IFLA_VLAN_UNSPEC, 162a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf IFLA_VLAN_ID, 163a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf IFLA_VLAN_FLAGS, 164a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf IFLA_VLAN_EGRESS_QOS, 165a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf IFLA_VLAN_INGRESS_QOS, 166a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf __IFLA_VLAN_MAX, 167a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf}; 168a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf 169a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf#define IFLA_VLAN_MAX (__IFLA_VLAN_MAX - 1) 170a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf 171a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Grafstruct ifla_vlan_flags { 172a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf __u32 flags; 173a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf __u32 mask; 174a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf}; 175a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf 176a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Grafenum 177a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf{ 178a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf IFLA_VLAN_QOS_UNSPEC, 179a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf IFLA_VLAN_QOS_MAPPING, 180a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf __IFLA_VLAN_QOS_MAX 181a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf}; 182a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf 183a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf#define IFLA_VLAN_QOS_MAX (__IFLA_VLAN_QOS_MAX - 1) 184a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf 185a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Grafstruct ifla_vlan_qos_mapping 186a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf{ 187a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf __u32 from; 188a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf __u32 to; 189a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf}; 190a7469ce758fac3631df6ce72eb3f89150070e7f8Thomas Graf 19144d362409d5469aed47d19e7908d19bd194493aThomas Graf#endif /* _LINUX_IF_LINK_H */ 192