if_link.h revision 5a8ba228620604880f47d9087d7c5cdbebb12ffd
1ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#ifndef _LINUX_IF_LINK_H 2ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#define _LINUX_IF_LINK_H 3ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger 4ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#include <linux/netlink.h> 5ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger 6ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger/* The struct should be in sync with struct net_device_stats */ 7ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemmingerstruct rtnl_link_stats 8ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger{ 9ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 rx_packets; /* total packets received */ 10ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 tx_packets; /* total packets transmitted */ 11ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 rx_bytes; /* total bytes received */ 12ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 tx_bytes; /* total bytes transmitted */ 13ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 rx_errors; /* bad packets received */ 14ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 tx_errors; /* packet transmit problems */ 15ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 rx_dropped; /* no space in linux buffers */ 16ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 tx_dropped; /* no space available in linux */ 17ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 multicast; /* multicast packets received */ 18ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 collisions; 19ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger 20ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger /* detailed rx_errors: */ 21ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 rx_length_errors; 22ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 rx_over_errors; /* receiver ring buff overflow */ 23ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 rx_crc_errors; /* recved pkt with crc error */ 24ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 rx_frame_errors; /* recv'd frame alignment error */ 25ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 rx_fifo_errors; /* recv'r fifo overrun */ 26ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 rx_missed_errors; /* receiver missed packet */ 27ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger 28ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger /* detailed tx_errors */ 29ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 tx_aborted_errors; 30ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 tx_carrier_errors; 31ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 tx_fifo_errors; 32ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 tx_heartbeat_errors; 33ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 tx_window_errors; 34ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger 35ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger /* for cslip etc */ 36ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 rx_compressed; 37ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 tx_compressed; 38ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger}; 39ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger 40ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger/* The struct should be in sync with struct ifmap */ 41ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemmingerstruct rtnl_link_ifmap 42ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger{ 43ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u64 mem_start; 44ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u64 mem_end; 45ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u64 base_addr; 46ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u16 irq; 47ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u8 dma; 48ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u8 port; 49ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger}; 50ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger 51ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemmingerenum 52ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger{ 53ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFLA_UNSPEC, 54ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFLA_ADDRESS, 55ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFLA_BROADCAST, 56ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFLA_IFNAME, 57ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFLA_MTU, 58ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFLA_LINK, 59ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFLA_QDISC, 60ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFLA_STATS, 61ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFLA_COST, 62ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#define IFLA_COST IFLA_COST 63ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFLA_PRIORITY, 64ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#define IFLA_PRIORITY IFLA_PRIORITY 65ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFLA_MASTER, 66ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#define IFLA_MASTER IFLA_MASTER 67ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFLA_WIRELESS, /* Wireless Extension event - see wireless.h */ 68ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#define IFLA_WIRELESS IFLA_WIRELESS 69ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFLA_PROTINFO, /* Protocol specific information for a link */ 70ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#define IFLA_PROTINFO IFLA_PROTINFO 71ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFLA_TXQLEN, 72ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#define IFLA_TXQLEN IFLA_TXQLEN 73ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFLA_MAP, 74ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#define IFLA_MAP IFLA_MAP 75ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFLA_WEIGHT, 76ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#define IFLA_WEIGHT IFLA_WEIGHT 77ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFLA_OPERSTATE, 78ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFLA_LINKMODE, 79ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __IFLA_MAX 80ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger}; 81ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger 82ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger 83ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#define IFLA_MAX (__IFLA_MAX - 1) 84ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger 855a8ba228620604880f47d9087d7c5cdbebb12ffdStephen Hemminger/* backwards compatibility for userspace */ 865a8ba228620604880f47d9087d7c5cdbebb12ffdStephen Hemminger#ifndef __KERNEL__ 875a8ba228620604880f47d9087d7c5cdbebb12ffdStephen Hemminger#define IFLA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg)))) 885a8ba228620604880f47d9087d7c5cdbebb12ffdStephen Hemminger#define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg)) 895a8ba228620604880f47d9087d7c5cdbebb12ffdStephen Hemminger#endif 905a8ba228620604880f47d9087d7c5cdbebb12ffdStephen Hemminger 91ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger/* ifi_flags. 92ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger 93ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFF_* flags. 94ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger 95ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger The only change is: 96ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFF_LOOPBACK, IFF_BROADCAST and IFF_POINTOPOINT are 97ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger more not changeable by user. They describe link media 98ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger characteristics and set by device driver. 99ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger 100ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger Comments: 101ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger - Combination IFF_BROADCAST|IFF_POINTOPOINT is invalid 102ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger - If neither of these three flags are set; 103ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger the interface is NBMA. 104ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger 105ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger - IFF_MULTICAST does not mean anything special: 106ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger multicasts can be used on all not-NBMA links. 107ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFF_MULTICAST means that this media uses special encapsulation 108ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger for multicast frames. Apparently, all IFF_POINTOPOINT and 109ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFF_BROADCAST devices are able to use multicasts too. 110ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger */ 111ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger 112ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger/* IFLA_LINK. 113ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger For usual devices it is equal ifi_index. 114ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger If it is a "virtual interface" (f.e. tunnel), ifi_link 115ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger can point to real physical interface (f.e. for bandwidth calculations), 116ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger or maybe 0, what means, that real media is unknown (usual 117ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger for IPIP tunnels, when route to endpoint is allowed to change) 118ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger */ 119ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger 120ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger/* Subtype attributes for IFLA_PROTINFO */ 121ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemmingerenum 122ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger{ 123ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFLA_INET6_UNSPEC, 124ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFLA_INET6_FLAGS, /* link flags */ 125ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFLA_INET6_CONF, /* sysctl parameters */ 126ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFLA_INET6_STATS, /* statistics */ 127ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFLA_INET6_MCAST, /* MC things. What of them? */ 128ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger IFLA_INET6_CACHEINFO, /* time values and max reasm size */ 129ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __IFLA_INET6_MAX 130ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger}; 131ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger 132ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#define IFLA_INET6_MAX (__IFLA_INET6_MAX - 1) 133ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger 134ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemmingerstruct ifla_cacheinfo 135ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger{ 136ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 max_reasm_len; 137ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 tstamp; /* ipv6InterfaceTable updated timestamp */ 138ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 reachable_time; 139ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger __u32 retrans_time; 140ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger}; 141ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger 142ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger#endif /* _LINUX_IF_LINK_H */ 143