Remove chdir changes for now. Needs more testing.
[deb_libnfs.git] / README
... / ...
CommitLineData
1LIBNFS is a client library for accessing NFS shares over a network.
2
3LIBNFS offers three different APIs, for different use :
41, RAW : A fully async low level rpc library for nfs protocols
5This API is described in include/libnfs-raw.h
6it offers a fully async interface to raw XDR encoded blobs.
7This api provides very flexible and precice control of the RPC issued.
8
9examples/nfsclient-raw.c provides examples on how to use the raw API
10
112, NFS ASYNC : A fully asynchronous library for high level vfs functions
12This API is described by the *_async() fucntions in include/libnfs.h.
13This API provides a fully async access to posix vfs like functions such as
14stat(), read(), ...
15
16examples/nfsclient-async.c provides examples on how to use this API
17
18
193, NFS SYNC : A synchronous library for high level vfs functions
20This API is described by the *_sync() fucntions in include/libnfs.h.
21This API provides access to posix vfs like functions such as
22stat(), read(), ...
23
24examples/nfsclient-sync.c provides examples on how to use this API
25
26URL-FORMAT:
27===========
28Libnfs uses RFC2224 style URLs extended with libnfs specific url arguments some minor extensions.
29The basic syntax of these URLs is :
30
31nfs://<server|ipv4>/path[?arg=val[&arg=val]*]
32
33Arguments supported by libnfs are :
34 tcp-syncnt=<int> : Number of SYNs to send during the seccion establish
35 before failing settin up the tcp connection to the
36 server.
37 uid=<int> : UID value to use when talking to the server.
38 default it 65534 on Windows and getuid() on unixen.
39 gid=<int> : GID value to use when talking to the server.
40 default it 65534 on Windows and getgid() on unixen.
41
42
43ROOT vs NON-ROOT
44================
45When running as root, libnfs tries to allocate a system port for its connection
46to the nfs server. When running as non-root it will use a normal
47ephemeral port.
48Many NFS servers default to a mode where they do not allow non-system
49ports from connecting.
50These servers require you use the "insecure" export option in /etc/exports
51in order to allow libnfs clients to be able to connect.
52
53Some versions of Linux support special capabilities that can be assigned to
54programs to allow non-root users to bind to system ports.
55This is set up by running
56 sudo setcap 'cap_net_bind_service=+ep' /path/to/executable
57When libnfs is linked against an executable with this special capability
58assigned to it, libnfs may be able to use system ports even when executing
59under the privilege of a non-root user account.
60
61This is highly non-portable so IF this works on your linux system, count
62yourself lucky.
63
64
65FUSE
66====
67A simple FUSE filesystem built on libnfs can be found in
68examples/fuse_nfs.c
69
70Compile using : gcc fuse_nfs.c -o fuse_nfs -lfuse -lnfs
71Mount using : sudo ./fuse_nfs -n nfs://<server>/<export> -m <mountpoint>
72
73
74PLATFORM support
75=================
76This is a truly multiplatform library.
77
78Linux: - tested with Ubuntu 10.04 - should work with others aswell
79Cygwin: - tested under 64bit win2k8.
80MacOSX: - tested with SDK 10.4 (under Snow Leopard) - should also work with later SDKs and 64Bit
81iOS: - tested with iOS SDK 4.2 - running on iOS 4.3.x
82FreeBSD:- tested with 8.2
83Solaris
84Windows:- tested on Windows 7 64 and Windows XP 32 using Visual Studio 10 (see README.win32.txt for build instructions)
85Android:
86AROS: - Build with 'make -f aros/Makefile.AROS'
87
88
89RELEASE TARBALLS
90================
91Release tarballs are available at https://sites.google.com/site/libnfstarballs/li
92
93
94
95MAILINGLIST
96===========
97A libnfs mailinglist is available at http://groups.google.com/group/libnfs
98Announcements of new versions of libnfs will be posted to this list.
99