1 #ifndef __LINUX_IF_LINK_WRAPPER_H
2 #define __LINUX_IF_LINK_WRAPPER_H 1
4 #include <linux/version.h>
6 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19)
7 #include_next <linux/if_link.h>
9 /* Before 2.6.19 there was no <linux/if_link.h>. Instead all of the types now
10 * declared there were in <linux/if.h>. Unfortunately <linux/if.h> from 2.6.18
11 * conflicts badly enough with <net/if.h> to break the userspace build. All
12 * we really need from <linux/if_link.h> is struct rtnl_link_stats64, which in
13 * turn only really needs __u64. */
14 #include <linux/types.h>
17 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35)
18 /* The main device statistics structure */
19 struct rtnl_link_stats64 {
20 __u64 rx_packets; /* total packets received */
21 __u64 tx_packets; /* total packets transmitted */
22 __u64 rx_bytes; /* total bytes received */
23 __u64 tx_bytes; /* total bytes transmitted */
24 __u64 rx_errors; /* bad packets received */
25 __u64 tx_errors; /* packet transmit problems */
26 __u64 rx_dropped; /* no space in linux buffers */
27 __u64 tx_dropped; /* no space available in linux */
28 __u64 multicast; /* multicast packets received */
31 /* detailed rx_errors: */
32 __u64 rx_length_errors;
33 __u64 rx_over_errors; /* receiver ring buff overflow */
34 __u64 rx_crc_errors; /* recved pkt with crc error */
35 __u64 rx_frame_errors; /* recv'd frame alignment error */
36 __u64 rx_fifo_errors; /* recv'r fifo overrun */
37 __u64 rx_missed_errors; /* receiver missed packet */
39 /* detailed tx_errors */
40 __u64 tx_aborted_errors;
41 __u64 tx_carrier_errors;
43 __u64 tx_heartbeat_errors;
44 __u64 tx_window_errors;
50 #endif /* linux kernel < 2.6.35 */