xref: /utopia/UTPA2-700.0.x/projects/tools/lint/mips-linux-gnu_include/linux/if_link.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi #ifndef _LINUX_IF_LINK_H
2*53ee8cc1Swenshuai.xi #define _LINUX_IF_LINK_H
3*53ee8cc1Swenshuai.xi 
4*53ee8cc1Swenshuai.xi #include <linux/netlink.h>
5*53ee8cc1Swenshuai.xi 
6*53ee8cc1Swenshuai.xi /* The struct should be in sync with struct net_device_stats */
7*53ee8cc1Swenshuai.xi struct rtnl_link_stats
8*53ee8cc1Swenshuai.xi {
9*53ee8cc1Swenshuai.xi 	__u32	rx_packets;		/* total packets received	*/
10*53ee8cc1Swenshuai.xi 	__u32	tx_packets;		/* total packets transmitted	*/
11*53ee8cc1Swenshuai.xi 	__u32	rx_bytes;		/* total bytes received 	*/
12*53ee8cc1Swenshuai.xi 	__u32	tx_bytes;		/* total bytes transmitted	*/
13*53ee8cc1Swenshuai.xi 	__u32	rx_errors;		/* bad packets received		*/
14*53ee8cc1Swenshuai.xi 	__u32	tx_errors;		/* packet transmit problems	*/
15*53ee8cc1Swenshuai.xi 	__u32	rx_dropped;		/* no space in linux buffers	*/
16*53ee8cc1Swenshuai.xi 	__u32	tx_dropped;		/* no space available in linux	*/
17*53ee8cc1Swenshuai.xi 	__u32	multicast;		/* multicast packets received	*/
18*53ee8cc1Swenshuai.xi 	__u32	collisions;
19*53ee8cc1Swenshuai.xi 
20*53ee8cc1Swenshuai.xi 	/* detailed rx_errors: */
21*53ee8cc1Swenshuai.xi 	__u32	rx_length_errors;
22*53ee8cc1Swenshuai.xi 	__u32	rx_over_errors;		/* receiver ring buff overflow	*/
23*53ee8cc1Swenshuai.xi 	__u32	rx_crc_errors;		/* recved pkt with crc error	*/
24*53ee8cc1Swenshuai.xi 	__u32	rx_frame_errors;	/* recv'd frame alignment error */
25*53ee8cc1Swenshuai.xi 	__u32	rx_fifo_errors;		/* recv'r fifo overrun		*/
26*53ee8cc1Swenshuai.xi 	__u32	rx_missed_errors;	/* receiver missed packet	*/
27*53ee8cc1Swenshuai.xi 
28*53ee8cc1Swenshuai.xi 	/* detailed tx_errors */
29*53ee8cc1Swenshuai.xi 	__u32	tx_aborted_errors;
30*53ee8cc1Swenshuai.xi 	__u32	tx_carrier_errors;
31*53ee8cc1Swenshuai.xi 	__u32	tx_fifo_errors;
32*53ee8cc1Swenshuai.xi 	__u32	tx_heartbeat_errors;
33*53ee8cc1Swenshuai.xi 	__u32	tx_window_errors;
34*53ee8cc1Swenshuai.xi 
35*53ee8cc1Swenshuai.xi 	/* for cslip etc */
36*53ee8cc1Swenshuai.xi 	__u32	rx_compressed;
37*53ee8cc1Swenshuai.xi 	__u32	tx_compressed;
38*53ee8cc1Swenshuai.xi };
39*53ee8cc1Swenshuai.xi 
40*53ee8cc1Swenshuai.xi /* The struct should be in sync with struct ifmap */
41*53ee8cc1Swenshuai.xi struct rtnl_link_ifmap
42*53ee8cc1Swenshuai.xi {
43*53ee8cc1Swenshuai.xi 	__u64	mem_start;
44*53ee8cc1Swenshuai.xi 	__u64	mem_end;
45*53ee8cc1Swenshuai.xi 	__u64	base_addr;
46*53ee8cc1Swenshuai.xi 	__u16	irq;
47*53ee8cc1Swenshuai.xi 	__u8	dma;
48*53ee8cc1Swenshuai.xi 	__u8	port;
49*53ee8cc1Swenshuai.xi };
50*53ee8cc1Swenshuai.xi 
51*53ee8cc1Swenshuai.xi enum
52*53ee8cc1Swenshuai.xi {
53*53ee8cc1Swenshuai.xi 	IFLA_UNSPEC,
54*53ee8cc1Swenshuai.xi 	IFLA_ADDRESS,
55*53ee8cc1Swenshuai.xi 	IFLA_BROADCAST,
56*53ee8cc1Swenshuai.xi 	IFLA_IFNAME,
57*53ee8cc1Swenshuai.xi 	IFLA_MTU,
58*53ee8cc1Swenshuai.xi 	IFLA_LINK,
59*53ee8cc1Swenshuai.xi 	IFLA_QDISC,
60*53ee8cc1Swenshuai.xi 	IFLA_STATS,
61*53ee8cc1Swenshuai.xi 	IFLA_COST,
62*53ee8cc1Swenshuai.xi #define IFLA_COST IFLA_COST
63*53ee8cc1Swenshuai.xi 	IFLA_PRIORITY,
64*53ee8cc1Swenshuai.xi #define IFLA_PRIORITY IFLA_PRIORITY
65*53ee8cc1Swenshuai.xi 	IFLA_MASTER,
66*53ee8cc1Swenshuai.xi #define IFLA_MASTER IFLA_MASTER
67*53ee8cc1Swenshuai.xi 	IFLA_WIRELESS,		/* Wireless Extension event - see wireless.h */
68*53ee8cc1Swenshuai.xi #define IFLA_WIRELESS IFLA_WIRELESS
69*53ee8cc1Swenshuai.xi 	IFLA_PROTINFO,		/* Protocol specific information for a link */
70*53ee8cc1Swenshuai.xi #define IFLA_PROTINFO IFLA_PROTINFO
71*53ee8cc1Swenshuai.xi 	IFLA_TXQLEN,
72*53ee8cc1Swenshuai.xi #define IFLA_TXQLEN IFLA_TXQLEN
73*53ee8cc1Swenshuai.xi 	IFLA_MAP,
74*53ee8cc1Swenshuai.xi #define IFLA_MAP IFLA_MAP
75*53ee8cc1Swenshuai.xi 	IFLA_WEIGHT,
76*53ee8cc1Swenshuai.xi #define IFLA_WEIGHT IFLA_WEIGHT
77*53ee8cc1Swenshuai.xi 	IFLA_OPERSTATE,
78*53ee8cc1Swenshuai.xi 	IFLA_LINKMODE,
79*53ee8cc1Swenshuai.xi 	IFLA_LINKINFO,
80*53ee8cc1Swenshuai.xi #define IFLA_LINKINFO IFLA_LINKINFO
81*53ee8cc1Swenshuai.xi 	IFLA_NET_NS_PID,
82*53ee8cc1Swenshuai.xi 	__IFLA_MAX
83*53ee8cc1Swenshuai.xi };
84*53ee8cc1Swenshuai.xi 
85*53ee8cc1Swenshuai.xi 
86*53ee8cc1Swenshuai.xi #define IFLA_MAX (__IFLA_MAX - 1)
87*53ee8cc1Swenshuai.xi 
88*53ee8cc1Swenshuai.xi /* backwards compatibility for userspace */
89*53ee8cc1Swenshuai.xi #define IFLA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
90*53ee8cc1Swenshuai.xi #define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg))
91*53ee8cc1Swenshuai.xi 
92*53ee8cc1Swenshuai.xi /* ifi_flags.
93*53ee8cc1Swenshuai.xi 
94*53ee8cc1Swenshuai.xi    IFF_* flags.
95*53ee8cc1Swenshuai.xi 
96*53ee8cc1Swenshuai.xi    The only change is:
97*53ee8cc1Swenshuai.xi    IFF_LOOPBACK, IFF_BROADCAST and IFF_POINTOPOINT are
98*53ee8cc1Swenshuai.xi    more not changeable by user. They describe link media
99*53ee8cc1Swenshuai.xi    characteristics and set by device driver.
100*53ee8cc1Swenshuai.xi 
101*53ee8cc1Swenshuai.xi    Comments:
102*53ee8cc1Swenshuai.xi    - Combination IFF_BROADCAST|IFF_POINTOPOINT is invalid
103*53ee8cc1Swenshuai.xi    - If neither of these three flags are set;
104*53ee8cc1Swenshuai.xi      the interface is NBMA.
105*53ee8cc1Swenshuai.xi 
106*53ee8cc1Swenshuai.xi    - IFF_MULTICAST does not mean anything special:
107*53ee8cc1Swenshuai.xi    multicasts can be used on all not-NBMA links.
108*53ee8cc1Swenshuai.xi    IFF_MULTICAST means that this media uses special encapsulation
109*53ee8cc1Swenshuai.xi    for multicast frames. Apparently, all IFF_POINTOPOINT and
110*53ee8cc1Swenshuai.xi    IFF_BROADCAST devices are able to use multicasts too.
111*53ee8cc1Swenshuai.xi  */
112*53ee8cc1Swenshuai.xi 
113*53ee8cc1Swenshuai.xi /* IFLA_LINK.
114*53ee8cc1Swenshuai.xi    For usual devices it is equal ifi_index.
115*53ee8cc1Swenshuai.xi    If it is a "virtual interface" (f.e. tunnel), ifi_link
116*53ee8cc1Swenshuai.xi    can point to real physical interface (f.e. for bandwidth calculations),
117*53ee8cc1Swenshuai.xi    or maybe 0, what means, that real media is unknown (usual
118*53ee8cc1Swenshuai.xi    for IPIP tunnels, when route to endpoint is allowed to change)
119*53ee8cc1Swenshuai.xi  */
120*53ee8cc1Swenshuai.xi 
121*53ee8cc1Swenshuai.xi /* Subtype attributes for IFLA_PROTINFO */
122*53ee8cc1Swenshuai.xi enum
123*53ee8cc1Swenshuai.xi {
124*53ee8cc1Swenshuai.xi 	IFLA_INET6_UNSPEC,
125*53ee8cc1Swenshuai.xi 	IFLA_INET6_FLAGS,	/* link flags			*/
126*53ee8cc1Swenshuai.xi 	IFLA_INET6_CONF,	/* sysctl parameters		*/
127*53ee8cc1Swenshuai.xi 	IFLA_INET6_STATS,	/* statistics			*/
128*53ee8cc1Swenshuai.xi 	IFLA_INET6_MCAST,	/* MC things. What of them?	*/
129*53ee8cc1Swenshuai.xi 	IFLA_INET6_CACHEINFO,	/* time values and max reasm size */
130*53ee8cc1Swenshuai.xi 	IFLA_INET6_ICMP6STATS,	/* statistics (icmpv6)		*/
131*53ee8cc1Swenshuai.xi 	__IFLA_INET6_MAX
132*53ee8cc1Swenshuai.xi };
133*53ee8cc1Swenshuai.xi 
134*53ee8cc1Swenshuai.xi #define IFLA_INET6_MAX	(__IFLA_INET6_MAX - 1)
135*53ee8cc1Swenshuai.xi 
136*53ee8cc1Swenshuai.xi struct ifla_cacheinfo
137*53ee8cc1Swenshuai.xi {
138*53ee8cc1Swenshuai.xi 	__u32	max_reasm_len;
139*53ee8cc1Swenshuai.xi 	__u32	tstamp;		/* ipv6InterfaceTable updated timestamp */
140*53ee8cc1Swenshuai.xi 	__u32	reachable_time;
141*53ee8cc1Swenshuai.xi 	__u32	retrans_time;
142*53ee8cc1Swenshuai.xi };
143*53ee8cc1Swenshuai.xi 
144*53ee8cc1Swenshuai.xi enum
145*53ee8cc1Swenshuai.xi {
146*53ee8cc1Swenshuai.xi 	IFLA_INFO_UNSPEC,
147*53ee8cc1Swenshuai.xi 	IFLA_INFO_KIND,
148*53ee8cc1Swenshuai.xi 	IFLA_INFO_DATA,
149*53ee8cc1Swenshuai.xi 	IFLA_INFO_XSTATS,
150*53ee8cc1Swenshuai.xi 	__IFLA_INFO_MAX,
151*53ee8cc1Swenshuai.xi };
152*53ee8cc1Swenshuai.xi 
153*53ee8cc1Swenshuai.xi #define IFLA_INFO_MAX	(__IFLA_INFO_MAX - 1)
154*53ee8cc1Swenshuai.xi 
155*53ee8cc1Swenshuai.xi /* VLAN section */
156*53ee8cc1Swenshuai.xi 
157*53ee8cc1Swenshuai.xi enum
158*53ee8cc1Swenshuai.xi {
159*53ee8cc1Swenshuai.xi 	IFLA_VLAN_UNSPEC,
160*53ee8cc1Swenshuai.xi 	IFLA_VLAN_ID,
161*53ee8cc1Swenshuai.xi 	IFLA_VLAN_FLAGS,
162*53ee8cc1Swenshuai.xi 	IFLA_VLAN_EGRESS_QOS,
163*53ee8cc1Swenshuai.xi 	IFLA_VLAN_INGRESS_QOS,
164*53ee8cc1Swenshuai.xi 	__IFLA_VLAN_MAX,
165*53ee8cc1Swenshuai.xi };
166*53ee8cc1Swenshuai.xi 
167*53ee8cc1Swenshuai.xi #define IFLA_VLAN_MAX	(__IFLA_VLAN_MAX - 1)
168*53ee8cc1Swenshuai.xi 
169*53ee8cc1Swenshuai.xi struct ifla_vlan_flags {
170*53ee8cc1Swenshuai.xi 	__u32	flags;
171*53ee8cc1Swenshuai.xi 	__u32	mask;
172*53ee8cc1Swenshuai.xi };
173*53ee8cc1Swenshuai.xi 
174*53ee8cc1Swenshuai.xi enum
175*53ee8cc1Swenshuai.xi {
176*53ee8cc1Swenshuai.xi 	IFLA_VLAN_QOS_UNSPEC,
177*53ee8cc1Swenshuai.xi 	IFLA_VLAN_QOS_MAPPING,
178*53ee8cc1Swenshuai.xi 	__IFLA_VLAN_QOS_MAX
179*53ee8cc1Swenshuai.xi };
180*53ee8cc1Swenshuai.xi 
181*53ee8cc1Swenshuai.xi #define IFLA_VLAN_QOS_MAX	(__IFLA_VLAN_QOS_MAX - 1)
182*53ee8cc1Swenshuai.xi 
183*53ee8cc1Swenshuai.xi struct ifla_vlan_qos_mapping
184*53ee8cc1Swenshuai.xi {
185*53ee8cc1Swenshuai.xi 	__u32 from;
186*53ee8cc1Swenshuai.xi 	__u32 to;
187*53ee8cc1Swenshuai.xi };
188*53ee8cc1Swenshuai.xi 
189*53ee8cc1Swenshuai.xi #endif /* _LINUX_IF_LINK_H */
190