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