Imported Upstream version 1.9.4
[deb_libnfs.git] / README
CommitLineData
dabf4152
AM
1LIBNFS is a client library for accessing NFS shares over a network.
2
3LIBNFS offers three different APIs, for different use :
ee872606 41, RAW : A fully async low level RPC library for NFS protocols
dabf4152
AM
5This API is described in include/libnfs-raw.h
6it offers a fully async interface to raw XDR encoded blobs.
ee872606 7This API provides very flexible and precise control of the RPC issued.
dabf4152
AM
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
ee872606 12This API is described by the *_async() functions in include/libnfs.h.
dabf4152
AM
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
ee872606 20This API is described by the *_sync() functions in include/libnfs.h.
dabf4152
AM
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
ee872606
RRS
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
f1f22dbf 31nfs://<server|ipv4|ipv6>/path[?arg=val[&arg=val]*]
ee872606
RRS
32
33Arguments supported by libnfs are :
34 tcp-syncnt=<int> : Number of SYNs to send during the session establish
35 before failing setting 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.
dabf4152
AM
41
42
43ROOT vs NON-ROOT
44================
45When running as root, libnfs tries to allocate a system port for its connection
ee872606 46to the NFS server. When running as non-root it will use a normal
dabf4152
AM
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
5670ec6e
AM
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
f1f22dbf
RRS
65DOCUMENTATION
66=============
67libnfs sources ship with prebuilt manpage(s) in the doc directory.
68If you change the manpage sources you need to manually regenerate the new
69manpages by running
70 cd doc
71 make doc
72
ee872606
RRS
73FUSE
74====
75A simple FUSE filesystem built on libnfs can be found in
76examples/fuse_nfs.c
77
78Compile using : gcc fuse_nfs.c -o fuse_nfs -lfuse -lnfs
79Mount using : sudo ./fuse_nfs -n nfs://<server>/<export> -m <mountpoint>
80
5670ec6e 81
3be27335 82PLATFORM support
dabf4152 83=================
ee872606 84This is a truly multiplatform library.
dabf4152 85
ee872606 86Linux: - tested with Ubuntu 10.04 - should work with others as well
3be27335 87Cygwin: - tested under 64bit win2k8.
dabf4152
AM
88MacOSX: - tested with SDK 10.4 (under Snow Leopard) - should also work with later SDKs and 64Bit
89iOS: - tested with iOS SDK 4.2 - running on iOS 4.3.x
3be27335 90FreeBSD:- tested with 8.2
ee872606 91Solaris
5670ec6e 92Windows:- tested on Windows 7 64 and Windows XP 32 using Visual Studio 10 (see README.win32.txt for build instructions)
ee872606
RRS
93Android:
94AROS: - Build with 'make -f aros/Makefile.AROS'
95
96
97LD_PRELOAD
98==========
99examples/ld_nfs.c contains a LD_PRELOADable module that can be used to make
100several standard utilities nfs aware.
101It is still very incomplete but can be used for basic things such as cat and cp.
102Patches to add more coverage is welcome.
103
104Compile with :
105gcc -fPIC -shared -o ld_nfs.so examples/ld_nfs.c -ldl -lnfs
106
107Then try things like
108LD_NFS_DEBUG=9 LD_PRELOAD=./ld_nfs.so cat nfs://127.0.0.1/data/tmp/foo123
109
110LD_NFS_DEBUG=9 LD_PRELOAD=./ld_nfs.so cp nfs://127.0.0.1/data/tmp/foo123 nfs://127.0.0.1/data/tmp/foo123.copy
111
112This is just a toy preload module. Don't open bugs if it does not work. Send
113patches to make it better instead.
114
115
116RELEASE TARBALLS
117================
118Release tarballs are available at https://sites.google.com/site/libnfstarballs/li
119
3be27335
AM
120
121
ee872606
RRS
122MAILING LIST
123============
124A libnfs mailing list is available at http://groups.google.com/group/libnfs
125Announcements of new versions of libnfs will be posted to this list.
3be27335 126