• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright TUNTAP, 2017 The ChromiumOS Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 //! Linux networking API bindings.
6 
7 #![allow(non_upper_case_globals)]
8 #![allow(non_camel_case_types)]
9 #![allow(non_snake_case)]
10 
11 use base::ioctl_ior_nr;
12 use base::ioctl_iow_nr;
13 
14 pub mod if_tun;
15 pub mod iff; // Named "iff" to avoid conflicting with "if" keyword.
16 pub mod sockios;
17 pub use crate::if_tun::sock_fprog;
18 pub use crate::if_tun::IFF_MULTI_QUEUE;
19 pub use crate::if_tun::IFF_NO_PI;
20 pub use crate::if_tun::IFF_TAP;
21 pub use crate::if_tun::IFF_VNET_HDR;
22 pub use crate::if_tun::TUN_F_CSUM;
23 pub use crate::if_tun::TUN_F_TSO4;
24 pub use crate::if_tun::TUN_F_TSO6;
25 pub use crate::if_tun::TUN_F_TSO_ECN;
26 pub use crate::if_tun::TUN_F_UFO;
27 pub use crate::iff::ifreq;
28 pub use crate::iff::net_device_flags;
29 
30 pub const TUNTAP: ::std::os::raw::c_uint = 84;
31 
32 // Windows doesn't have these constants in libc. As such, we preserve them here
33 // for use on that platform, and for the sake of simplicity, crosvm code
34 // uses these constants on all platforms.
35 pub type sa_family_t = ::std::os::raw::c_ushort;
36 pub const ARPHRD_ETHER: sa_family_t = 1;
37 
38 ioctl_iow_nr!(TUNSETNOCSUM, TUNTAP, 200, ::std::os::raw::c_int);
39 ioctl_iow_nr!(TUNSETDEBUG, TUNTAP, 201, ::std::os::raw::c_int);
40 ioctl_iow_nr!(TUNSETIFF, TUNTAP, 202, ::std::os::raw::c_int);
41 ioctl_iow_nr!(TUNSETPERSIST, TUNTAP, 203, ::std::os::raw::c_int);
42 ioctl_iow_nr!(TUNSETOWNER, TUNTAP, 204, ::std::os::raw::c_int);
43 ioctl_iow_nr!(TUNSETLINK, TUNTAP, 205, ::std::os::raw::c_int);
44 ioctl_iow_nr!(TUNSETGROUP, TUNTAP, 206, ::std::os::raw::c_int);
45 ioctl_ior_nr!(TUNGETFEATURES, TUNTAP, 207, ::std::os::raw::c_uint);
46 ioctl_iow_nr!(TUNSETOFFLOAD, TUNTAP, 208, ::std::os::raw::c_uint);
47 ioctl_iow_nr!(TUNSETTXFILTER, TUNTAP, 209, ::std::os::raw::c_uint);
48 ioctl_ior_nr!(TUNGETIFF, TUNTAP, 210, ::std::os::raw::c_uint);
49 ioctl_ior_nr!(TUNGETSNDBUF, TUNTAP, 211, ::std::os::raw::c_int);
50 ioctl_iow_nr!(TUNSETSNDBUF, TUNTAP, 212, ::std::os::raw::c_int);
51 ioctl_iow_nr!(TUNATTACHFILTER, TUNTAP, 213, sock_fprog);
52 ioctl_iow_nr!(TUNDETACHFILTER, TUNTAP, 214, sock_fprog);
53 ioctl_ior_nr!(TUNGETVNETHDRSZ, TUNTAP, 215, ::std::os::raw::c_int);
54 ioctl_iow_nr!(TUNSETVNETHDRSZ, TUNTAP, 216, ::std::os::raw::c_int);
55 ioctl_iow_nr!(TUNSETQUEUE, TUNTAP, 217, ::std::os::raw::c_int);
56 ioctl_iow_nr!(TUNSETIFINDEX, TUNTAP, 218, ::std::os::raw::c_uint);
57 ioctl_ior_nr!(TUNGETFILTER, TUNTAP, 219, sock_fprog);
58 ioctl_iow_nr!(TUNSETVNETLE, TUNTAP, 220, ::std::os::raw::c_int);
59 ioctl_ior_nr!(TUNGETVNETLE, TUNTAP, 221, ::std::os::raw::c_int);
60 ioctl_iow_nr!(TUNSETVNETBE, TUNTAP, 222, ::std::os::raw::c_int);
61 ioctl_ior_nr!(TUNGETVNETBE, TUNTAP, 223, ::std::os::raw::c_int);
62