|
25 | 25 | pub int_p_sign_posn: ::c_char,
|
26 | 26 | pub int_n_sign_posn: ::c_char,
|
27 | 27 | }
|
| 28 | + |
| 29 | + pub struct statfs { |
| 30 | + pub f_flags: ::uint32_t, |
| 31 | + pub f_bsize: ::uint32_t, |
| 32 | + pub f_iosize: ::uint32_t, |
| 33 | + pub f_blocks: ::uint64_t, |
| 34 | + pub f_bfree: ::uint64_t, |
| 35 | + pub f_bavail: ::int64_t, |
| 36 | + pub f_files: ::uint64_t, |
| 37 | + pub f_ffree: ::uint64_t, |
| 38 | + pub f_favail: ::int64_t, |
| 39 | + pub f_syncwrites: ::uint64_t, |
| 40 | + pub f_syncreads: ::uint64_t, |
| 41 | + pub f_asyncwrites: ::uint64_t, |
| 42 | + pub f_asyncreads: ::uint64_t, |
| 43 | + pub f_fsid: ::fsid_t, |
| 44 | + pub f_namemax: ::uint32_t, |
| 45 | + pub f_owner: ::uid_t, |
| 46 | + pub f_ctime: ::uint64_t, |
| 47 | + pub f_fstypename: [::c_char; 16], |
| 48 | + pub f_mntonname: [::c_char; 90], |
| 49 | + pub f_mntfromname: [::c_char; 90], |
| 50 | + pub f_mntfromspec: [::c_char; 90], |
| 51 | + pub mount_info: mount_info, |
| 52 | + } |
| 53 | + |
| 54 | + pub union mount_info { |
| 55 | + pub ufs_args: ufs_args, |
| 56 | + pub mfs_args: mfs_args, |
| 57 | + pub nfs_args: nfs_args, |
| 58 | + pub iso_args: iso_args, |
| 59 | + pub msdosfs_args: msdosfs_args, |
| 60 | + pub ntfs_args: ntfs_args, |
| 61 | + pub tmpfs_args: tmpfs_args, |
| 62 | + align: [::c_char; 160], |
| 63 | + } |
| 64 | + |
| 65 | + pub struct ufs_args { |
| 66 | + pub fspec: *mut ::c_char, |
| 67 | + pub export_info: export_args, |
| 68 | + } |
| 69 | + |
| 70 | + pub struct mfs_args { |
| 71 | + pub fspec: *mut ::c_char, |
| 72 | + pub export_info: export_args, |
| 73 | + // https://github.com/openbsd/src/blob/master/sys/sys/types.h#L134 |
| 74 | + pub base: *mut ::c_char, |
| 75 | + pub size: ::c_ulong, |
| 76 | + } |
| 77 | + |
| 78 | + pub struct iso_args { |
| 79 | + pub fspec: *mut ::c_char, |
| 80 | + pub export_info: export_args, |
| 81 | + pub flags: ::c_int, |
| 82 | + pub sess: ::c_int, |
| 83 | + } |
| 84 | + |
| 85 | + pub struct nfs_args { |
| 86 | + pub version: ::c_int, |
| 87 | + pub addr: *mut ::sockaddr, |
| 88 | + pub addrlen: ::c_int, |
| 89 | + pub sotype: ::c_int, |
| 90 | + pub proto: ::c_int, |
| 91 | + pub fh: *mut ::c_uchar, |
| 92 | + pub fhsize: ::c_int, |
| 93 | + pub flags: ::c_int, |
| 94 | + pub wsize: ::c_int, |
| 95 | + pub rsize: ::c_int, |
| 96 | + pub readdirsize: ::c_int, |
| 97 | + pub timeo: ::c_int, |
| 98 | + pub retrans: ::c_int, |
| 99 | + pub maxgrouplist: ::c_int, |
| 100 | + pub readahead: ::c_int, |
| 101 | + pub leaseterm: ::c_int, |
| 102 | + pub deadthresh: ::c_int, |
| 103 | + pub hostname: *mut ::c_char, |
| 104 | + pub acregmin: ::c_int, |
| 105 | + pub acregmax: ::c_int, |
| 106 | + pub acdirmin: ::c_int, |
| 107 | + pub acdirmax: ::c_int, |
| 108 | + } |
| 109 | + |
| 110 | + pub struct msdosfs_args { |
| 111 | + pub fspec: *mut ::c_char, |
| 112 | + pub export_info: export_args, |
| 113 | + pub uid: ::uid_t, |
| 114 | + pub gid: ::gid_t, |
| 115 | + pub mask: ::mode_t, |
| 116 | + pub flags: ::c_int, |
| 117 | + } |
| 118 | + |
| 119 | + pub struct ntfs_args { |
| 120 | + pub fspec: *mut ::c_char, |
| 121 | + pub export_info: export_args, |
| 122 | + pub uid: ::uid_t, |
| 123 | + pub gid: ::gid_t, |
| 124 | + pub mode: ::mode_t, |
| 125 | + pub flag: ::c_ulong, |
| 126 | + } |
| 127 | + |
| 128 | + pub struct udf_args { |
| 129 | + pub fspec: *mut ::c_char, |
| 130 | + pub lastblock: ::uint32_t, |
| 131 | + } |
| 132 | + |
| 133 | + pub struct tmpfs_args { |
| 134 | + pub ta_version: ::c_int, |
| 135 | + pub ta_nodes_max: ::ino_t, |
| 136 | + pub ta_size_max: ::off_t, |
| 137 | + pub ta_root_uid: ::uid_t, |
| 138 | + pub ta_root_gid: ::gid_t, |
| 139 | + pub ta_root_mode: ::mode_t, |
| 140 | + } |
| 141 | + |
| 142 | + pub struct fusefs_args { |
| 143 | + pub name: *mut ::c_char, |
| 144 | + pub fd: ::c_int, |
| 145 | + pub max_read: ::c_int, |
| 146 | + pub allow_other: ::c_int, |
| 147 | + } |
| 148 | + |
| 149 | + pub struct xucred { |
| 150 | + pub cr_uid: ::uid_t, |
| 151 | + pub cr_gid: ::gid_t, |
| 152 | + pub cr_ngroups: ::c_short, |
| 153 | + //https://github.com/openbsd/src/blob/master/sys/sys/syslimits.h#L44 |
| 154 | + pub cr_groups: [::gid_t; 16], |
| 155 | + } |
| 156 | + |
| 157 | + pub struct export_args { |
| 158 | + pub ex_flags: ::c_int, |
| 159 | + pub ex_root: ::uid_t, |
| 160 | + pub ex_anon: xucred, |
| 161 | + pub ex_addr: *mut ::sockaddr, |
| 162 | + pub ex_addrlen: ::c_int, |
| 163 | + pub ex_mask: *mut ::sockaddr, |
| 164 | + pub ex_masklen: ::c_int, |
| 165 | + } |
28 | 166 | }
|
29 | 167 |
|
| 168 | +//https://github.com/openbsd/src/blob/master/sys/sys/mount.h |
| 169 | +pub const ISOFSMNT_NORRIP: ::c_int = 0x1; // disable Rock Ridge Ext |
| 170 | +pub const ISOFSMNT_GENS: ::c_int = 0x2; // enable generation numbers |
| 171 | +pub const ISOFSMNT_EXTATT: ::c_int = 0x4; // enable extended attr |
| 172 | +pub const ISOFSMNT_NOJOLIET: ::c_int = 0x8; // disable Joliet Ext |
| 173 | +pub const ISOFSMNT_SESS: ::c_int = 0x10; // use iso_args.sess |
| 174 | + |
| 175 | +pub const NFS_ARGSVERSION: ::c_int = 4; // change when nfs_args changes |
| 176 | + |
| 177 | +pub const NFSMNT_RESVPORT: ::c_int = 0; // always use reserved ports |
| 178 | +pub const NFSMNT_SOFT: ::c_int = 0x1; // soft mount (hard is default) |
| 179 | +pub const NFSMNT_WSIZE: ::c_int = 0x2; // set write size |
| 180 | +pub const NFSMNT_RSIZE: ::c_int = 0x4; // set read size |
| 181 | +pub const NFSMNT_TIMEO: ::c_int = 0x8; // set initial timeout |
| 182 | +pub const NFSMNT_RETRANS: ::c_int = 0x10; // set number of request retries |
| 183 | +pub const NFSMNT_MAXGRPS: ::c_int = 0x20; // set maximum grouplist size |
| 184 | +pub const NFSMNT_INT: ::c_int = 0x40; // allow interrupts on hard mount |
| 185 | +pub const NFSMNT_NOCONN: ::c_int = 0x80; // Don't Connect the socket |
| 186 | +pub const NFSMNT_NQNFS: ::c_int = 0x100; // Use Nqnfs protocol |
| 187 | +pub const NFSMNT_NFSV3: ::c_int = 0x200; // Use NFS Version 3 protocol |
| 188 | +pub const NFSMNT_KERB: ::c_int = 0x400; // Use Kerberos authentication |
| 189 | +pub const NFSMNT_DUMBTIMR: ::c_int = 0x800; // Don't estimate rtt dynamically |
| 190 | +pub const NFSMNT_LEASETERM: ::c_int = 0x1000; // set lease term (nqnfs) |
| 191 | +pub const NFSMNT_READAHEAD: ::c_int = 0x2000; // set read ahead |
| 192 | +pub const NFSMNT_DEADTHRESH: ::c_int = 0x4000; // set dead server retry thresh |
| 193 | +pub const NFSMNT_NOAC: ::c_int = 0x8000; // disable attribute cache |
| 194 | +pub const NFSMNT_RDIRPLUS: ::c_int = 0x10000; // Use Readdirplus for V3 |
| 195 | +pub const NFSMNT_READDIRSIZE: ::c_int = 0x20000; // Set readdir size |
| 196 | + |
| 197 | +/* Flags valid only in mount syscall arguments */ |
| 198 | +pub const NFSMNT_ACREGMIN: ::c_int = 0x40000; // acregmin field valid |
| 199 | +pub const NFSMNT_ACREGMAX: ::c_int = 0x80000; // acregmax field valid |
| 200 | +pub const NFSMNT_ACDIRMIN: ::c_int = 0x100000; // acdirmin field valid |
| 201 | +pub const NFSMNT_ACDIRMAX: ::c_int = 0x200000; // acdirmax field valid |
| 202 | + |
| 203 | +/* Flags valid only in kernel */ |
| 204 | +pub const NFSMNT_INTERNAL: ::c_int = 0xfffc0000; // Bits set internally |
| 205 | +pub const NFSMNT_HASWRITEVERF: ::c_int = 0x40000; // Has write verifier for V3 |
| 206 | +pub const NFSMNT_GOTPATHCONF: ::c_int = 0x80000; // Got the V3 pathconf info |
| 207 | +pub const NFSMNT_GOTFSINFO: ::c_int = 0x100000; // Got the V3 fsinfo |
| 208 | +pub const NFSMNT_MNTD: ::c_int = 0x200000; // Mnt server for mnt point |
| 209 | +pub const NFSMNT_DISMINPROG: ::c_int = 0x400000; // Dismount in progress |
| 210 | +pub const NFSMNT_DISMNT: ::c_int = 0x800000; // Dismounted |
| 211 | +pub const NFSMNT_SNDLOCK: ::c_int = 0x1000000; // Send socket lock |
| 212 | +pub const NFSMNT_WANTSND: ::c_int = 0x2000000; // Want above |
| 213 | +pub const NFSMNT_RCVLOCK: ::c_int = 0x4000000; // Rcv socket lock |
| 214 | +pub const NFSMNT_WANTRCV: ::c_int = 0x8000000; // Want above |
| 215 | +pub const NFSMNT_WAITAUTH: ::c_int = 0x10000000; // Wait for authentication |
| 216 | +pub const NFSMNT_HASAUTH: ::c_int = 0x20000000; // Has authenticator |
| 217 | +pub const NFSMNT_WANTAUTH: ::c_int = 0x40000000; // Wants an authenticator |
| 218 | +pub const NFSMNT_AUTHERR: ::c_int = 0x80000000; // Authentication error |
| 219 | + |
| 220 | +pub const MSDOSFSMNT_SHORTNAME: ::c_int = 0x1; // Force old DOS short names only |
| 221 | +pub const MSDOSFSMNT_LONGNAME: ::c_int = 0x2; // Force Win'95 long names |
| 222 | +pub const MSDOSFSMNT_NOWIN95: ::c_int = 0x4; // Completely ignore Win95 entries |
| 223 | + |
| 224 | +pub const NTFS_MFLAG_CASEINS: ::c_int = 0x1; |
| 225 | +pub const NTFS_MFLAG_ALLNAMES: ::c_int = 0x2; |
| 226 | + |
| 227 | +pub const TMPFS_ARGS_VERSION: ::c_int = 1; |
| 228 | + |
30 | 229 | pub const MAP_STACK : ::c_int = 0x4000;
|
31 | 230 |
|
32 | 231 | // https://github.com/openbsd/src/blob/master/sys/net/if.h#L187
|
@@ -59,6 +258,9 @@ extern {
|
59 | 258 | pub fn strtonum(nptr: *const ::c_char, minval: ::c_longlong,
|
60 | 259 | maxval: ::c_longlong,
|
61 | 260 | errstr: *mut *const ::c_char) -> ::c_longlong;
|
| 261 | + |
| 262 | + pub fn statfs(path: *const ::c_char, buf: *mut statfs) -> ::c_int; |
| 263 | + pub fn fstatfs(fd: ::c_int, buf: *mut statfs) -> ::c_int; |
62 | 264 | }
|
63 | 265 |
|
64 | 266 | cfg_if! {
|
|
0 commit comments