netlink_packet_route/rtnl/
constants.rs

1// SPDX-License-Identifier: MIT
2
3pub const RTM_BASE: u16 = 16;
4pub const RTM_NEWLINK: u16 = 16;
5pub const RTM_DELLINK: u16 = 17;
6pub const RTM_GETLINK: u16 = 18;
7pub const RTM_SETLINK: u16 = 19;
8pub const RTM_NEWADDR: u16 = 20;
9pub const RTM_DELADDR: u16 = 21;
10pub const RTM_GETADDR: u16 = 22;
11pub const RTM_NEWROUTE: u16 = 24;
12pub const RTM_DELROUTE: u16 = 25;
13pub const RTM_GETROUTE: u16 = 26;
14pub const RTM_NEWNEIGH: u16 = 28;
15pub const RTM_DELNEIGH: u16 = 29;
16pub const RTM_GETNEIGH: u16 = 30;
17pub const RTM_NEWRULE: u16 = 32;
18pub const RTM_DELRULE: u16 = 33;
19pub const RTM_GETRULE: u16 = 34;
20pub const RTM_NEWQDISC: u16 = 36;
21pub const RTM_DELQDISC: u16 = 37;
22pub const RTM_GETQDISC: u16 = 38;
23pub const RTM_NEWTCLASS: u16 = 40;
24pub const RTM_DELTCLASS: u16 = 41;
25pub const RTM_GETTCLASS: u16 = 42;
26pub const RTM_NEWTFILTER: u16 = 44;
27pub const RTM_DELTFILTER: u16 = 45;
28pub const RTM_GETTFILTER: u16 = 46;
29pub const RTM_NEWACTION: u16 = 48;
30pub const RTM_DELACTION: u16 = 49;
31pub const RTM_GETACTION: u16 = 50;
32pub const RTM_NEWPREFIX: u16 = 52;
33pub const RTM_GETMULTICAST: u16 = 58;
34pub const RTM_GETANYCAST: u16 = 62;
35pub const RTM_NEWNEIGHTBL: u16 = 64;
36pub const RTM_GETNEIGHTBL: u16 = 66;
37pub const RTM_SETNEIGHTBL: u16 = 67;
38pub const RTM_NEWNDUSEROPT: u16 = 68;
39pub const RTM_NEWADDRLABEL: u16 = 72;
40pub const RTM_DELADDRLABEL: u16 = 73;
41pub const RTM_GETADDRLABEL: u16 = 74;
42pub const RTM_GETDCB: u16 = 78;
43pub const RTM_SETDCB: u16 = 79;
44pub const RTM_NEWNETCONF: u16 = 80;
45pub const RTM_DELNETCONF: u16 = 81;
46pub const RTM_GETNETCONF: u16 = 82;
47pub const RTM_NEWMDB: u16 = 84;
48pub const RTM_DELMDB: u16 = 85;
49pub const RTM_GETMDB: u16 = 86;
50pub const RTM_NEWNSID: u16 = 88;
51pub const RTM_DELNSID: u16 = 89;
52pub const RTM_GETNSID: u16 = 90;
53pub const RTM_NEWSTATS: u16 = 92;
54pub const RTM_GETSTATS: u16 = 94;
55pub const RTM_NEWCACHEREPORT: u16 = 96;
56pub const RTM_NEWCHAIN: u16 = 100;
57pub const RTM_DELCHAIN: u16 = 101;
58pub const RTM_GETCHAIN: u16 = 102;
59pub const RTM_NEWLINKPROP: u16 = 108;
60pub const RTM_DELLINKPROP: u16 = 109;
61
62/// Unknown route
63pub const RTN_UNSPEC: u8 = 0;
64/// A gateway or direct route
65pub const RTN_UNICAST: u8 = 1;
66/// A local interface route
67pub const RTN_LOCAL: u8 = 2;
68/// A local broadcast route (sent as a broadcast)
69pub const RTN_BROADCAST: u8 = 3;
70/// A local broadcast route (sent as a unicast)
71pub const RTN_ANYCAST: u8 = 4;
72/// A multicast route
73pub const RTN_MULTICAST: u8 = 5;
74/// A packet dropping route
75pub const RTN_BLACKHOLE: u8 = 6;
76/// An unreachable destination
77pub const RTN_UNREACHABLE: u8 = 7;
78/// A packet rejection route
79pub const RTN_PROHIBIT: u8 = 8;
80/// Continue routing lookup in another table
81pub const RTN_THROW: u8 = 9;
82/// A network address translation rule
83pub const RTN_NAT: u8 = 10;
84/// Refer to an external resolver (not implemented)
85pub const RTN_XRESOLVE: u8 = 11;
86
87/// Unknown
88pub const RTPROT_UNSPEC: u8 = 0;
89/// Route was learnt by an ICMP redirect
90pub const RTPROT_REDIRECT: u8 = 1;
91/// Route was learnt by the kernel
92pub const RTPROT_KERNEL: u8 = 2;
93/// Route was learnt during boot
94pub const RTPROT_BOOT: u8 = 3;
95/// Route was set statically
96pub const RTPROT_STATIC: u8 = 4;
97pub const RTPROT_GATED: u8 = 8;
98pub const RTPROT_RA: u8 = 9;
99pub const RTPROT_MRT: u8 = 10;
100pub const RTPROT_ZEBRA: u8 = 11;
101pub const RTPROT_BIRD: u8 = 12;
102pub const RTPROT_DNROUTED: u8 = 13;
103pub const RTPROT_XORP: u8 = 14;
104pub const RTPROT_NTK: u8 = 15;
105pub const RTPROT_DHCP: u8 = 16;
106pub const RTPROT_MROUTED: u8 = 17;
107pub const RTPROT_BABEL: u8 = 42;
108
109/// The destination is globally valid.
110pub const RT_SCOPE_UNIVERSE: u8 = 0;
111/// (IPv6 only) the destination is site local, i.e. it is valid inside this
112/// site.  This is for interior routes in the local autonomous system
113pub const RT_SCOPE_SITE: u8 = 200;
114/// The destination is link local
115pub const RT_SCOPE_LINK: u8 = 253;
116/// The destination is valid only on this host
117pub const RT_SCOPE_HOST: u8 = 254;
118/// Destination doesn't exist
119pub const RT_SCOPE_NOWHERE: u8 = 255;
120
121/// An unspecified routing table
122pub const RT_TABLE_UNSPEC: u8 = 0;
123
124/// A route table introduced for compatibility with old software which do not
125/// support table IDs greater than 255. See commit `709772e6e065` in the kernel:
126///
127/// ```no_rust
128/// commit 709772e6e06564ed94ba740de70185ac3d792773
129/// Author: Krzysztof Piotr Oledzki <ole@ans.pl>
130/// Date:   Tue Jun 10 15:44:49 2008 -0700
131///
132///     net: Fix routing tables with id > 255 for legacy software
133///
134///     Most legacy software do not like tables > 255 as rtm_table is u8
135///     so tb_id is sent &0xff and it is possible to mismatch for example
136///     table 510 with table 254 (main).
137///
138///     This patch introduces RT_TABLE_COMPAT=252 so the code uses it if
139///     tb_id > 255. It makes such old applications happy, new
140///     ones are still able to use RTA_TABLE to get a proper table id.
141///
142///     Signed-off-by: Krzysztof Piotr Oledzki <ole@ans.pl>
143///     Acked-by: Patrick McHardy <kaber@trash.net>
144///     Signed-off-by: David S. Miller <davem@davemloft.net>
145/// ```
146pub const RT_TABLE_COMPAT: u8 = 252;
147
148/// The default routing table.
149///
150/// The default table is empty and has little use. It has been kept when the
151/// current incarnation of advanced routing has been introduced in Linux 2.1.68
152/// after a first tentative using "classes" in Linux 2.1.15.
153/// # Source
154///
155/// This documentation is taken from [Vincent Bernat's excellent
156/// blog](https://vincent.bernat.ch/en/blog/2017-ipv4-route-lookup-linux#builtin-tables)
157pub const RT_TABLE_DEFAULT: u8 = 253;
158
159/// The main routing table.
160///
161/// By default, apart from the local ones which are added to the local table,
162/// routes that are added to this table.
163pub const RT_TABLE_MAIN: u8 = 254;
164
165/// The local table.
166///
167/// This table is populated automatically by the kernel when addresses are
168/// configured.
169///
170/// On a machine that has `192.168.44.211/24` configured on `wlp58s0`,
171/// `iproute2` shows the following routes in the local table:
172///
173/// ```no_rust
174/// $ ip route show table local
175///
176/// broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
177/// local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
178/// local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
179/// broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
180///
181/// broadcast 192.168.44.0 dev wlp58s0 proto kernel scope link src 192.168.44.211
182/// local 192.168.44.211 dev wlp58s0 proto kernel scope host src 192.168.44.211
183/// broadcast 192.168.44.255 dev wlp58s0 proto kernel scope link src 192.168.44.211
184/// ```
185///
186/// When the IP address `192.168.44.211` was configured on the `wlp58s0`
187/// interface, the kernel automatically added the appropriate routes:
188///
189/// - a route for `192.168.44.211` for local unicast delivery to the IP address
190/// - a route for `192.168.44.255` for broadcast delivery to the broadcast
191///   address
192/// - a route for `192.168.44.0` for broadcast delivery to the network address
193///
194/// When `127.0.0.1` was configured on the loopback interface, the same kind of
195/// routes were added to the local table. However, a loopback address receives a
196/// special treatment and the kernel also adds the whole subnet to the local
197/// table.
198///
199/// Note that this is similar for IPv6:
200///
201/// ```no_rust
202/// $ ip -6 route show table local
203/// local ::1 dev lo proto kernel metric 0 pref medium
204/// local fe80::7de1:4914:99b7:aa28 dev wlp58s0 proto kernel metric 0 pref medium
205/// ff00::/8 dev wlp58s0 metric 256 pref medium
206/// ```
207///
208/// # Source
209///
210/// This documentation is adapted from [Vincent Bernat's excellent
211/// blog](https://vincent.bernat.ch/en/blog/2017-ipv4-route-lookup-linux#builtin-tables)
212pub const RT_TABLE_LOCAL: u8 = 255;
213
214/// If the route changes, notify the user via rtnetlink
215pub const RTM_F_NOTIFY: u32 = 256;
216/// This route is cloned. Cloned routes are routes coming from the cache instead
217/// of the FIB. For IPv4, the cache was removed in Linux 3.6 (see [IPv4 route
218/// lookup on Linux] for more information about IPv4 routing)
219///
220/// [IPv4 route lookup on Linux]: https://vincent.bernat.ch/en/blog/2017-ipv4-route-lookup-linux
221pub const RTM_F_CLONED: u32 = 512;
222/// Multipath equalizer (not yet implemented)
223pub const RTM_F_EQUALIZE: u32 = 1024;
224/// Prefix addresses
225pub const RTM_F_PREFIX: u32 = 2048;
226/// Show the table from which the lookup result comes. Note that before commit
227/// `c36ba6603a11`, Linux would always hardcode [`RouteMessageHeader.table`]
228/// (known as `rtmsg.rtm_table` in the kernel) to `RT_TABLE_MAIN`.
229///
230/// [`RouteMessageHeader.table`]: ../struct.RouteMessageHeader.html#structfield.table
231pub const RTM_F_LOOKUP_TABLE: u32 = 4096;
232/// Return the full FIB lookup match (see commit
233/// `b61798130f1be5bff08712308126c2d7ebe390ef`)
234pub const RTM_F_FIB_MATCH: u32 = 8192;
235
236pub const AF_UNSPEC: u16 = libc::AF_UNSPEC as u16;
237pub const AF_UNIX: u16 = libc::AF_UNIX as u16;
238// pub const AF_LOCAL: u16 = libc::AF_LOCAL as u16;
239pub const AF_INET: u16 = libc::AF_INET as u16;
240pub const AF_AX25: u16 = libc::AF_AX25 as u16;
241pub const AF_IPX: u16 = libc::AF_IPX as u16;
242pub const AF_APPLETALK: u16 = libc::AF_APPLETALK as u16;
243pub const AF_NETROM: u16 = libc::AF_NETROM as u16;
244pub const AF_BRIDGE: u16 = libc::AF_BRIDGE as u16;
245pub const AF_ATMPVC: u16 = libc::AF_ATMPVC as u16;
246pub const AF_X25: u16 = libc::AF_X25 as u16;
247pub const AF_INET6: u16 = libc::AF_INET6 as u16;
248pub const AF_ROSE: u16 = libc::AF_ROSE as u16;
249pub const AF_DECNET: u16 = libc::AF_DECnet as u16;
250pub const AF_NETBEUI: u16 = libc::AF_NETBEUI as u16;
251pub const AF_SECURITY: u16 = libc::AF_SECURITY as u16;
252pub const AF_KEY: u16 = libc::AF_KEY as u16;
253pub const AF_NETLINK: u16 = libc::AF_NETLINK as u16;
254// pub const AF_ROUTE: u16 = libc::AF_ROUTE as u16;
255pub const AF_PACKET: u16 = libc::AF_PACKET as u16;
256pub const AF_ASH: u16 = libc::AF_ASH as u16;
257pub const AF_ECONET: u16 = libc::AF_ECONET as u16;
258pub const AF_ATMSVC: u16 = libc::AF_ATMSVC as u16;
259pub const AF_RDS: u16 = libc::AF_RDS as u16;
260pub const AF_SNA: u16 = libc::AF_SNA as u16;
261pub const AF_IRDA: u16 = libc::AF_IRDA as u16;
262pub const AF_PPPOX: u16 = libc::AF_PPPOX as u16;
263pub const AF_WANPIPE: u16 = libc::AF_WANPIPE as u16;
264pub const AF_LLC: u16 = libc::AF_LLC as u16;
265pub const AF_CAN: u16 = libc::AF_CAN as u16;
266pub const AF_TIPC: u16 = libc::AF_TIPC as u16;
267pub const AF_BLUETOOTH: u16 = libc::AF_BLUETOOTH as u16;
268pub const AF_IUCV: u16 = libc::AF_IUCV as u16;
269pub const AF_RXRPC: u16 = libc::AF_RXRPC as u16;
270pub const AF_ISDN: u16 = libc::AF_ISDN as u16;
271pub const AF_PHONET: u16 = libc::AF_PHONET as u16;
272pub const AF_IEEE802154: u16 = libc::AF_IEEE802154 as u16;
273pub const AF_CAIF: u16 = libc::AF_CAIF as u16;
274pub const AF_ALG: u16 = libc::AF_ALG as u16;
275
276pub const NETNSA_NONE: u16 = 0;
277pub const NETNSA_NSID: u16 = 1;
278pub const NETNSA_PID: u16 = 2;
279pub const NETNSA_FD: u16 = 3;
280pub const NETNSA_NSID_NOT_ASSIGNED: i32 = -1;
281
282/// Neighbour cache entry state: the neighbour has not (yet) been resolved
283pub const NUD_INCOMPLETE: u16 = 1;
284/// Neighbour cache entry state: the neighbour entry is valid until its lifetime
285/// expires
286pub const NUD_REACHABLE: u16 = 2;
287/// Neighbour cache entry state: the neighbour entry is valid but suspicious
288pub const NUD_STALE: u16 = 4;
289/// Neighbour cache entry state: the validation of this entry is currently
290/// delayed
291pub const NUD_DELAY: u16 = 8;
292/// Neighbour cache entry state: the neighbour entry is being probed
293pub const NUD_PROBE: u16 = 16;
294/// Neighbour cache entry state: the validation of this entry has failed
295pub const NUD_FAILED: u16 = 32;
296/// Neighbour cache entry state: entry is valid and the kernel will not try to
297/// validate or refresh it.
298pub const NUD_NOARP: u16 = 64;
299/// Neighbour cache entry state: entry is valid forever and can only be removed
300/// explicitly from userspace.
301pub const NUD_PERMANENT: u16 = 128;
302/// Neighbour cache entry state: pseudo state for fresh entries or before
303/// deleting entries
304pub const NUD_NONE: u16 = 0;
305
306// Neighbour cache entry flags
307pub const NTF_USE: u8 = 1;
308pub const NTF_SELF: u8 = 2;
309pub const NTF_MASTER: u8 = 4;
310pub const NTF_PROXY: u8 = 8;
311pub const NTF_EXT_LEARNED: u8 = 16;
312pub const NTF_OFFLOADED: u8 = 32;
313pub const NTF_ROUTER: u8 = 128;
314
315pub const TCA_UNSPEC: u16 = 0;
316pub const TCA_KIND: u16 = 1;
317pub const TCA_OPTIONS: u16 = 2;
318pub const TCA_STATS: u16 = 3;
319pub const TCA_XSTATS: u16 = 4;
320pub const TCA_RATE: u16 = 5;
321pub const TCA_FCNT: u16 = 6;
322pub const TCA_STATS2: u16 = 7;
323pub const TCA_STAB: u16 = 8;
324pub const TCA_PAD: u16 = 9;
325pub const TCA_DUMP_INVISIBLE: u16 = 10;
326pub const TCA_CHAIN: u16 = 11;
327pub const TCA_HW_OFFLOAD: u16 = 12;
328pub const TCA_INGRESS_BLOCK: u16 = 13;
329pub const TCA_EGRESS_BLOCK: u16 = 14;
330pub const TCA_STATS_UNSPEC: u16 = 0;
331pub const TCA_STATS_BASIC: u16 = 1;
332pub const TCA_STATS_RATE_EST: u16 = 2;
333pub const TCA_STATS_QUEUE: u16 = 3;
334pub const TCA_STATS_APP: u16 = 4;
335pub const TCA_STATS_RATE_EST64: u16 = 5;
336pub const TCA_STATS_PAD: u16 = 6;
337pub const TCA_STATS_BASIC_HW: u16 = 7;
338
339pub const NDTA_UNSPEC: u16 = 0;
340pub const NDTA_NAME: u16 = 1;
341pub const NDTA_THRESH1: u16 = 2;
342pub const NDTA_THRESH2: u16 = 3;
343pub const NDTA_THRESH3: u16 = 4;
344pub const NDTA_CONFIG: u16 = 5;
345pub const NDTA_PARMS: u16 = 6;
346pub const NDTA_STATS: u16 = 7;
347pub const NDTA_GC_INTERVAL: u16 = 8;
348pub const NDTA_PAD: u16 = 9;
349
350pub const RTA_UNSPEC: u16 = 0;
351pub const RTA_DST: u16 = 1;
352pub const RTA_SRC: u16 = 2;
353pub const RTA_IIF: u16 = 3;
354pub const RTA_OIF: u16 = 4;
355pub const RTA_GATEWAY: u16 = 5;
356pub const RTA_PRIORITY: u16 = 6;
357pub const RTA_PREFSRC: u16 = 7;
358pub const RTA_METRICS: u16 = 8;
359pub const RTA_MULTIPATH: u16 = 9;
360pub const RTA_PROTOINFO: u16 = 10;
361pub const RTA_FLOW: u16 = 11;
362pub const RTA_CACHEINFO: u16 = 12;
363pub const RTA_SESSION: u16 = 13;
364pub const RTA_MP_ALGO: u16 = 14;
365pub const RTA_TABLE: u16 = 15;
366pub const RTA_MARK: u16 = 16;
367pub const RTA_MFC_STATS: u16 = 17;
368pub const RTA_VIA: u16 = 18;
369pub const RTA_NEWDST: u16 = 19;
370pub const RTA_PREF: u16 = 20;
371pub const RTA_ENCAP_TYPE: u16 = 21;
372pub const RTA_ENCAP: u16 = 22;
373pub const RTA_EXPIRES: u16 = 23;
374pub const RTA_PAD: u16 = 24;
375pub const RTA_UID: u16 = 25;
376pub const RTA_TTL_PROPAGATE: u16 = 26;
377
378pub const RTAX_UNSPEC: u16 = 0;
379pub const RTAX_LOCK: u16 = 1;
380pub const RTAX_MTU: u16 = 2;
381pub const RTAX_WINDOW: u16 = 3;
382pub const RTAX_RTT: u16 = 4;
383pub const RTAX_RTTVAR: u16 = 5;
384pub const RTAX_SSTHRESH: u16 = 6;
385pub const RTAX_CWND: u16 = 7;
386pub const RTAX_ADVMSS: u16 = 8;
387pub const RTAX_REORDERING: u16 = 9;
388pub const RTAX_HOPLIMIT: u16 = 10;
389pub const RTAX_INITCWND: u16 = 11;
390pub const RTAX_FEATURES: u16 = 12;
391pub const RTAX_RTO_MIN: u16 = 13;
392pub const RTAX_INITRWND: u16 = 14;
393pub const RTAX_QUICKACK: u16 = 15;
394pub const RTAX_CC_ALGO: u16 = 16;
395pub const RTAX_FASTOPEN_NO_COOKIE: u16 = 17;
396
397pub const IFLA_INFO_UNSPEC: u16 = 0;
398pub const IFLA_INFO_KIND: u16 = 1;
399pub const IFLA_INFO_DATA: u16 = 2;
400pub const IFLA_INFO_XSTATS: u16 = 3;
401pub const IFLA_INFO_PORT_KIND: u16 = 4;
402pub const IFLA_INFO_PORT_DATA: u16 = 5;
403// Bridge flags
404pub const IFLA_BRIDGE_FLAGS: u16 = 0;
405pub const BRIDGE_FLAGS_MASTER: u16 = 1; /* Bridge command to/from master */
406pub const BRIDGE_FLAGS_SELF: u16 = 2; /* Bridge command to/from lowerdev */
407
408pub const IFLA_BRIDGE_VLAN_INFO: u16 = 2;
409pub const BRIDGE_VLAN_INFO_MASTER: u16 = 1 << 0;
410pub const BRIDGE_VLAN_INFO_PVID: u16 = 1 << 1;
411pub const BRIDGE_VLAN_INFO_UNTAGGED: u16 = 1 << 2;
412pub const BRIDGE_VLAN_INFO_RANGE_BEGIN: u16 = 1 << 3;
413pub const BRIDGE_VLAN_INFO_RANGE_END: u16 = 1 << 4;
414pub const BRIDGE_VLAN_INFO_BRENTRY: u16 = 1 << 5;
415pub const BRIDGE_VLAN_INFO_ONLY_OPTS: u16 = 1 << 6;
416
417pub const IFLA_BR_UNSPEC: u16 = 0;
418pub const IFLA_BR_FORWARD_DELAY: u16 = 1;
419pub const IFLA_BR_HELLO_TIME: u16 = 2;
420pub const IFLA_BR_MAX_AGE: u16 = 3;
421pub const IFLA_BR_AGEING_TIME: u16 = 4;
422pub const IFLA_BR_STP_STATE: u16 = 5;
423pub const IFLA_BR_PRIORITY: u16 = 6;
424pub const IFLA_BR_VLAN_FILTERING: u16 = 7;
425pub const IFLA_BR_VLAN_PROTOCOL: u16 = 8;
426pub const IFLA_BR_GROUP_FWD_MASK: u16 = 9;
427pub const IFLA_BR_ROOT_ID: u16 = 10;
428pub const IFLA_BR_BRIDGE_ID: u16 = 11;
429pub const IFLA_BR_ROOT_PORT: u16 = 12;
430pub const IFLA_BR_ROOT_PATH_COST: u16 = 13;
431pub const IFLA_BR_TOPOLOGY_CHANGE: u16 = 14;
432pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: u16 = 15;
433pub const IFLA_BR_HELLO_TIMER: u16 = 16;
434pub const IFLA_BR_TCN_TIMER: u16 = 17;
435pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: u16 = 18;
436pub const IFLA_BR_GC_TIMER: u16 = 19;
437pub const IFLA_BR_GROUP_ADDR: u16 = 20;
438pub const IFLA_BR_FDB_FLUSH: u16 = 21;
439pub const IFLA_BR_MCAST_ROUTER: u16 = 22;
440pub const IFLA_BR_MCAST_SNOOPING: u16 = 23;
441pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: u16 = 24;
442pub const IFLA_BR_MCAST_QUERIER: u16 = 25;
443pub const IFLA_BR_MCAST_HASH_ELASTICITY: u16 = 26;
444pub const IFLA_BR_MCAST_HASH_MAX: u16 = 27;
445pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: u16 = 28;
446pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: u16 = 29;
447pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: u16 = 30;
448pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: u16 = 31;
449pub const IFLA_BR_MCAST_QUERIER_INTVL: u16 = 32;
450pub const IFLA_BR_MCAST_QUERY_INTVL: u16 = 33;
451pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: u16 = 34;
452pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: u16 = 35;
453pub const IFLA_BR_NF_CALL_IPTABLES: u16 = 36;
454pub const IFLA_BR_NF_CALL_IP6TABLES: u16 = 37;
455pub const IFLA_BR_NF_CALL_ARPTABLES: u16 = 38;
456pub const IFLA_BR_VLAN_DEFAULT_PVID: u16 = 39;
457pub const IFLA_BR_PAD: u16 = 40;
458pub const IFLA_BR_VLAN_STATS_ENABLED: u16 = 41;
459pub const IFLA_BR_MCAST_STATS_ENABLED: u16 = 42;
460pub const IFLA_BR_MCAST_IGMP_VERSION: u16 = 43;
461pub const IFLA_BR_MCAST_MLD_VERSION: u16 = 44;
462pub const IFLA_BR_VLAN_STATS_PER_PORT: u16 = 45;
463pub const IFLA_BR_MULTI_BOOLOPT: u16 = 46;
464pub const IFLA_BR_MCAST_QUERIER_STATE: u16 = 47;
465
466pub const IFLA_MACSEC_UNSPEC: u16 = 0;
467pub const IFLA_MACSEC_SCI: u16 = 1;
468pub const IFLA_MACSEC_PORT: u16 = 2;
469pub const IFLA_MACSEC_ICV_LEN: u16 = 3;
470pub const IFLA_MACSEC_CIPHER_SUITE: u16 = 4;
471pub const IFLA_MACSEC_WINDOW: u16 = 5;
472pub const IFLA_MACSEC_ENCODING_SA: u16 = 6;
473pub const IFLA_MACSEC_ENCRYPT: u16 = 7;
474pub const IFLA_MACSEC_PROTECT: u16 = 8;
475pub const IFLA_MACSEC_INC_SCI: u16 = 9;
476pub const IFLA_MACSEC_ES: u16 = 10;
477pub const IFLA_MACSEC_SCB: u16 = 11;
478pub const IFLA_MACSEC_REPLAY_PROTECT: u16 = 12;
479pub const IFLA_MACSEC_VALIDATION: u16 = 13;
480// pub const IFLA_MACSEC_PAD: u16 = 14;
481pub const IFLA_MACSEC_OFFLOAD: u16 = 15;
482pub const MACSEC_VALIDATE_DISABLED: u8 = 0;
483pub const MACSEC_VALIDATE_CHECK: u8 = 1;
484pub const MACSEC_VALIDATE_STRICT: u8 = 2;
485pub const MACSEC_OFFLOAD_OFF: u8 = 0;
486pub const MACSEC_OFFLOAD_PHY: u8 = 1;
487pub const MACSEC_OFFLOAD_MAC: u8 = 2;
488pub const MACSEC_CIPHER_ID_GCM_AES_128: u64 = 0x0080C20001000001;
489pub const MACSEC_CIPHER_ID_GCM_AES_256: u64 = 0x0080C20001000002;
490pub const MACSEC_CIPHER_ID_GCM_AES_XPN_128: u64 = 0x0080C20001000003;
491pub const MACSEC_CIPHER_ID_GCM_AES_XPN_256: u64 = 0x0080C20001000004;
492pub const MACSEC_DEFAULT_CIPHER_ID: u64 = 0x0080020001000001;
493
494pub const IFLA_MACVLAN_UNSPEC: u16 = 0;
495pub const IFLA_MACVLAN_MODE: u16 = 1;
496pub const IFLA_MACVLAN_FLAGS: u16 = 2;
497pub const IFLA_MACVLAN_MACADDR_MODE: u16 = 3;
498pub const IFLA_MACVLAN_MACADDR: u16 = 4;
499pub const IFLA_MACVLAN_MACADDR_DATA: u16 = 5;
500pub const IFLA_MACVLAN_MACADDR_COUNT: u16 = 6;
501pub const IFLA_MACVLAN_BC_QUEUE_LEN: u16 = 7;
502pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: u16 = 8;
503pub const IFLA_MACVLAN_BC_CUTOFF: u16 = 9;
504pub const IFLA_VLAN_UNSPEC: u16 = 0;
505pub const IFLA_VLAN_ID: u16 = 1;
506pub const IFLA_VLAN_FLAGS: u16 = 2;
507pub const IFLA_VLAN_EGRESS_QOS: u16 = 3;
508pub const IFLA_VLAN_INGRESS_QOS: u16 = 4;
509pub const IFLA_VLAN_PROTOCOL: u16 = 5;
510pub const IFLA_VLAN_QOS_UNSPEC: u16 = 0;
511pub const IFLA_VLAN_QOS_MAPPING: u16 = 1;
512pub const IFLA_VRF_UNSPEC: u16 = 0;
513pub const IFLA_VRF_TABLE: u16 = 1;
514pub const IFLA_IPVLAN_UNSPEC: u16 = 0;
515pub const IFLA_IPVLAN_MODE: u16 = 1;
516pub const IFLA_IPVLAN_FLAGS: u16 = 2;
517pub const IFLA_IPOIB_UNSPEC: u16 = 0;
518pub const IFLA_IPOIB_PKEY: u16 = 1;
519pub const IFLA_IPOIB_MODE: u16 = 2;
520pub const IFLA_IPOIB_UMCAST: u16 = 3;
521pub const VETH_INFO_UNSPEC: u16 = 0;
522pub const VETH_INFO_PEER: u16 = 1;
523pub const IFLA_XFRM_UNSPEC: u16 = 0;
524pub const IFLA_XFRM_LINK: u16 = 1;
525pub const IFLA_XFRM_IF_ID: u16 = 2;
526
527pub const ARPHRD_NETROM: u16 = 0;
528pub const ARPHRD_ETHER: u16 = 1;
529pub const ARPHRD_EETHER: u16 = 2;
530pub const ARPHRD_AX25: u16 = 3;
531pub const ARPHRD_PRONET: u16 = 4;
532pub const ARPHRD_CHAOS: u16 = 5;
533pub const ARPHRD_IEEE802: u16 = 6;
534pub const ARPHRD_ARCNET: u16 = 7;
535pub const ARPHRD_APPLETLK: u16 = 8;
536pub const ARPHRD_DLCI: u16 = 15;
537pub const ARPHRD_ATM: u16 = 19;
538pub const ARPHRD_METRICOM: u16 = 23;
539pub const ARPHRD_IEEE1394: u16 = 24;
540pub const ARPHRD_EUI64: u16 = 27;
541pub const ARPHRD_INFINIBAND: u16 = 32;
542pub const ARPHRD_SLIP: u16 = 256;
543pub const ARPHRD_CSLIP: u16 = 257;
544pub const ARPHRD_SLIP6: u16 = 258;
545pub const ARPHRD_CSLIP6: u16 = 259;
546pub const ARPHRD_RSRVD: u16 = 260;
547pub const ARPHRD_ADAPT: u16 = 264;
548pub const ARPHRD_ROSE: u16 = 270;
549pub const ARPHRD_X25: u16 = 271;
550pub const ARPHRD_HWX25: u16 = 272;
551pub const ARPHRD_CAN: u16 = 280;
552pub const ARPHRD_PPP: u16 = 512;
553pub const ARPHRD_CISCO: u16 = 513;
554pub const ARPHRD_HDLC: u16 = 513;
555pub const ARPHRD_LAPB: u16 = 516;
556pub const ARPHRD_DDCMP: u16 = 517;
557pub const ARPHRD_RAWHDLC: u16 = 518;
558pub const ARPHRD_RAWIP: u16 = 519;
559pub const ARPHRD_TUNNEL: u16 = 768;
560pub const ARPHRD_TUNNEL6: u16 = 769;
561pub const ARPHRD_FRAD: u16 = 770;
562pub const ARPHRD_SKIP: u16 = 771;
563pub const ARPHRD_LOOPBACK: u16 = 772;
564pub const ARPHRD_LOCALTLK: u16 = 773;
565pub const ARPHRD_FDDI: u16 = 774;
566pub const ARPHRD_BIF: u16 = 775;
567pub const ARPHRD_SIT: u16 = 776;
568pub const ARPHRD_IPDDP: u16 = 777;
569pub const ARPHRD_IPGRE: u16 = 778;
570pub const ARPHRD_PIMREG: u16 = 779;
571pub const ARPHRD_HIPPI: u16 = 780;
572pub const ARPHRD_ASH: u16 = 781;
573pub const ARPHRD_ECONET: u16 = 782;
574pub const ARPHRD_IRDA: u16 = 783;
575pub const ARPHRD_FCPP: u16 = 784;
576pub const ARPHRD_FCAL: u16 = 785;
577pub const ARPHRD_FCPL: u16 = 786;
578pub const ARPHRD_FCFABRIC: u16 = 787;
579pub const ARPHRD_IEEE802_TR: u16 = 800;
580pub const ARPHRD_IEEE80211: u16 = 801;
581pub const ARPHRD_IEEE80211_PRISM: u16 = 802;
582pub const ARPHRD_IEEE80211_RADIOTAP: u16 = 803;
583pub const ARPHRD_IEEE802154: u16 = 804;
584pub const ARPHRD_IEEE802154_MONITOR: u16 = 805;
585pub const ARPHRD_PHONET: u16 = 820;
586pub const ARPHRD_PHONET_PIPE: u16 = 821;
587pub const ARPHRD_CAIF: u16 = 822;
588pub const ARPHRD_IP6GRE: u16 = 823;
589pub const ARPHRD_NETLINK: u16 = 824;
590pub const ARPHRD_6LOWPAN: u16 = 825;
591pub const ARPHRD_VSOCKMON: u16 = 826;
592pub const ARPHRD_VOID: u16 = 65535;
593pub const ARPHRD_NONE: u16 = 65534;
594
595pub const IFA_UNSPEC: u16 = 0;
596pub const IFA_ADDRESS: u16 = 1;
597pub const IFA_LOCAL: u16 = 2;
598pub const IFA_LABEL: u16 = 3;
599pub const IFA_BROADCAST: u16 = 4;
600pub const IFA_ANYCAST: u16 = 5;
601pub const IFA_CACHEINFO: u16 = 6;
602pub const IFA_MULTICAST: u16 = 7;
603pub const IFA_FLAGS: u16 = 8;
604
605pub const IFLA_UNSPEC: u16 = 0;
606pub const IFLA_ADDRESS: u16 = 1;
607pub const IFLA_BROADCAST: u16 = 2;
608pub const IFLA_IFNAME: u16 = 3;
609pub const IFLA_MTU: u16 = 4;
610pub const IFLA_LINK: u16 = 5;
611pub const IFLA_QDISC: u16 = 6;
612pub const IFLA_STATS: u16 = 7;
613pub const IFLA_COST: u16 = 8;
614pub const IFLA_PRIORITY: u16 = 9;
615pub const IFLA_MASTER: u16 = 10;
616pub const IFLA_WIRELESS: u16 = 11;
617pub const IFLA_PROTINFO: u16 = 12;
618pub const IFLA_TXQLEN: u16 = 13;
619pub const IFLA_MAP: u16 = 14;
620pub const IFLA_WEIGHT: u16 = 15;
621pub const IFLA_OPERSTATE: u16 = 16;
622pub const IFLA_LINKMODE: u16 = 17;
623pub const IFLA_LINKINFO: u16 = 18;
624pub const IFLA_NET_NS_PID: u16 = 19;
625pub const IFLA_IFALIAS: u16 = 20;
626pub const IFLA_NUM_VF: u16 = 21;
627pub const IFLA_VFINFO_LIST: u16 = 22;
628pub const IFLA_STATS64: u16 = 23;
629pub const IFLA_VF_PORTS: u16 = 24;
630pub const IFLA_PORT_SELF: u16 = 25;
631pub const IFLA_AF_SPEC: u16 = 26;
632pub const IFLA_GROUP: u16 = 27;
633pub const IFLA_NET_NS_FD: u16 = 28;
634pub const IFLA_EXT_MASK: u16 = 29;
635pub const IFLA_PROMISCUITY: u16 = 30;
636pub const IFLA_NUM_TX_QUEUES: u16 = 31;
637pub const IFLA_NUM_RX_QUEUES: u16 = 32;
638pub const IFLA_CARRIER: u16 = 33;
639pub const IFLA_PHYS_PORT_ID: u16 = 34;
640pub const IFLA_CARRIER_CHANGES: u16 = 35;
641pub const IFLA_PHYS_SWITCH_ID: u16 = 36;
642pub const IFLA_LINK_NETNSID: u16 = 37;
643pub const IFLA_PHYS_PORT_NAME: u16 = 38;
644pub const IFLA_PROTO_DOWN: u16 = 39;
645pub const IFLA_GSO_MAX_SEGS: u16 = 40;
646pub const IFLA_GSO_MAX_SIZE: u16 = 41;
647pub const IFLA_PAD: u16 = 42;
648pub const IFLA_XDP: u16 = 43;
649pub const IFLA_EVENT: u16 = 44;
650pub const IFLA_NEW_NETNSID: u16 = 45;
651pub const IFLA_IF_NETNSID: u16 = 46;
652pub const IFLA_CARRIER_UP_COUNT: u16 = 47;
653pub const IFLA_CARRIER_DOWN_COUNT: u16 = 48;
654pub const IFLA_NEW_IFINDEX: u16 = 49;
655pub const IFLA_MIN_MTU: u16 = 50;
656pub const IFLA_MAX_MTU: u16 = 51;
657pub const IFLA_PROP_LIST: u16 = 52;
658pub const IFLA_ALT_IFNAME: u16 = 53;
659pub const IFLA_PERM_ADDRESS: u16 = 54;
660pub const IFLA_PROTO_DOWN_REASON: u16 = 55;
661pub const IFLA_INET_UNSPEC: u16 = 0;
662pub const IFLA_INET_CONF: u16 = 1;
663pub const IFLA_INET6_UNSPEC: u16 = 0;
664pub const IFLA_INET6_FLAGS: u16 = 1;
665pub const IFLA_INET6_CONF: u16 = 2;
666pub const IFLA_INET6_STATS: u16 = 3;
667// pub const IFLA_INET6_MCAST: u16 = 4;
668pub const IFLA_INET6_CACHEINFO: u16 = 5;
669pub const IFLA_INET6_ICMP6STATS: u16 = 6;
670pub const IFLA_INET6_TOKEN: u16 = 7;
671pub const IFLA_INET6_ADDR_GEN_MODE: u16 = 8;
672
673/// Link is up (administratively).
674pub const IFF_UP: u32 = libc::IFF_UP as u32;
675/// Link is up and carrier is OK (RFC2863 OPER_UP)
676pub const IFF_RUNNING: u32 = libc::IFF_RUNNING as u32;
677/// Link layer is operational
678pub const IFF_LOWER_UP: u32 = libc::IFF_LOWER_UP as u32;
679/// Driver signals IFF_DORMANT
680pub const IFF_DORMANT: u32 = libc::IFF_DORMANT as u32;
681/// Link supports broadcasting
682pub const IFF_BROADCAST: u32 = libc::IFF_BROADCAST as u32;
683/// Link supports multicasting
684pub const IFF_MULTICAST: u32 = libc::IFF_MULTICAST as u32;
685/// Link supports multicast routing
686pub const IFF_ALLMULTI: u32 = libc::IFF_ALLMULTI as u32;
687/// Tell driver to do debugging (currently unused)
688pub const IFF_DEBUG: u32 = libc::IFF_DEBUG as u32;
689/// Link loopback network
690pub const IFF_LOOPBACK: u32 = libc::IFF_LOOPBACK as u32;
691/// u32erface is point-to-point link
692pub const IFF_POINTOPOINT: u32 = libc::IFF_POINTOPOINT as u32;
693/// ARP is not supported
694pub const IFF_NOARP: u32 = libc::IFF_NOARP as u32;
695/// Receive all packets.
696pub const IFF_PROMISC: u32 = libc::IFF_PROMISC as u32;
697/// Master of a load balancer (bonding)
698pub const IFF_MASTER: u32 = libc::IFF_MASTER as u32;
699/// Link selects port automatically (only used by ARM ethernet)
700pub const IFF_PORTSEL: u32 = libc::IFF_PORTSEL as u32;
701/// Driver supports setting media type (only used by ARM ethernet)
702pub const IFF_AUTOMEDIA: u32 = libc::IFF_AUTOMEDIA as u32;
703// /// Echo sent packets (testing feature, CAN only)
704// pub const IFF_ECHO: u32 = libc::IFF_ECHO as u32;
705// /// Dialup device with changing addresses (unused, BSD compatibility)
706// pub const IFF_DYNAMIC: u32 = libc::IFF_DYNAMIC as u32;
707// /// Avoid use of trailers (unused, BSD compatibility)
708// pub const IFF_NOTRAILERS: u32 = libc::IFF_NOTRAILERS as u32;
709
710pub const IF_OPER_UNKNOWN: u8 = 0;
711pub const IF_OPER_NOTPRESENT: u8 = 1;
712pub const IF_OPER_DOWN: u8 = 2;
713pub const IF_OPER_LOWERLAYERDOWN: u8 = 3;
714pub const IF_OPER_TESTING: u8 = 4;
715pub const IF_OPER_DORMANT: u8 = 5;
716pub const IF_OPER_UP: u8 = 6;
717
718/// Neighbour cache entry type: unknown type
719pub const NDA_UNSPEC: u16 = 0;
720/// Neighbour cache entry type: entry for a network layer destination
721/// address
722pub const NDA_DST: u16 = 1;
723/// Neighbour cache entry type: entry for a link layer destination
724/// address
725pub const NDA_LLADDR: u16 = 2;
726/// Neighbour cache entry type: entry for cache statistics
727pub const NDA_CACHEINFO: u16 = 3;
728pub const NDA_PROBES: u16 = 4;
729pub const NDA_VLAN: u16 = 5;
730pub const NDA_PORT: u16 = 6;
731pub const NDA_VNI: u16 = 7;
732pub const NDA_IFINDEX: u16 = 8;
733pub const NDA_MASTER: u16 = 9;
734pub const NDA_LINK_NETNSID: u16 = 10;
735pub const NDA_SRC_VNI: u16 = 11;
736
737/// see `https://github.com/torvalds/linux/blob/master/include/uapi/linux/fib_rules.h`
738
739pub const FR_ACT_UNSPEC: u8 = 0;
740/// Pass to fixed table
741pub const FR_ACT_TO_TBL: u8 = 1;
742/// Jump to another rule
743pub const FR_ACT_GOTO: u8 = 2;
744/// No operation
745pub const FR_ACT_NOP: u8 = 3;
746pub const FR_ACT_RES3: u8 = 4;
747pub const FR_ACT_RES4: u8 = 5;
748/// Drop without notification
749pub const FR_ACT_BLACKHOLE: u8 = 6;
750/// Drop with `ENETUNREACH`
751pub const FR_ACT_UNREACHABLE: u8 = 7;
752/// Drop with `EACCES`
753pub const FR_ACT_PROHIBIT: u8 = 8;
754
755pub const FRA_UNSPEC: u16 = 0;
756/// Destination address
757pub const FRA_DST: u16 = 1;
758/// Source address
759pub const FRA_SRC: u16 = 2;
760/// Interface name
761pub const FRA_IIFNAME: u16 = 3;
762/// Target to jump to
763pub const FRA_GOTO: u16 = 4;
764
765pub const FRA_UNUSED2: u16 = 5;
766
767/// priority/preference
768pub const FRA_PRIORITY: u16 = 6;
769
770pub const FRA_UNUSED3: u16 = 7;
771pub const FRA_UNUSED4: u16 = 8;
772pub const FRA_UNUSED5: u16 = 9;
773
774/// mark
775pub const FRA_FWMARK: u16 = 10;
776/// flow/class id
777pub const FRA_FLOW: u16 = 11;
778pub const FRA_TUN_ID: u16 = 12;
779pub const FRA_SUPPRESS_IFGROUP: u16 = 13;
780pub const FRA_SUPPRESS_PREFIXLEN: u16 = 14;
781/// Extended table id
782pub const FRA_TABLE: u16 = 15;
783/// mask for netfilter mark
784pub const FRA_FWMASK: u16 = 16;
785pub const FRA_OIFNAME: u16 = 17;
786pub const FRA_PAD: u16 = 18;
787/// iif or oif is l3mdev goto its table
788pub const FRA_L3MDEV: u16 = 19;
789/// UID range
790pub const FRA_UID_RANGE: u16 = 20;
791/// Originator of the rule
792pub const FRA_PROTOCOL: u16 = 21;
793/// IP protocol
794pub const FRA_IP_PROTO: u16 = 22;
795/// Source port
796pub const FRA_SPORT_RANGE: u16 = 23;
797/// Destination port
798pub const FRA_DPORT_RANGE: u16 = 24;
799
800pub const FIB_RULE_PERMANENT: u32 = 1;
801pub const FIB_RULE_INVERT: u32 = 2;
802pub const FIB_RULE_UNRESOLVED: u32 = 4;
803pub const FIB_RULE_IIF_DETACHED: u32 = 8;
804pub const FIB_RULE_DEV_DETACHED: u32 = FIB_RULE_IIF_DETACHED;
805pub const FIB_RULE_OIF_DETACHED: u32 = 10;
806/// try to find source address in routing lookups
807pub const FIB_RULE_FIND_SADDR: u32 = 10000;
808
809// pub const MACVLAN_FLAG_NOPROMISC: int = 1;
810// pub const IPVLAN_F_PRIVATE: int = 1;
811// pub const IPVLAN_F_VEPA: int = 2;
812// pub const MAX_VLAN_LIST_LEN: int = 1;
813// pub const PORT_PROFILE_MAX: int = 40;
814// pub const PORT_UUID_MAX: int = 16;
815// pub const PORT_SELF_VF: int = -1;
816// pub const XDP_FLAGS_UPDATE_IF_NOEXIST: int = 1;
817// pub const XDP_FLAGS_SKB_MODE: int = 2;
818// pub const XDP_FLAGS_DRV_MODE: int = 4;
819// pub const XDP_FLAGS_HW_MODE: int = 8;
820// pub const XDP_FLAGS_MODES: int = 14;
821// pub const XDP_FLAGS_MASK: int = 15;
822
823pub const IFA_F_SECONDARY: u32 = 1;
824pub const IFA_F_TEMPORARY: u32 = 1;
825pub const IFA_F_NODAD: u32 = 2;
826pub const IFA_F_OPTIMISTIC: u32 = 4;
827pub const IFA_F_DADFAILED: u32 = 8;
828pub const IFA_F_HOMEADDRESS: u32 = 16;
829pub const IFA_F_DEPRECATED: u32 = 32;
830pub const IFA_F_TENTATIVE: u32 = 64;
831pub const IFA_F_PERMANENT: u32 = 128;
832pub const IFA_F_MANAGETEMPADDR: u32 = 256;
833pub const IFA_F_NOPREFIXROUTE: u32 = 512;
834pub const IFA_F_MCAUTOJOIN: u32 = 1024;
835pub const IFA_F_STABLE_PRIVACY: u32 = 2048;
836
837// pub const RTNL_FAMILY_IPMR: int = 128;
838// pub const RTNL_FAMILY_IP6MR: int = 129;
839// pub const RTNL_FAMILY_MAX: int = 129;
840// pub const RTA_ALIGNTO: int = 4;
841//
842pub const RTNH_F_DEAD: u8 = 1;
843pub const RTNH_F_PERVASIVE: u8 = 2;
844pub const RTNH_F_ONLINK: u8 = 4;
845pub const RTNH_F_OFFLOAD: u8 = 8;
846pub const RTNH_F_LINKDOWN: u8 = 16;
847pub const RTNH_F_UNRESOLVED: u8 = 32;
848// pub const RTNH_COMPARE_MASK: int = 25;
849// pub const RTNH_ALIGNTO: int = 4;
850// pub const RTNETLINK_HAVE_PEERINFO: int = 1;
851// pub const RTAX_FEATURE_ECN: int = 1;
852// pub const RTAX_FEATURE_SACK: int = 2;
853// pub const RTAX_FEATURE_TIMESTAMP: int = 4;
854// pub const RTAX_FEATURE_ALLFRAG: int = 8;
855// pub const RTAX_FEATURE_MASK: int = 15;
856pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 0xffff_ffff;
857// pub const TCA_FLAG_LARGE_DUMP_ON: int = 1;
858
859pub const RTEXT_FILTER_VF: u32 = 1;
860pub const RTEXT_FILTER_BRVLAN: u32 = 2;
861pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4;
862pub const RTEXT_FILTER_SKIP_STATS: u32 = 8;
863
864// pub const ARPOP_REQUEST: int = 1;
865// pub const ARPOP_REPLY: int = 2;
866//
867// pub const IN6_ADDR_GEN_MODE_EUI64: int = 0;
868// pub const IN6_ADDR_GEN_MODE_NONE: int = 1;
869// pub const IN6_ADDR_GEN_MODE_STABLE_PRIVACY: int = 2;
870// pub const IN6_ADDR_GEN_MODE_RANDOM: int = 3;
871//
872// pub const BRIDGE_MODE_UNSPEC: int = 0;
873// pub const BRIDGE_MODE_HAIRPIN: int = 1;
874//
875// pub const IFLA_BRPORT_UNSPEC: int = 0;
876// pub const IFLA_BRPORT_STATE: int = 1;
877// pub const IFLA_BRPORT_PRIORITY: int = 2;
878// pub const IFLA_BRPORT_COST: int = 3;
879// pub const IFLA_BRPORT_MODE: int = 4;
880// pub const IFLA_BRPORT_GUARD: int = 5;
881// pub const IFLA_BRPORT_PROTECT: int = 6;
882// pub const IFLA_BRPORT_FAST_LEAVE: int = 7;
883// pub const IFLA_BRPORT_LEARNING: int = 8;
884// pub const IFLA_BRPORT_UNICAST_FLOOD: int = 9;
885// pub const IFLA_BRPORT_PROXYARP: int = 10;
886// pub const IFLA_BRPORT_LEARNING_SYNC: int = 11;
887// pub const IFLA_BRPORT_PROXYARP_WIFI: int = 12;
888// pub const IFLA_BRPORT_ROOT_ID: int = 13;
889// pub const IFLA_BRPORT_BRIDGE_ID: int = 14;
890// pub const IFLA_BRPORT_DESIGNATED_PORT: int = 15;
891// pub const IFLA_BRPORT_DESIGNATED_COST: int = 16;
892// pub const IFLA_BRPORT_ID: int = 17;
893// pub const IFLA_BRPORT_NO: int = 18;
894// pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: int = 19;
895// pub const IFLA_BRPORT_CONFIG_PENDING: int = 20;
896// pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: int = 21;
897// pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: int = 22;
898// pub const IFLA_BRPORT_HOLD_TIMER: int = 23;
899// pub const IFLA_BRPORT_FLUSH: int = 24;
900// pub const IFLA_BRPORT_MULTICAST_ROUTER: int = 25;
901// pub const IFLA_BRPORT_PAD: int = 26;
902// pub const IFLA_BRPORT_MCAST_FLOOD: int = 27;
903// pub const IFLA_BRPORT_MCAST_TO_UCAST: int = 28;
904// pub const IFLA_BRPORT_VLAN_TUNNEL: int = 29;
905// pub const IFLA_BRPORT_BCAST_FLOOD: int = 30;
906// pub const IFLA_BRPORT_GROUP_FWD_MASK: int = 31;
907// pub const IFLA_BRPORT_NEIGH_SUPPRESS: int = 32;
908//
909// pub const IFLA_VLAN_QOS_UNSPEC: int = 0;
910// pub const IFLA_VLAN_QOS_MAPPING: int = 1;
911//
912// pub const IFLA_MACVLAN_UNSPEC: int = 0;
913// pub const IFLA_MACVLAN_MODE: int = 1;
914// pub const IFLA_MACVLAN_FLAGS: int = 2;
915// pub const IFLA_MACVLAN_MACADDR_MODE: int = 3;
916// pub const IFLA_MACVLAN_MACADDR: int = 4;
917// pub const IFLA_MACVLAN_MACADDR_DATA: int = 5;
918// pub const IFLA_MACVLAN_MACADDR_COUNT: int = 6;
919//
920// Available MACVLAN MODES
921pub const MACVLAN_MODE_PRIVATE: u32 = 1;
922pub const MACVLAN_MODE_VEPA: u32 = 2;
923pub const MACVLAN_MODE_BRIDGE: u32 = 4;
924pub const MACVLAN_MODE_PASSTHRU: u32 = 8;
925pub const MACVLAN_MODE_SOURCE: u32 = 16;
926//
927// pub const MACVLAN_MACADDR_ADD: int = 0;
928// pub const MACVLAN_MACADDR_DEL: int = 1;
929// pub const MACVLAN_MACADDR_FLUSH: int = 2;
930// pub const MACVLAN_MACADDR_SET: int = 3;
931//
932// pub const IFLA_VRF_UNSPEC: int = 0;
933// pub const IFLA_VRF_TABLE: int = 1;
934//
935// pub const IFLA_VRF_PORT_UNSPEC: int = 0;
936// pub const IFLA_VRF_PORT_TABLE: int = 1;
937//
938// pub const IFLA_MACSEC_UNSPEC: int = 0;
939// pub const IFLA_MACSEC_SCI: int = 1;
940// pub const IFLA_MACSEC_PORT: int = 2;
941// pub const IFLA_MACSEC_ICV_LEN: int = 3;
942// pub const IFLA_MACSEC_CIPHER_SUITE: int = 4;
943// pub const IFLA_MACSEC_WINDOW: int = 5;
944// pub const IFLA_MACSEC_ENCODING_SA: int = 6;
945// pub const IFLA_MACSEC_ENCRYPT: int = 7;
946// pub const IFLA_MACSEC_PROTECT: int = 8;
947// pub const IFLA_MACSEC_INC_SCI: int = 9;
948// pub const IFLA_MACSEC_ES: int = 10;
949// pub const IFLA_MACSEC_SCB: int = 11;
950// pub const IFLA_MACSEC_REPLAY_PROTECT: int = 12;
951// pub const IFLA_MACSEC_VALIDATION: int = 13;
952// pub const IFLA_MACSEC_PAD: int = 14;
953//
954// pub const MACSEC_VALIDATE_DISABLED: int = 0;
955// pub const MACSEC_VALIDATE_CHECK: int = 1;
956// pub const MACSEC_VALIDATE_STRICT: int = 2;
957// pub const MACSEC_VALIDATE_MAX: int = 2;
958//
959// pub const IFLA_IPVLAN_UNSPEC: int = 0;
960// pub const IFLA_IPVLAN_MODE: int = 1;
961// pub const IFLA_IPVLAN_FLAGS: int = 2;
962//
963// pub const IPVLAN_MODE_L2: int = 0;
964// pub const IPVLAN_MODE_L3: int = 1;
965// pub const IPVLAN_MODE_L3S: int = 2;
966// pub const IPVLAN_MODE_MAX: int = 3;
967//
968// FROM https://elixir.bootlin.com/linux/v5.9.8/source/include/uapi/linux/if_link.h#L531
969pub const IFLA_VXLAN_UNSPEC: u16 = 0;
970pub const IFLA_VXLAN_ID: u16 = 1;
971pub const IFLA_VXLAN_GROUP: u16 = 2;
972pub const IFLA_VXLAN_LINK: u16 = 3;
973pub const IFLA_VXLAN_LOCAL: u16 = 4;
974pub const IFLA_VXLAN_TTL: u16 = 5;
975pub const IFLA_VXLAN_TOS: u16 = 6;
976pub const IFLA_VXLAN_LEARNING: u16 = 7;
977pub const IFLA_VXLAN_AGEING: u16 = 8;
978pub const IFLA_VXLAN_LIMIT: u16 = 9;
979pub const IFLA_VXLAN_PORT_RANGE: u16 = 10;
980pub const IFLA_VXLAN_PROXY: u16 = 11;
981pub const IFLA_VXLAN_RSC: u16 = 12;
982pub const IFLA_VXLAN_L2MISS: u16 = 13;
983pub const IFLA_VXLAN_L3MISS: u16 = 14;
984pub const IFLA_VXLAN_PORT: u16 = 15;
985pub const IFLA_VXLAN_GROUP6: u16 = 16;
986pub const IFLA_VXLAN_LOCAL6: u16 = 17;
987pub const IFLA_VXLAN_UDP_CSUM: u16 = 18;
988pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: u16 = 19;
989pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: u16 = 20;
990pub const IFLA_VXLAN_REMCSUM_TX: u16 = 21;
991pub const IFLA_VXLAN_REMCSUM_RX: u16 = 22;
992pub const IFLA_VXLAN_GBP: u16 = 23;
993pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: u16 = 24;
994pub const IFLA_VXLAN_COLLECT_METADATA: u16 = 25;
995pub const IFLA_VXLAN_LABEL: u16 = 26;
996pub const IFLA_VXLAN_GPE: u16 = 27;
997pub const IFLA_VXLAN_TTL_INHERIT: u16 = 28;
998pub const IFLA_VXLAN_DF: u16 = 29;
999pub const __IFLA_VXLAN_MAX: u16 = 30;
1000//
1001// pub const IFLA_GENEVE_UNSPEC: int = 0;
1002// pub const IFLA_GENEVE_ID: int = 1;
1003// pub const IFLA_GENEVE_REMOTE: int = 2;
1004// pub const IFLA_GENEVE_TTL: int = 3;
1005// pub const IFLA_GENEVE_TOS: int = 4;
1006// pub const IFLA_GENEVE_PORT: int = 5;
1007// pub const IFLA_GENEVE_COLLECT_METADATA: int = 6;
1008// pub const IFLA_GENEVE_REMOTE6: int = 7;
1009// pub const IFLA_GENEVE_UDP_CSUM: int = 8;
1010// pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: int = 9;
1011// pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: int = 10;
1012// pub const IFLA_GENEVE_LABEL: int = 11;
1013//
1014// pub const IFLA_PPP_UNSPEC: int = 0;
1015// pub const IFLA_PPP_DEV_FD: int = 1;
1016//
1017// pub const GTP_ROLE_GGSN: int = 0;
1018// pub const GTP_ROLE_SGSN: int = 1;
1019//
1020// pub const IFLA_GTP_UNSPEC: int = 0;
1021// pub const IFLA_GTP_FD0: int = 1;
1022// pub const IFLA_GTP_FD1: int = 2;
1023// pub const IFLA_GTP_PDP_HASHSIZE: int = 3;
1024// pub const IFLA_GTP_ROLE: int = 4;
1025
1026pub const IFLA_BOND_UNSPEC: u16 = 0;
1027pub const IFLA_BOND_MODE: u16 = 1;
1028pub const IFLA_BOND_ACTIVE_PORT: u16 = 2;
1029pub const IFLA_BOND_MIIMON: u16 = 3;
1030pub const IFLA_BOND_UPDELAY: u16 = 4;
1031pub const IFLA_BOND_DOWNDELAY: u16 = 5;
1032pub const IFLA_BOND_USE_CARRIER: u16 = 6;
1033pub const IFLA_BOND_ARP_INTERVAL: u16 = 7;
1034pub const IFLA_BOND_ARP_IP_TARGET: u16 = 8;
1035pub const IFLA_BOND_ARP_VALIDATE: u16 = 9;
1036pub const IFLA_BOND_ARP_ALL_TARGETS: u16 = 10;
1037pub const IFLA_BOND_PRIMARY: u16 = 11;
1038pub const IFLA_BOND_PRIMARY_RESELECT: u16 = 12;
1039pub const IFLA_BOND_FAIL_OVER_MAC: u16 = 13;
1040pub const IFLA_BOND_XMIT_HASH_POLICY: u16 = 14;
1041pub const IFLA_BOND_RESEND_IGMP: u16 = 15;
1042pub const IFLA_BOND_NUM_PEER_NOTIF: u16 = 16;
1043pub const IFLA_BOND_ALL_PORTS_ACTIVE: u16 = 17;
1044pub const IFLA_BOND_MIN_LINKS: u16 = 18;
1045pub const IFLA_BOND_LP_INTERVAL: u16 = 19;
1046pub const IFLA_BOND_PACKETS_PER_PORT: u16 = 20;
1047pub const IFLA_BOND_AD_LACP_RATE: u16 = 21;
1048pub const IFLA_BOND_AD_SELECT: u16 = 22;
1049pub const IFLA_BOND_AD_INFO: u16 = 23;
1050pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: u16 = 24;
1051pub const IFLA_BOND_AD_USER_PORT_KEY: u16 = 25;
1052pub const IFLA_BOND_AD_ACTOR_SYSTEM: u16 = 26;
1053pub const IFLA_BOND_TLB_DYNAMIC_LB: u16 = 27;
1054pub const IFLA_BOND_PEER_NOTIF_DELAY: u16 = 28;
1055pub const IFLA_BOND_AD_LACP_ACTIVE: u16 = 29;
1056pub const IFLA_BOND_MISSED_MAX: u16 = 30;
1057pub const IFLA_BOND_NS_IP6_TARGET: u16 = 31;
1058
1059pub const IFLA_BOND_AD_INFO_UNSPEC: u16 = 0;
1060pub const IFLA_BOND_AD_INFO_AGGREGATOR: u16 = 1;
1061pub const IFLA_BOND_AD_INFO_NUM_PORTS: u16 = 2;
1062pub const IFLA_BOND_AD_INFO_ACTOR_KEY: u16 = 3;
1063pub const IFLA_BOND_AD_INFO_PARTNER_KEY: u16 = 4;
1064pub const IFLA_BOND_AD_INFO_PARTNER_MAC: u16 = 5;
1065
1066pub const IFLA_BOND_PORT_UNSPEC: u16 = 0;
1067pub const IFLA_BOND_PORT_STATE: u16 = 1;
1068pub const IFLA_BOND_PORT_MII_STATUS: u16 = 2;
1069pub const IFLA_BOND_PORT_LINK_FAILURE_COUNT: u16 = 3;
1070pub const IFLA_BOND_PORT_PERM_HWADDR: u16 = 4;
1071pub const IFLA_BOND_PORT_QUEUE_ID: u16 = 5;
1072pub const IFLA_BOND_PORT_AD_AGGREGATOR_ID: u16 = 6;
1073pub const IFLA_BOND_PORT_AD_ACTOR_OPER_PORT_STATE: u16 = 7;
1074pub const IFLA_BOND_PORT_AD_PARTNER_OPER_PORT_STATE: u16 = 8;
1075pub const IFLA_BOND_PORT_PRIO: u16 = 9;
1076
1077pub const IFLA_BOND_PORT_STATE_ACTIVE: u8 = 0;
1078pub const IFLA_BOND_PORT_STATE_BACKUP: u8 = 1;
1079
1080pub const IFLA_BOND_PORT_MII_STATUS_UP: u8 = 0;
1081pub const IFLA_BOND_PORT_MII_STATUS_GOING_DOWN: u8 = 1;
1082pub const IFLA_BOND_PORT_MII_STATUS_DOWN: u8 = 2;
1083pub const IFLA_BOND_PORT_MII_STATUS_GOING_BACK: u8 = 3;
1084
1085// pub const IFLA_VF_INFO_UNSPEC: int = 0;
1086// pub const IFLA_VF_INFO: int = 1;
1087//
1088// pub const IFLA_VF_UNSPEC: int = 0;
1089// pub const IFLA_VF_MAC: int = 1;
1090// pub const IFLA_VF_VLAN: int = 2;
1091// pub const IFLA_VF_TX_RATE: int = 3;
1092// pub const IFLA_VF_SPOOFCHK: int = 4;
1093// pub const IFLA_VF_LINK_STATE: int = 5;
1094// pub const IFLA_VF_RATE: int = 6;
1095// pub const IFLA_VF_RSS_QUERY_EN: int = 7;
1096// pub const IFLA_VF_STATS: int = 8;
1097// pub const IFLA_VF_TRUST: int = 9;
1098// pub const IFLA_VF_IB_NODE_GUID: int = 10;
1099// pub const IFLA_VF_IB_PORT_GUID: int = 11;
1100// pub const IFLA_VF_VLAN_LIST: int = 12;
1101//
1102// pub const IFLA_VF_VLAN_INFO_UNSPEC: int = 0;
1103// pub const IFLA_VF_VLAN_INFO: int = 1;
1104//
1105// pub const NDUSEROPT_UNSPEC: int = 0;
1106// pub const NDUSEROPT_SRCADDR: int = 1;
1107//
1108pub const RTNLGRP_NONE: u32 = 0;
1109pub const RTNLGRP_LINK: u32 = 1;
1110pub const RTNLGRP_NOTIFY: u32 = 2;
1111pub const RTNLGRP_NEIGH: u32 = 3;
1112pub const RTNLGRP_TC: u32 = 4;
1113pub const RTNLGRP_IPV4_IFADDR: u32 = 5;
1114pub const RTNLGRP_IPV4_MROUTE: u32 = 6;
1115pub const RTNLGRP_IPV4_ROUTE: u32 = 7;
1116pub const RTNLGRP_IPV4_RULE: u32 = 8;
1117pub const RTNLGRP_IPV6_IFADDR: u32 = 9;
1118pub const RTNLGRP_IPV6_MROUTE: u32 = 10;
1119pub const RTNLGRP_IPV6_ROUTE: u32 = 11;
1120pub const RTNLGRP_IPV6_IFINFO: u32 = 12;
1121pub const RTNLGRP_DECNET_IFADDR: u32 = 13;
1122pub const RTNLGRP_NOP2: u32 = 14;
1123pub const RTNLGRP_DECNET_ROUTE: u32 = 15;
1124pub const RTNLGRP_DECNET_RULE: u32 = 16;
1125pub const RTNLGRP_NOP4: u32 = 17;
1126pub const RTNLGRP_IPV6_PREFIX: u32 = 18;
1127pub const RTNLGRP_IPV6_RULE: u32 = 19;
1128pub const RTNLGRP_ND_USEROPT: u32 = 20;
1129pub const RTNLGRP_PHONET_IFADDR: u32 = 21;
1130pub const RTNLGRP_PHONET_ROUTE: u32 = 22;
1131pub const RTNLGRP_DCB: u32 = 23;
1132pub const RTNLGRP_IPV4_NETCONF: u32 = 24;
1133pub const RTNLGRP_IPV6_NETCONF: u32 = 25;
1134pub const RTNLGRP_MDB: u32 = 26;
1135pub const RTNLGRP_MPLS_ROUTE: u32 = 27;
1136pub const RTNLGRP_NSID: u32 = 28;
1137pub const RTNLGRP_MPLS_NETCONF: u32 = 29;
1138pub const RTNLGRP_IPV4_MROUTE_R: u32 = 30;
1139pub const RTNLGRP_IPV6_MROUTE_R: u32 = 31;
1140//
1141// pub const IFLA_VF_LINK_STATE_AUTO: int = 0;
1142// pub const IFLA_VF_LINK_STATE_ENABLE: int = 1;
1143// pub const IFLA_VF_LINK_STATE_DISABLE: int = 2;
1144//
1145// pub const IFLA_VF_STATS_RX_PACKETS: int = 0;
1146// pub const IFLA_VF_STATS_TX_PACKETS: int = 1;
1147// pub const IFLA_VF_STATS_RX_BYTES: int = 2;
1148// pub const IFLA_VF_STATS_TX_BYTES: int = 3;
1149// pub const IFLA_VF_STATS_BROADCAST: int = 4;
1150// pub const IFLA_VF_STATS_MULTICAST: int = 5;
1151// pub const IFLA_VF_STATS_PAD: int = 6;
1152// pub const IFLA_VF_STATS_RX_DROPPED: int = 7;
1153// pub const IFLA_VF_STATS_TX_DROPPED: int = 8;
1154//
1155// pub const IFLA_VF_PORT_UNSPEC: int = 0;
1156// pub const IFLA_VF_PORT: int = 1;
1157//
1158// pub const IFLA_PORT_UNSPEC: int = 0;
1159// pub const IFLA_PORT_VF: int = 1;
1160// pub const IFLA_PORT_PROFILE: int = 2;
1161// pub const IFLA_PORT_VSI_TYPE: int = 3;
1162// pub const IFLA_PORT_INSTANCE_UUID: int = 4;
1163// pub const IFLA_PORT_HOST_UUID: int = 5;
1164// pub const IFLA_PORT_REQUEST: int = 6;
1165// pub const IFLA_PORT_RESPONSE: int = 7;
1166//
1167// pub const PORT_REQUEST_PREASSOCIATE: int = 0;
1168// pub const PORT_REQUEST_PREASSOCIATE_RR: int = 1;
1169// pub const PORT_REQUEST_ASSOCIATE: int = 2;
1170// pub const PORT_REQUEST_DISASSOCIATE: int = 3;
1171//
1172// pub const PORT_VDP_RESPONSE_SUCCESS: int = 0;
1173// pub const PORT_VDP_RESPONSE_INVALID_FORMAT: int = 1;
1174// pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: int = 2;
1175// pub const PORT_VDP_RESPONSE_UNUSED_VTID: int = 3;
1176// pub const PORT_VDP_RESPONSE_VTID_VIOLATION: int = 4;
1177// pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: int = 5;
1178// pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: int = 6;
1179// pub const PORT_PROFILE_RESPONSE_SUCCESS: int = 256;
1180// pub const PORT_PROFILE_RESPONSE_INPROGRESS: int = 257;
1181// pub const PORT_PROFILE_RESPONSE_INVALID: int = 258;
1182// pub const PORT_PROFILE_RESPONSE_BADSTATE: int = 259;
1183// pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: int = 260;
1184// pub const PORT_PROFILE_RESPONSE_ERROR: int = 261;
1185//
1186// pub const IFLA_IPOIB_UNSPEC: int = 0;
1187// pub const IFLA_IPOIB_PKEY: int = 1;
1188// pub const IFLA_IPOIB_MODE: int = 2;
1189// pub const IFLA_IPOIB_UMCAST: int = 3;
1190//
1191// pub const IPOIB_MODE_DATAGRAM: int = 0;
1192// pub const IPOIB_MODE_CONNECTED: int = 1;
1193//
1194// pub const IFLA_HSR_UNSPEC: int = 0;
1195// pub const IFLA_HSR_PORT1: int = 1;
1196// pub const IFLA_HSR_PORT2: int = 2;
1197// pub const IFLA_HSR_MULTICAST_SPEC: int = 3;
1198// pub const IFLA_HSR_SUPERVISION_ADDR: int = 4;
1199// pub const IFLA_HSR_SEQ_NR: int = 5;
1200// pub const IFLA_HSR_VERSION: int = 6;
1201//
1202// pub const IFLA_STATS_UNSPEC: int = 0;
1203// pub const IFLA_STATS_LINK_64: int = 1;
1204// pub const IFLA_STATS_LINK_XSTATS: int = 2;
1205// pub const IFLA_STATS_LINK_XSTATS_PORT: int = 3;
1206// pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: int = 4;
1207// pub const IFLA_STATS_AF_SPEC: int = 5;
1208//
1209// pub const LINK_XSTATS_TYPE_UNSPEC: int = 0;
1210// pub const LINK_XSTATS_TYPE_BRIDGE: int = 1;
1211//
1212// pub const IFLA_OFFLOAD_XSTATS_UNSPEC: int = 0;
1213// pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: int = 1;
1214//
1215pub const XDP_ATTACHED_NONE: u8 = 0;
1216pub const XDP_ATTACHED_DRV: u8 = 1;
1217pub const XDP_ATTACHED_SKB: u8 = 2;
1218pub const XDP_ATTACHED_HW: u8 = 3;
1219pub const XDP_ATTACHED_MULTI: u8 = 4;
1220
1221pub const IFLA_XDP_UNSPEC: u32 = 0;
1222pub const IFLA_XDP_FD: u32 = 1;
1223pub const IFLA_XDP_ATTACHED: u32 = 2;
1224pub const IFLA_XDP_FLAGS: u32 = 3;
1225pub const IFLA_XDP_PROG_ID: u32 = 4;
1226pub const IFLA_XDP_DRV_PROG_ID: u32 = 5;
1227pub const IFLA_XDP_SKB_PROG_ID: u32 = 6;
1228pub const IFLA_XDP_HW_PROG_ID: u32 = 7;
1229pub const IFLA_XDP_EXPECTED_FD: u32 = 8;
1230
1231// pub const IFLA_EVENT_NONE: int = 0;
1232// pub const IFLA_EVENT_REBOOT: int = 1;
1233// pub const IFLA_EVENT_FEATURES: int = 2;
1234// pub const IFLA_EVENT_BONDING_FAILOVER: int = 3;
1235// pub const IFLA_EVENT_NOTIFY_PEERS: int = 4;
1236// pub const IFLA_EVENT_IGMP_RESEND: int = 5;
1237// pub const IFLA_EVENT_BONDING_OPTIONS: int = 6;
1238//
1239// pub const NDTPA_UNSPEC: int = 0;
1240// pub const NDTPA_IFINDEX: int = 1;
1241// pub const NDTPA_REFCNT: int = 2;
1242// pub const NDTPA_REACHABLE_TIME: int = 3;
1243// pub const NDTPA_BASE_REACHABLE_TIME: int = 4;
1244// pub const NDTPA_RETRANS_TIME: int = 5;
1245// pub const NDTPA_GC_STALETIME: int = 6;
1246// pub const NDTPA_DELAY_PROBE_TIME: int = 7;
1247// pub const NDTPA_QUEUE_LEN: int = 8;
1248// pub const NDTPA_APP_PROBES: int = 9;
1249// pub const NDTPA_UCAST_PROBES: int = 10;
1250// pub const NDTPA_MCAST_PROBES: int = 11;
1251// pub const NDTPA_ANYCAST_DELAY: int = 12;
1252// pub const NDTPA_PROXY_DELAY: int = 13;
1253// pub const NDTPA_PROXY_QLEN: int = 14;
1254// pub const NDTPA_LOCKTIME: int = 15;
1255// pub const NDTPA_QUEUE_LENBYTES: int = 16;
1256// pub const NDTPA_MCAST_REPROBES: int = 17;
1257// pub const NDTPA_PAD: int = 18;
1258//
1259// #[allow(overflowing_literals)]
1260// pub const RT_TABLE_MAX: int = 0xffff_ffff;
1261//
1262// pub const PREFIX_UNSPEC: int = 0;
1263// pub const PREFIX_ADDRESS: int = 1;
1264// pub const PREFIX_CACHEINFO: int = 2;
1265
1266pub const LWTUNNEL_ENCAP_NONE: u16 = 0;
1267pub const LWTUNNEL_ENCAP_MPLS: u16 = 1;
1268pub const LWTUNNEL_ENCAP_IP: u16 = 2;
1269pub const LWTUNNEL_ENCAP_ILA: u16 = 3;
1270pub const LWTUNNEL_ENCAP_IP6: u16 = 4;
1271pub const LWTUNNEL_ENCAP_SEG6: u16 = 5;
1272pub const LWTUNNEL_ENCAP_BPF: u16 = 6;
1273pub const LWTUNNEL_ENCAP_SEG6_LOCAL: u16 = 7;
1274pub const LWTUNNEL_ENCAP_RPL: u16 = 8;
1275
1276pub const MPLS_IPTUNNEL_UNSPEC: u16 = 0;
1277pub const MPLS_IPTUNNEL_DST: u16 = 1;
1278pub const MPLS_IPTUNNEL_TTL: u16 = 2;
1279
1280// Available MACVTAP MODES
1281pub const MACVTAP_MODE_PRIVATE: u32 = 1;
1282pub const MACVTAP_MODE_VEPA: u32 = 2;
1283pub const MACVTAP_MODE_BRIDGE: u32 = 4;
1284pub const MACVTAP_MODE_PASSTHRU: u32 = 8;
1285pub const MACVTAP_MODE_SOURCE: u32 = 16;