Dr Andrew Scott G7VAV

My photo
 
June 2025
Mo Tu We Th Fr Sa Su
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 1 2 3 4 5 6


if_link.h
001: #ifndef _LINUX_IF_LINK_H
002: #define _LINUX_IF_LINK_H
003: 
004: #include <linux/types.h>
005: #include <linux/netlink.h>
006: 
007: /* This struct should be in sync with struct rtnl_link_stats64 */
008: struct rtnl_link_stats {
009:         __u32   rx_packets;             /* total packets received       */
010:         __u32   tx_packets;             /* total packets transmitted    */
011:         __u32   rx_bytes;               /* total bytes received         */
012:         __u32   tx_bytes;               /* total bytes transmitted      */
013:         __u32   rx_errors;              /* bad packets received         */
014:         __u32   tx_errors;              /* packet transmit problems     */
015:         __u32   rx_dropped;             /* no space in linux buffers    */
016:         __u32   tx_dropped;             /* no space available in linux  */
017:         __u32   multicast;              /* multicast packets received   */
018:         __u32   collisions;
019: 
020:         /* detailed rx_errors: */
021:         __u32   rx_length_errors;
022:         __u32   rx_over_errors;         /* receiver ring buff overflow  */
023:         __u32   rx_crc_errors;          /* recved pkt with crc error    */
024:         __u32   rx_frame_errors;        /* recv'd frame alignment error */
025:         __u32   rx_fifo_errors;         /* recv'r fifo overrun          */
026:         __u32   rx_missed_errors;       /* receiver missed packet       */
027: 
028:         /* detailed tx_errors */
029:         __u32   tx_aborted_errors;
030:         __u32   tx_carrier_errors;
031:         __u32   tx_fifo_errors;
032:         __u32   tx_heartbeat_errors;
033:         __u32   tx_window_errors;
034: 
035:         /* for cslip etc */
036:         __u32   rx_compressed;
037:         __u32   tx_compressed;
038: };
039: 
040: /* The main device statistics structure */
041: struct rtnl_link_stats64 {
042:         __u64   rx_packets;             /* total packets received       */
043:         __u64   tx_packets;             /* total packets transmitted    */
044:         __u64   rx_bytes;               /* total bytes received         */
045:         __u64   tx_bytes;               /* total bytes transmitted      */
046:         __u64   rx_errors;              /* bad packets received         */
047:         __u64   tx_errors;              /* packet transmit problems     */
048:         __u64   rx_dropped;             /* no space in linux buffers    */
049:         __u64   tx_dropped;             /* no space available in linux  */
050:         __u64   multicast;              /* multicast packets received   */
051:         __u64   collisions;
052: 
053:         /* detailed rx_errors: */
054:         __u64   rx_length_errors;
055:         __u64   rx_over_errors;         /* receiver ring buff overflow  */
056:         __u64   rx_crc_errors;          /* recved pkt with crc error    */
057:         __u64   rx_frame_errors;        /* recv'd frame alignment error */
058:         __u64   rx_fifo_errors;         /* recv'r fifo overrun          */
059:         __u64   rx_missed_errors;       /* receiver missed packet       */
060: 
061:         /* detailed tx_errors */
062:         __u64   tx_aborted_errors;
063:         __u64   tx_carrier_errors;
064:         __u64   tx_fifo_errors;
065:         __u64   tx_heartbeat_errors;
066:         __u64   tx_window_errors;
067: 
068:         /* for cslip etc */
069:         __u64   rx_compressed;
070:         __u64   tx_compressed;
071: };
072: 
073: /* The struct should be in sync with struct ifmap */
074: struct rtnl_link_ifmap {
075:         __u64   mem_start;
076:         __u64   mem_end;
077:         __u64   base_addr;
078:         __u16   irq;
079:         __u8    dma;
080:         __u8    port;
081: };
082: 
083: /*
084:  * IFLA_AF_SPEC
085:  *   Contains nested attributes for address family specific attributes.
086:  *   Each address family may create a attribute with the address family
087:  *   number as type and create its own attribute structure in it.
088:  *
089:  *   Example:
090:  *   [IFLA_AF_SPEC] = {
091:  *       [AF_INET] = {
092:  *           [IFLA_INET_CONF] = ...,
093:  *       },
094:  *       [AF_INET6] = {
095:  *           [IFLA_INET6_FLAGS] = ...,
096:  *           [IFLA_INET6_CONF] = ...,
097:  *       }
098:  *   }
099:  */
100: 
101: enum {
102:         IFLA_UNSPEC,
103:         IFLA_ADDRESS,
104:         IFLA_BROADCAST,
105:         IFLA_IFNAME,
106:         IFLA_MTU,
107:         IFLA_LINK,
108:         IFLA_QDISC,
109:         IFLA_STATS,
110:         IFLA_COST,
111: #define IFLA_COST IFLA_COST
112:         IFLA_PRIORITY,
113: #define IFLA_PRIORITY IFLA_PRIORITY
114:         IFLA_MASTER,
115: #define IFLA_MASTER IFLA_MASTER
116:         IFLA_WIRELESS,          /* Wireless Extension event - see wireless.h */
117: #define IFLA_WIRELESS IFLA_WIRELESS
118:         IFLA_PROTINFO,          /* Protocol specific information for a link */
119: #define IFLA_PROTINFO IFLA_PROTINFO
120:         IFLA_TXQLEN,
121: #define IFLA_TXQLEN IFLA_TXQLEN
122:         IFLA_MAP,
123: #define IFLA_MAP IFLA_MAP
124:         IFLA_WEIGHT,
125: #define IFLA_WEIGHT IFLA_WEIGHT
126:         IFLA_OPERSTATE,
127:         IFLA_LINKMODE,
128:         IFLA_LINKINFO,
129: #define IFLA_LINKINFO IFLA_LINKINFO
130:         IFLA_NET_NS_PID,
131:         IFLA_IFALIAS,
132:         IFLA_NUM_VF,            /* Number of VFs if device is SR-IOV PF */
133:         IFLA_VFINFO_LIST,
134:         IFLA_STATS64,
135:         IFLA_VF_PORTS,
136:         IFLA_PORT_SELF,
137:         IFLA_AF_SPEC,
138:         IFLA_GROUP,             /* Group the device belongs to */
139:         IFLA_NET_NS_FD,
140:         __IFLA_MAX
141: };
142: 
143: 
144: #define IFLA_MAX (__IFLA_MAX - 1)
145: 
146: /* backwards compatibility for userspace */
147: #define IFLA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
148: #define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg))
149: 
150: enum {
151:         IFLA_INET_UNSPEC,
152:         IFLA_INET_CONF,
153:         __IFLA_INET_MAX,
154: };
155: 
156: #define IFLA_INET_MAX (__IFLA_INET_MAX - 1)
157: 
158: /* ifi_flags.
159: 
160:    IFF_* flags.
161: 
162:    The only change is:
163:    IFF_LOOPBACK, IFF_BROADCAST and IFF_POINTOPOINT are
164:    more not changeable by user. They describe link media
165:    characteristics and set by device driver.
166: 
167:    Comments:
168:    - Combination IFF_BROADCAST|IFF_POINTOPOINT is invalid
169:    - If neither of these three flags are set;
170:      the interface is NBMA.
171: 
172:    - IFF_MULTICAST does not mean anything special:
173:    multicasts can be used on all not-NBMA links.
174:    IFF_MULTICAST means that this media uses special encapsulation
175:    for multicast frames. Apparently, all IFF_POINTOPOINT and
176:    IFF_BROADCAST devices are able to use multicasts too.
177:  */
178: 
179: /* IFLA_LINK.
180:    For usual devices it is equal ifi_index.
181:    If it is a "virtual interface" (f.e. tunnel), ifi_link
182:    can point to real physical interface (f.e. for bandwidth calculations),
183:    or maybe 0, what means, that real media is unknown (usual
184:    for IPIP tunnels, when route to endpoint is allowed to change)
185:  */
186: 
187: /* Subtype attributes for IFLA_PROTINFO */
188: enum {
189:         IFLA_INET6_UNSPEC,
190:         IFLA_INET6_FLAGS,       /* link flags                   */
191:         IFLA_INET6_CONF,        /* sysctl parameters            */
192:         IFLA_INET6_STATS,       /* statistics                   */
193:         IFLA_INET6_MCAST,       /* MC things. What of them?     */
194:         IFLA_INET6_CACHEINFO,   /* time values and max reasm size */
195:         IFLA_INET6_ICMP6STATS,  /* statistics (icmpv6)          */
196:         __IFLA_INET6_MAX
197: };
198: 
199: #define IFLA_INET6_MAX  (__IFLA_INET6_MAX - 1)
200: 
201: struct ifla_cacheinfo {
202:         __u32   max_reasm_len;
203:         __u32   tstamp;         /* ipv6InterfaceTable updated timestamp */
204:         __u32   reachable_time;
205:         __u32   retrans_time;
206: };
207: 
208: enum {
209:         IFLA_INFO_UNSPEC,
210:         IFLA_INFO_KIND,
211:         IFLA_INFO_DATA,
212:         IFLA_INFO_XSTATS,
213:         __IFLA_INFO_MAX,
214: };
215: 
216: #define IFLA_INFO_MAX   (__IFLA_INFO_MAX - 1)
217: 
218: /* VLAN section */
219: 
220: enum {
221:         IFLA_VLAN_UNSPEC,
222:         IFLA_VLAN_ID,
223:         IFLA_VLAN_FLAGS,
224:         IFLA_VLAN_EGRESS_QOS,
225:         IFLA_VLAN_INGRESS_QOS,
226:         __IFLA_VLAN_MAX,
227: };
228: 
229: #define IFLA_VLAN_MAX   (__IFLA_VLAN_MAX - 1)
230: 
231: struct ifla_vlan_flags {
232:         __u32   flags;
233:         __u32   mask;
234: };
235: 
236: enum {
237:         IFLA_VLAN_QOS_UNSPEC,
238:         IFLA_VLAN_QOS_MAPPING,
239:         __IFLA_VLAN_QOS_MAX
240: };
241: 
242: #define IFLA_VLAN_QOS_MAX       (__IFLA_VLAN_QOS_MAX - 1)
243: 
244: struct ifla_vlan_qos_mapping {
245:         __u32 from;
246:         __u32 to;
247: };
248: 
249: /* MACVLAN section */
250: enum {
251:         IFLA_MACVLAN_UNSPEC,
252:         IFLA_MACVLAN_MODE,
253:         __IFLA_MACVLAN_MAX,
254: };
255: 
256: #define IFLA_MACVLAN_MAX (__IFLA_MACVLAN_MAX - 1)
257: 
258: enum macvlan_mode {
259:         MACVLAN_MODE_PRIVATE = 1, /* don't talk to other macvlans */
260:         MACVLAN_MODE_VEPA    = 2, /* talk to other ports through ext bridge */
261:         MACVLAN_MODE_BRIDGE  = 4, /* talk to bridge ports directly */
262:         MACVLAN_MODE_PASSTHRU = 8,/* take over the underlying device */
263: };
264: 
265: /* SR-IOV virtual function management section */
266: 
267: enum {
268:         IFLA_VF_INFO_UNSPEC,
269:         IFLA_VF_INFO,
270:         __IFLA_VF_INFO_MAX,
271: };
272: 
273: #define IFLA_VF_INFO_MAX (__IFLA_VF_INFO_MAX - 1)
274: 
275: enum {
276:         IFLA_VF_UNSPEC,
277:         IFLA_VF_MAC,            /* Hardware queue specific attributes */
278:         IFLA_VF_VLAN,
279:         IFLA_VF_TX_RATE,        /* TX Bandwidth Allocation */
280:         IFLA_VF_SPOOFCHK,       /* Spoof Checking on/off switch */
281:         __IFLA_VF_MAX,
282: };
283: 
284: #define IFLA_VF_MAX (__IFLA_VF_MAX - 1)
285: 
286: struct ifla_vf_mac {
287:         __u32 vf;
288:         __u8 mac[32]; /* MAX_ADDR_LEN */
289: };
290: 
291: struct ifla_vf_vlan {
292:         __u32 vf;
293:         __u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
294:         __u32 qos;
295: };
296: 
297: struct ifla_vf_tx_rate {
298:         __u32 vf;
299:         __u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */
300: };
301: 
302: struct ifla_vf_spoofchk {
303:         __u32 vf;
304:         __u32 setting;
305: };
306: 
307: /* VF ports management section
308:  *
309:  *      Nested layout of set/get msg is:
310:  *
311:  *              [IFLA_NUM_VF]
312:  *              [IFLA_VF_PORTS]
313:  *                      [IFLA_VF_PORT]
314:  *                              [IFLA_PORT_*], ...
315:  *                      [IFLA_VF_PORT]
316:  *                              [IFLA_PORT_*], ...
317:  *                      ...
318:  *              [IFLA_PORT_SELF]
319:  *                      [IFLA_PORT_*], ...
320:  */
321: 
322: enum {
323:         IFLA_VF_PORT_UNSPEC,
324:         IFLA_VF_PORT,                   /* nest */
325:         __IFLA_VF_PORT_MAX,
326: };
327: 
328: #define IFLA_VF_PORT_MAX (__IFLA_VF_PORT_MAX - 1)
329: 
330: enum {
331:         IFLA_PORT_UNSPEC,
332:         IFLA_PORT_VF,                   /* __u32 */
333:         IFLA_PORT_PROFILE,              /* string */
334:         IFLA_PORT_VSI_TYPE,             /* 802.1Qbg (pre-)standard VDP */
335:         IFLA_PORT_INSTANCE_UUID,        /* binary UUID */
336:         IFLA_PORT_HOST_UUID,            /* binary UUID */
337:         IFLA_PORT_REQUEST,              /* __u8 */
338:         IFLA_PORT_RESPONSE,             /* __u16, output only */
339:         __IFLA_PORT_MAX,
340: };
341: 
342: #define IFLA_PORT_MAX (__IFLA_PORT_MAX - 1)
343: 
344: #define PORT_PROFILE_MAX        40
345: #define PORT_UUID_MAX           16
346: #define PORT_SELF_VF            -1
347: 
348: enum {
349:         PORT_REQUEST_PREASSOCIATE = 0,
350:         PORT_REQUEST_PREASSOCIATE_RR,
351:         PORT_REQUEST_ASSOCIATE,
352:         PORT_REQUEST_DISASSOCIATE,
353: };
354: 
355: enum {
356:         PORT_VDP_RESPONSE_SUCCESS = 0,
357:         PORT_VDP_RESPONSE_INVALID_FORMAT,
358:         PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES,
359:         PORT_VDP_RESPONSE_UNUSED_VTID,
360:         PORT_VDP_RESPONSE_VTID_VIOLATION,
361:         PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION,
362:         PORT_VDP_RESPONSE_OUT_OF_SYNC,
363:         /* 0x08-0xFF reserved for future VDP use */
364:         PORT_PROFILE_RESPONSE_SUCCESS = 0x100,
365:         PORT_PROFILE_RESPONSE_INPROGRESS,
366:         PORT_PROFILE_RESPONSE_INVALID,
367:         PORT_PROFILE_RESPONSE_BADSTATE,
368:         PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES,
369:         PORT_PROFILE_RESPONSE_ERROR,
370: };
371: 
372: struct ifla_port_vsi {
373:         __u8 vsi_mgr_id;
374:         __u8 vsi_type_id[3];
375:         __u8 vsi_type_version;
376:         __u8 pad[3];
377: };
378: 
379: #endif /* _LINUX_IF_LINK_H */
380: 


for client (none)
© Andrew Scott 2006 - 2025,
All Rights Reserved
http://www.andrew-scott.uk/
Andrew Scott
http://www.andrew-scott.co.uk/