Commit | Line | Data |
---|---|---|
84004dbf RS |
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 | |
f7b81274 RS |
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. | |
2461e211 | 37 | |
22e73f32 RS |
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 | ||
c6bd90a2 RS |
50 | FUSE |
51 | ==== | |
52 | A simple FUSE filesystem built on libnfs can be found in | |
53 | examples/fuse_nfs.c | |
54 | ||
55 | Compile using : gcc fuse_nfs.c -o fuse_nfs -lfuse -lnfs | |
56 | Mount using : sudo ./fuse_nfs -n nfs://<server>/<export> -m <mountpoint> | |
57 | ||
22e73f32 | 58 | |
9f88cb06 | 59 | PLATFORM support |
2461e211 | 60 | ================= |
e267bb12 | 61 | This is a truly multiplatform library. |
2461e211 M |
62 | |
63 | Linux: - tested with Ubuntu 10.04 - should work with others aswell | |
c03a1e82 | 64 | Cygwin: - tested under 64bit win2k8. |
2461e211 M |
65 | MacOSX: - tested with SDK 10.4 (under Snow Leopard) - should also work with later SDKs and 64Bit |
66 | iOS: - tested with iOS SDK 4.2 - running on iOS 4.3.x | |
9f88cb06 | 67 | FreeBSD:- tested with 8.2 |
e267bb12 | 68 | Solaris |
fcc42bfe | 69 | Windows:- tested on Windows 7 64 and Windows XP 32 using Visual Studio 10 (see README.win32.txt for build instructions) |
8afcdc95 | 70 | Android: |
e267bb12 | 71 | AROS: - Build with 'make -f aros/Makefile.AROS' |
c03a1e82 | 72 | |
6494f8fc RS |
73 | |
74 | RELEASE TARBALLS | |
75 | ================ | |
e083c2a0 | 76 | Release tarballs are available at https://sites.google.com/site/libnfstarballs/li |
6494f8fc RS |
77 | |
78 | ||
79 | ||
80 | MAILINGLIST | |
81 | =========== | |
82 | A libnfs mailinglist is available at http://groups.google.com/group/libnfs | |
83 | Announcements of new versions of libnfs will be posted to this list. | |
84 |