MOUNT: describe mount version 1
[deb_libnfs.git] / README
1 LIBNFS is a client library for accessing NFS shares over a network.
2
3 LIBNFS offers three different APIs, for different use :
4 1, RAW : A fully async low level rpc library for nfs protocols
5 This API is described in include/libnfs-raw.h
6 it offers a fully async interface to raw XDR encoded blobs.
7 This api provides very flexible and precice control of the RPC issued.
8
9 examples/nfsclient-raw.c provides examples on how to use the raw API
10
11 2, NFS ASYNC : A fully asynchronous library for high level vfs functions
12 This API is described by the *_async() fucntions in include/libnfs.h.
13 This API provides a fully async access to posix vfs like functions such as
14 stat(), read(), ...
15
16 examples/nfsclient-async.c provides examples on how to use this API
17
18
19 3, NFS SYNC : A synchronous library for high level vfs functions
20 This API is described by the *_sync() fucntions in include/libnfs.h.
21 This API provides access to posix vfs like functions such as
22 stat(), read(), ...
23
24 examples/nfsclient-sync.c provides examples on how to use this API
25
26
27
28 ROOT vs NON-ROOT
29 ================
30 When running as root, libnfs tries to allocate a system port for its connection
31 to the nfs server. When running as non-root it will use a normal
32 ephemeral port.
33 Many NFS servers default to a mode where they do not allow non-system
34 ports from connecting.
35 These servers require you use the "insecure" export option in /etc/exports
36 in order to allow libnfs clients to be able to connect.
37
38 Some versions of Linux support special capabilities that can be assigned to
39 programs to allow non-root users to bind to system ports.
40 This is set up by running
41 sudo setcap 'cap_net_bind_service=+ep' /path/to/executable
42 When libnfs is linked against an executable with this special capability
43 assigned to it, libnfs may be able to use system ports even when executing
44 under the privilege of a non-root user account.
45
46 This is highly non-portable so IF this works on your linux system, count
47 yourself lucky.
48
49
50
51 PLATFORM support
52 =================
53 As of now this is tested with linux, MacOSX and Apple iOS.
54
55 Linux: - tested with Ubuntu 10.04 - should work with others aswell
56 Cygwin: - tested under 64bit win2k8.
57 MacOSX: - tested with SDK 10.4 (under Snow Leopard) - should also work with later SDKs and 64Bit
58 iOS: - tested with iOS SDK 4.2 - running on iOS 4.3.x
59 FreeBSD:- tested with 8.2
60 OpenSolaris
61 Windows:- tested on Windows 7 64 and Windows XP 32 using Visual Studio 10 (see README.win32.txt for build instructions)
62
63
64 Cygwin
65 ------
66 Configure with './configure --enable-tirpc' since cygwin only supports ti-rpc and not classic rpc.
67