Skip to main content

libc/unix/bsd/apple/b64/
mod.rs

1//! 64-bit specific Apple (ios/darwin) definitions
2
3use crate::prelude::*;
4
5s2! {
6    #[exhaustive] // unlikely to change
7    pub struct timeval32 {
8        pub tv_sec: i32,
9        pub tv_usec: i32,
10    }
11
12    #[exhaustive] // FIXME(exhaustive): review for 1.0
13    pub struct if_data {
14        pub ifi_type: c_uchar,
15        pub ifi_typelen: c_uchar,
16        pub ifi_physical: c_uchar,
17        pub ifi_addrlen: c_uchar,
18        pub ifi_hdrlen: c_uchar,
19        pub ifi_recvquota: c_uchar,
20        pub ifi_xmitquota: c_uchar,
21        pub ifi_unused1: c_uchar,
22        pub ifi_mtu: u32,
23        pub ifi_metric: u32,
24        pub ifi_baudrate: u32,
25        pub ifi_ipackets: u32,
26        pub ifi_ierrors: u32,
27        pub ifi_opackets: u32,
28        pub ifi_oerrors: u32,
29        pub ifi_collisions: u32,
30        pub ifi_ibytes: u32,
31        pub ifi_obytes: u32,
32        pub ifi_imcasts: u32,
33        pub ifi_omcasts: u32,
34        pub ifi_iqdrops: u32,
35        pub ifi_noproto: u32,
36        pub ifi_recvtiming: u32,
37        pub ifi_xmittiming: u32,
38        pub ifi_lastchange: timeval32,
39        pub ifi_unused2: u32,
40        pub ifi_hwassist: u32,
41        pub ifi_reserved1: u32,
42        pub ifi_reserved2: u32,
43    }
44
45    #[exhaustive] // FIXME(exhaustive): review for 1.0
46    #[cfg(target_os = "macos")]
47    pub struct bpf_hdr {
48        pub bh_tstamp: crate::timeval32,
49        pub bh_caplen: u32,
50        pub bh_datalen: u32,
51        pub bh_hdrlen: c_ushort,
52    }
53}
54
55cfg_if! {
56    if #[cfg(target_os = "macos")] {
57        pub const BIOCSETF: c_ulong = 0x80104267;
58        pub const BIOCSRTIMEOUT: c_ulong = 0x8010426d;
59        pub const BIOCGRTIMEOUT: c_ulong = 0x4010426e;
60        pub const BIOCSETFNR: c_ulong = 0x8010427e;
61    }
62}
63
64extern "C" {
65    // `exchangedata` is prohibited on tvOS and watchOS.
66    #[cfg(not(any(target_os = "tvos", target_os = "watchos")))]
67    pub fn exchangedata(path1: *const c_char, path2: *const c_char, options: c_uint) -> c_int;
68}
69
70cfg_if! {
71    if #[cfg(target_arch = "x86_64")] {
72        mod x86_64;
73        pub use self::x86_64::*;
74    } else if #[cfg(target_arch = "aarch64")] {
75        mod aarch64;
76        pub use self::aarch64::*;
77    } else {
78        // Unknown target_arch
79    }
80}