1use neli_proc_macros::neli_enum;
2
3use crate as neli;
4
5#[neli_enum(serialized_type = "libc::c_uchar")]
7pub enum Af {
8 Inet = libc::AF_INET as libc::c_uchar,
9 Inet6 = libc::AF_INET6 as libc::c_uchar,
10}
11
12#[neli_enum(serialized_type = "u8")]
14pub enum RtAddrFamily {
15 Unspecified = libc::AF_UNSPEC as u8,
16 UnixOrLocal = libc::AF_UNIX as u8,
17 Inet = libc::AF_INET as u8,
18 Inet6 = libc::AF_INET6 as u8,
19 Ipx = libc::AF_IPX as u8,
20 Netlink = libc::AF_NETLINK as u8,
21 X25 = libc::AF_X25 as u8,
22 Ax25 = libc::AF_AX25 as u8,
23 Atmpvc = libc::AF_ATMPVC as u8,
24 Appletalk = libc::AF_APPLETALK as u8,
25 Packet = libc::AF_PACKET as u8,
26 Alg = libc::AF_ALG as u8,
27}
28
29#[neli_enum(serialized_type = "libc::c_uchar")]
32pub enum Rtn {
33 Unspec = libc::RTN_UNSPEC,
34 Unicast = libc::RTN_UNICAST,
35 Local = libc::RTN_LOCAL,
36 Broadcast = libc::RTN_BROADCAST,
37 Anycast = libc::RTN_ANYCAST,
38 Multicast = libc::RTN_MULTICAST,
39 Blackhole = libc::RTN_BLACKHOLE,
40 Unreachable = libc::RTN_UNREACHABLE,
41 Prohibit = libc::RTN_PROHIBIT,
42 Throw = libc::RTN_THROW,
43 Nat = libc::RTN_NAT,
44 Xresolve = libc::RTN_XRESOLVE,
45}
46
47#[neli_enum(serialized_type = "libc::c_uchar")]
50pub enum Rtprot {
51 Unspec = libc::RTPROT_UNSPEC,
52 Redirect = libc::RTPROT_REDIRECT,
53 Kernel = libc::RTPROT_KERNEL,
54 Boot = libc::RTPROT_BOOT,
55 Static = libc::RTPROT_STATIC,
56}
57
58#[neli_enum(serialized_type = "libc::c_uchar")]
61pub enum RtScope {
62 Universe = libc::RT_SCOPE_UNIVERSE,
63 Site = libc::RT_SCOPE_SITE,
64 Link = libc::RT_SCOPE_LINK,
65 Host = libc::RT_SCOPE_HOST,
66 Nowhere = libc::RT_SCOPE_NOWHERE,
67}
68
69#[neli_enum(serialized_type = "libc::c_uchar")]
72pub enum RtTable {
73 Unspec = libc::RT_TABLE_UNSPEC,
74 Compat = libc::RT_TABLE_COMPAT,
75 Default = libc::RT_TABLE_DEFAULT,
76 Main = libc::RT_TABLE_MAIN,
77 Local = libc::RT_TABLE_LOCAL,
78}
79
80impl_trait!(
81 pub RtaType,
84 libc::c_ushort,
85 pub RtaTypeWrapper,
88 Ifla,
89 Ifa,
90 Rta,
91 Tca,
92 Nda,
93 IflaInfo,
94 IflaVlan,
95 IflaVlanQos,
96);
97
98#[neli_enum(serialized_type = "libc::c_ushort")]
103pub enum Ifla {
104 Unspec = libc::IFLA_UNSPEC,
105 Address = libc::IFLA_ADDRESS,
106 Broadcast = libc::IFLA_BROADCAST,
107 Ifname = libc::IFLA_IFNAME,
108 Mtu = libc::IFLA_MTU,
109 Link = libc::IFLA_LINK,
110 Qdisc = libc::IFLA_QDISC,
111 Stats = libc::IFLA_STATS,
112 Cost = libc::IFLA_COST,
113 Priority = libc::IFLA_PRIORITY,
114 Master = libc::IFLA_MASTER,
115 Wireless = libc::IFLA_WIRELESS,
116 Protinfo = libc::IFLA_PROTINFO,
117 Txqlen = libc::IFLA_TXQLEN,
118 Map = libc::IFLA_MAP,
119 Weight = libc::IFLA_WEIGHT,
120 Operstate = libc::IFLA_OPERSTATE,
121 Linkmode = libc::IFLA_LINKMODE,
122 Linkinfo = libc::IFLA_LINKINFO,
123 NetNsPid = libc::IFLA_NET_NS_PID,
124 Ifalias = libc::IFLA_IFALIAS,
125 NumVf = libc::IFLA_NUM_VF,
126 VfinfoList = libc::IFLA_VFINFO_LIST,
127 Stats64 = libc::IFLA_STATS64,
128 VfPorts = libc::IFLA_VF_PORTS,
129 PortSelf = libc::IFLA_PORT_SELF,
130 AfSpec = libc::IFLA_AF_SPEC,
131 Group = libc::IFLA_GROUP,
132 NetNsFd = libc::IFLA_NET_NS_FD,
133 ExtMask = libc::IFLA_EXT_MASK,
134 Promiscuity = libc::IFLA_PROMISCUITY,
135 NumTxQueues = libc::IFLA_NUM_TX_QUEUES,
136 NumRxQueues = libc::IFLA_NUM_RX_QUEUES,
137 Carrier = libc::IFLA_CARRIER,
138 PhysPortId = libc::IFLA_PHYS_PORT_ID,
139 CarrierChanges = libc::IFLA_CARRIER_CHANGES,
140 PhysSwitchId = libc::IFLA_PHYS_SWITCH_ID,
141 LinkNetnsid = libc::IFLA_LINK_NETNSID,
142 PhysPortName = libc::IFLA_PHYS_PORT_NAME,
143 ProtoDown = libc::IFLA_PROTO_DOWN,
144 GsoMaxSegs = libc::IFLA_GSO_MAX_SEGS,
145 GsoMaxSize = libc::IFLA_GSO_MAX_SIZE,
146 Pad = libc::IFLA_PAD,
147 Xdp = libc::IFLA_XDP,
148 Event = libc::IFLA_EVENT,
149 NewNetnsid = libc::IFLA_NEW_NETNSID,
150 IfNetnsid = libc::IFLA_IF_NETNSID,
151 CarrierUpCount = libc::IFLA_CARRIER_UP_COUNT,
152 CarrierDownCount = libc::IFLA_CARRIER_DOWN_COUNT,
153 NewIfindex = libc::IFLA_NEW_IFINDEX,
154 MinMtu = libc::IFLA_MIN_MTU,
155 MaxMtu = libc::IFLA_MAX_MTU,
156 PropList = libc::IFLA_PROP_LIST,
157 AltIfname = libc::IFLA_ALT_IFNAME,
158 PermAddress = libc::IFLA_PERM_ADDRESS,
159 ProtoDownReason = libc::IFLA_PROTO_DOWN_REASON,
160}
161
162#[neli_enum(serialized_type = "libc::c_ushort")]
166pub enum IflaInfo {
167 Unspec = libc::IFLA_INFO_UNSPEC,
168 Kind = libc::IFLA_INFO_KIND,
169 Data = libc::IFLA_INFO_DATA,
170 Xstats = libc::IFLA_INFO_XSTATS,
171 SlaveKind = libc::IFLA_INFO_SLAVE_KIND,
172 SlaveData = libc::IFLA_INFO_SLAVE_DATA,
173}
174
175#[neli_enum(serialized_type = "libc::c_ushort")]
180pub enum IflaVlan {
181 Unspec = 0,
182 Id = 1,
183 Flags = 2,
184 EgressQos = 3,
185 IngressQos = 4,
186 Protocol = 5,
187}
188
189#[neli_enum(serialized_type = "libc::c_ushort")]
194pub enum IflaVlanQos {
195 Unspec = 0,
196 Mapping = 1,
197}
198
199#[neli_enum(serialized_type = "u16")]
202#[allow(missing_docs)]
203pub enum Rtm {
204 Newlink = libc::RTM_NEWLINK,
205 Dellink = libc::RTM_DELLINK,
206 Getlink = libc::RTM_GETLINK,
207 Setlink = libc::RTM_SETLINK,
208 Newaddr = libc::RTM_NEWADDR,
209 Deladdr = libc::RTM_DELADDR,
210 Getaddr = libc::RTM_GETADDR,
211 Newroute = libc::RTM_NEWROUTE,
212 Delroute = libc::RTM_DELROUTE,
213 Getroute = libc::RTM_GETROUTE,
214 Newneigh = libc::RTM_NEWNEIGH,
215 Delneigh = libc::RTM_DELNEIGH,
216 Getneigh = libc::RTM_GETNEIGH,
217 Newrule = libc::RTM_NEWRULE,
218 Delrule = libc::RTM_DELRULE,
219 Getrule = libc::RTM_GETRULE,
220 Newqdisc = libc::RTM_NEWQDISC,
221 Delqdisc = libc::RTM_DELQDISC,
222 Getqdisc = libc::RTM_GETQDISC,
223 Newtclass = libc::RTM_NEWTCLASS,
224 Deltclass = libc::RTM_DELTCLASS,
225 Gettclass = libc::RTM_GETTCLASS,
226 Newtfilter = libc::RTM_NEWTFILTER,
227 Deltfilter = libc::RTM_DELTFILTER,
228 Gettfilter = libc::RTM_GETTFILTER,
229 Newaction = libc::RTM_NEWACTION,
230 Delaction = libc::RTM_DELACTION,
231 Getaction = libc::RTM_GETACTION,
232 Newprefix = libc::RTM_NEWPREFIX,
233 Getmulticast = libc::RTM_GETMULTICAST,
234 Getanycast = libc::RTM_GETANYCAST,
235 Newneightbl = libc::RTM_NEWNEIGHTBL,
236 Getneightbl = libc::RTM_GETNEIGHTBL,
237 Setneightbl = libc::RTM_SETNEIGHTBL,
238 Newnduseropt = libc::RTM_NEWNDUSEROPT,
239 Newaddrlabel = libc::RTM_NEWADDRLABEL,
240 Deladdrlabel = libc::RTM_DELADDRLABEL,
241 Getaddrlabel = libc::RTM_GETADDRLABEL,
242 Getdcb = libc::RTM_GETDCB,
243 Setdcb = libc::RTM_SETDCB,
244 Newnetconf = libc::RTM_NEWNETCONF,
245 Getnetconf = libc::RTM_GETNETCONF,
246 Newmdb = libc::RTM_NEWMDB,
247 Delmdb = libc::RTM_DELMDB,
248 Getmdb = libc::RTM_GETMDB,
249 Newnsid = libc::RTM_NEWNSID,
250 Delnsid = libc::RTM_DELNSID,
251 Getnsid = libc::RTM_GETNSID,
252}
253
254#[neli_enum(serialized_type = "libc::c_ushort")]
259pub enum Rta {
260 Unspec = libc::RTA_UNSPEC,
261 Dst = libc::RTA_DST,
262 Src = libc::RTA_SRC,
263 Iif = libc::RTA_IIF,
264 Oif = libc::RTA_OIF,
265 Gateway = libc::RTA_GATEWAY,
266 Priority = libc::RTA_PRIORITY,
267 Prefsrc = libc::RTA_PREFSRC,
268 Metrics = libc::RTA_METRICS,
269 Multipath = libc::RTA_MULTIPATH,
270 Protoinfo = libc::RTA_PROTOINFO, Flow = libc::RTA_FLOW,
272 Cacheinfo = libc::RTA_CACHEINFO,
273 Session = libc::RTA_SESSION, MpAlgo = libc::RTA_MP_ALGO, Table = libc::RTA_TABLE,
276 Mark = libc::RTA_MARK,
277 MfcStats = libc::RTA_MFC_STATS,
278 #[cfg(target_env = "gnu")]
279 Via = libc::RTA_VIA,
280 #[cfg(target_env = "gnu")]
281 Newdst = libc::RTA_NEWDST,
282 #[cfg(target_env = "gnu")]
283 Pref = libc::RTA_PREF,
284 #[cfg(target_env = "gnu")]
285 EncapType = libc::RTA_ENCAP_TYPE,
286 #[cfg(target_env = "gnu")]
287 Encap = libc::RTA_ENCAP,
288 #[cfg(target_env = "gnu")]
289 Expires = libc::RTA_EXPIRES,
290 #[cfg(target_env = "gnu")]
291 Pad = libc::RTA_PAD,
292 #[cfg(target_env = "gnu")]
293 Uid = libc::RTA_UID,
294 #[cfg(target_env = "gnu")]
295 TtlPropagate = libc::RTA_TTL_PROPAGATE,
296}
297
298#[neli_enum(serialized_type = "libc::c_ushort")]
303pub enum Tca {
304 Unspec = libc::TCA_UNSPEC,
305 Kind = libc::TCA_KIND,
306 Options = libc::TCA_OPTIONS,
307 Stats = libc::TCA_STATS,
308 Xstats = libc::TCA_XSTATS,
309 Rate = libc::TCA_RATE,
310 Fcnt = libc::TCA_FCNT,
311 Stats2 = libc::TCA_STATS2,
312 Stab = libc::TCA_STAB,
313}
314
315#[neli_enum(serialized_type = "libc::c_ushort")]
319pub enum Nda {
320 Unspec = libc::NDA_UNSPEC,
321 Dst = libc::NDA_DST,
322 Lladdr = libc::NDA_LLADDR,
323 Cacheinfo = libc::NDA_CACHEINFO,
324 Probes = libc::NDA_PROBES,
325 Vlan = libc::NDA_VLAN,
326 Port = libc::NDA_PORT,
327 Vni = libc::NDA_VNI,
328 Ifindex = libc::NDA_IFINDEX,
329 #[cfg(target_env = "gnu")]
330 Master = libc::NDA_MASTER,
331 #[cfg(target_env = "gnu")]
332 LinkNetnsid = libc::NDA_LINK_NETNSID,
333 #[cfg(target_env = "gnu")]
334 SrcVni = libc::NDA_SRC_VNI,
335}
336
337#[neli_enum(serialized_type = "libc::c_ushort")]
339pub enum Arphrd {
340 Netrom = libc::ARPHRD_NETROM,
341 Ether = libc::ARPHRD_ETHER,
342 Eether = libc::ARPHRD_EETHER,
343 AX25 = libc::ARPHRD_AX25,
344 Pronet = libc::ARPHRD_PRONET,
345 Chaos = libc::ARPHRD_CHAOS,
346 Ieee802 = libc::ARPHRD_IEEE802,
347 Arcnet = libc::ARPHRD_ARCNET,
348 Appletlk = libc::ARPHRD_APPLETLK,
349 Dlci = libc::ARPHRD_DLCI,
350 Atm = libc::ARPHRD_APPLETLK,
351 Metricom = libc::ARPHRD_METRICOM,
352 Ieee1394 = libc::ARPHRD_IEEE1394,
353 Eui64 = libc::ARPHRD_EUI64,
354 Infiniband = libc::ARPHRD_INFINIBAND,
355
356 Loopback = libc::ARPHRD_LOOPBACK,
357
358 Void = libc::ARPHRD_VOID,
360 None = libc::ARPHRD_NONE,
361}
362
363#[allow(missing_docs)]
368#[neli_enum(serialized_type = "u16")]
369pub enum Ifa {
370 Unspec = libc::IFA_UNSPEC,
371 Address = libc::IFA_ADDRESS,
372 Local = libc::IFA_LOCAL,
373 Label = libc::IFA_LABEL,
374 Broadcast = libc::IFA_BROADCAST,
375 Anycast = libc::IFA_ANYCAST,
376 Cacheinfo = libc::IFA_CACHEINFO,
377 Multicast = libc::IFA_MULTICAST,
378 Flags = libc::IFA_FLAGS,
379}
380
381impl_flags!(
382 pub Iff: libc::c_uint {
385 UP = libc::IFF_UP as libc::c_uint,
386 BROADCAST = libc::IFF_BROADCAST as libc::c_uint,
387 DEBUG = libc::IFF_DEBUG as libc::c_uint,
388 LOOPBACK = libc::IFF_LOOPBACK as libc::c_uint,
389 POINTOPOINT = libc::IFF_POINTOPOINT as libc::c_uint,
390 RUNNING = libc::IFF_RUNNING as libc::c_uint,
391 NOARP = libc::IFF_NOARP as libc::c_uint,
392 PROMISC = libc::IFF_PROMISC as libc::c_uint,
393 NOTRAILERS = libc::IFF_NOTRAILERS as libc::c_uint,
394 ALLMULTI = libc::IFF_ALLMULTI as libc::c_uint,
395 MASTER = libc::IFF_MASTER as libc::c_uint,
396 SLAVE = libc::IFF_SLAVE as libc::c_uint,
397 MULTICAST = libc::IFF_MULTICAST as libc::c_uint,
398 PORTSEL = libc::IFF_PORTSEL as libc::c_uint,
399 AUTOMEDIA = libc::IFF_AUTOMEDIA as libc::c_uint,
400 DYNAMIC = libc::IFF_DYNAMIC as libc::c_uint,
401 LOWERUP = libc::IFF_LOWER_UP as libc::c_uint,
402 DORMANT = libc::IFF_DORMANT as libc::c_uint,
403 ECHO = libc::IFF_ECHO as libc::c_uint,
404 }
406);
407
408impl_flags!(
409 pub IfaF: u8 {
411 SECONDARY = libc::IFA_F_SECONDARY as u8,
412 TEMPORARY = libc::IFA_F_TEMPORARY as u8,
413 NODAD = libc::IFA_F_NODAD as u8,
414 OPTIMISTIC = libc::IFA_F_OPTIMISTIC as u8,
415 DADFAILED = libc::IFA_F_DADFAILED as u8,
416 HOMEADDRESS = libc::IFA_F_HOMEADDRESS as u8,
417 DEPRECATED = libc::IFA_F_DEPRECATED as u8,
418 TENTATIVE = libc::IFA_F_TENTATIVE as u8,
419 PERMANENT = libc::IFA_F_PERMANENT as u8,
420 }
421);
422
423impl_flags!(
424 pub RtmF: libc::c_uint {
427 NOTIFY = libc::RTM_F_NOTIFY,
428 CLONED = libc::RTM_F_CLONED,
429 EQUALIZE = libc::RTM_F_EQUALIZE,
430 PREFIX = libc::RTM_F_PREFIX,
431
432 #[cfg(target_env = "gnu")]
433 LOOKUPTABLE = libc::RTM_F_LOOKUP_TABLE,
434 #[cfg(target_env = "gnu")]
435 FIBMATCH = libc::RTM_F_FIB_MATCH,
436 }
437);
438
439impl_flags!(
440 #[allow(missing_docs)]
442 pub Nud: u16 {
443 NONE = libc::NUD_NONE,
444 INCOMPLETE = libc::NUD_INCOMPLETE,
445 REACHABLE = libc::NUD_REACHABLE,
446 STALE = libc::NUD_STALE,
447 DELAY = libc::NUD_DELAY,
448 PROBE = libc::NUD_PROBE,
449 FAILED = libc::NUD_FAILED,
450 NOARP = libc::NUD_NOARP,
451 PERMANENT = libc::NUD_PERMANENT,
452 }
453);
454
455impl_flags!(
456 #[allow(missing_docs)]
458 pub Ntf: u8 {
459 USE = libc::NTF_USE,
460 SELF = libc::NTF_SELF,
461 MASTER = libc::NTF_MASTER,
462 PROXY = libc::NTF_PROXY,
463 #[cfg(target_env = "gnu")]
464 EXT_LEARNED = libc::NTF_EXT_LEARNED,
465 #[cfg(target_env = "gnu")]
466 OFFLOADED = libc::NTF_OFFLOADED,
467 ROUTER = libc::NTF_ROUTER,
468 }
469);
470
471impl_flags!(
472 #[allow(missing_docs)]
474 pub VlanFlags: u8 {
475 REORDER_HDR = 0x1,
476 GVRP = 0x2,
477 LOOSE_BINDING = 0x4,
478 MVRP = 0x8,
479 BRIDGE_BINDING = 0x10,
480 }
481);