libnfs/README

100 lines
3.6 KiB
Plaintext
Raw Normal View History

2011-02-06 07:45:09 +03:00
LIBNFS is a client library for accessing NFS shares over a network.
LIBNFS offers three different APIs, for different use :
1, RAW : A fully async low level rpc library for nfs protocols
2011-02-06 07:45:09 +03:00
This API is described in include/libnfs-raw.h
it offers a fully async interface to raw XDR encoded blobs.
This api provides very flexible and precice control of the RPC issued.
2011-02-06 07:45:09 +03:00
examples/nfsclient-raw.c provides examples on how to use the raw API
2, NFS ASYNC : A fully asynchronous library for high level vfs functions
This API is described by the *_async() fucntions in include/libnfs.h.
2011-02-06 07:45:09 +03:00
This API provides a fully async access to posix vfs like functions such as
stat(), read(), ...
examples/nfsclient-async.c provides examples on how to use this API
3, NFS SYNC : A synchronous library for high level vfs functions
This API is described by the *_sync() fucntions in include/libnfs.h.
2011-02-06 07:45:09 +03:00
This API provides access to posix vfs like functions such as
stat(), read(), ...
examples/nfsclient-sync.c provides examples on how to use this API
2013-12-26 04:27:10 +04:00
URL-FORMAT:
===========
Libnfs uses RFC2224 style URLs extended with libnfs specific url arguments some minor extensions.
The basic syntax of these URLs is :
nfs://<server|ipv4>/path[?arg=val[&arg=val]*]
Arguments supported by libnfs are :
tcp-syncnt=<int> : Number of SYNs to send during the seccion establish
before failing settin up the tcp connection to the
2013-12-26 04:27:10 +04:00
server.
uid=<int> : UID value to use when talking to the server.
default it 65534 on Windows and getuid() on unixen.
gid=<int> : GID value to use when talking to the server.
default it 65534 on Windows and getgid() on unixen.
ROOT vs NON-ROOT
================
When running as root, libnfs tries to allocate a system port for its connection
to the nfs server. When running as non-root it will use a normal
ephemeral port.
Many NFS servers default to a mode where they do not allow non-system
ports from connecting.
These servers require you use the "insecure" export option in /etc/exports
in order to allow libnfs clients to be able to connect.
Some versions of Linux support special capabilities that can be assigned to
programs to allow non-root users to bind to system ports.
This is set up by running
sudo setcap 'cap_net_bind_service=+ep' /path/to/executable
When libnfs is linked against an executable with this special capability
assigned to it, libnfs may be able to use system ports even when executing
under the privilege of a non-root user account.
This is highly non-portable so IF this works on your linux system, count
yourself lucky.
FUSE
====
A simple FUSE filesystem built on libnfs can be found in
examples/fuse_nfs.c
Compile using : gcc fuse_nfs.c -o fuse_nfs -lfuse -lnfs
Mount using : sudo ./fuse_nfs -n nfs://<server>/<export> -m <mountpoint>
2011-07-18 05:49:21 +04:00
PLATFORM support
=================
This is a truly multiplatform library.
Linux: - tested with Ubuntu 10.04 - should work with others aswell
Cygwin: - tested under 64bit win2k8.
MacOSX: - tested with SDK 10.4 (under Snow Leopard) - should also work with later SDKs and 64Bit
iOS: - tested with iOS SDK 4.2 - running on iOS 4.3.x
2011-07-18 05:49:21 +04:00
FreeBSD:- tested with 8.2
Solaris
2011-09-12 21:22:00 +04:00
Windows:- tested on Windows 7 64 and Windows XP 32 using Visual Studio 10 (see README.win32.txt for build instructions)
Android:
AROS: - Build with 'make -f aros/Makefile.AROS'
RELEASE TARBALLS
================
Release tarballs are available at https://sites.google.com/site/libnfstarballs/li
MAILINGLIST
===========
A libnfs mailinglist is available at http://groups.google.com/group/libnfs
Announcements of new versions of libnfs will be posted to this list.