Libnfs with two patches, already merged to upstream
 
 
 
 
 
 
Go to file
Ronnie Sahlberg bcb4f1bd1c We need the libnfs-raw-*.h files in include/Makefile.am
or else the autotools (which I dont really understand how it works)
will not install the headers.
2014-01-28 06:35:52 -08:00
aros AROS: Add an install target to the makefile 2013-06-08 13:06:17 -07:00
examples Adjust Makefile.am's to support out-of-source builds 2014-01-08 12:36:09 +04:00
include We need the libnfs-raw-*.h files in include/Makefile.am 2014-01-28 06:35:52 -08:00
lib Add support for chdir and getcwd 2014-01-27 20:54:59 -08:00
mount New version : 1.9.0 2014-01-27 20:47:24 -08:00
nfs New version : 1.9.0 2014-01-27 20:47:24 -08:00
nlm New version : 1.9.0 2014-01-27 20:47:24 -08:00
nsm New version : 1.9.0 2014-01-27 20:47:24 -08:00
packaging/RPM New version : 1.9.0 2014-01-27 20:47:24 -08:00
portmap New version : 1.9.0 2014-01-27 20:47:24 -08:00
rquota New version : 1.9.0 2014-01-27 20:47:24 -08:00
win32 [win32] - add new missing files to vs project 2014-01-13 19:52:06 +01:00
.gitignore Added ignore pattern for Windows intermediate files 2012-09-18 08:35:11 +02:00
COPYING update the licence text and proide an explicit copy of LGPL2.1 and GPL3 2012-03-04 17:13:08 +11:00
LICENCE-GPL-3.txt update the licence text and proide an explicit copy of LGPL2.1 and GPL3 2012-03-04 17:13:08 +11:00
LICENCE-LGPL-2.1.txt update the licence text and proide an explicit copy of LGPL2.1 and GPL3 2012-03-04 17:13:08 +11:00
Makefile.am New version : 1.9.0 2014-01-27 20:47:24 -08:00
README Add support for chdir and getcwd 2014-01-27 20:54:59 -08:00
README.win32.txt [win32] - completed win32 port 2011-09-12 19:53:33 +02:00
bootstrap Rewrite build system using automake 2011-06-29 14:15:16 -04:00
configure.ac New version : 1.9.0 2014-01-27 20:47:24 -08:00
libnfs.pc.in libnfs.pc.in: fix pkg-config --cflags 2013-12-17 12:06:29 +01:00
win32build.bat Try making the initial port used a little more random 2013-05-28 17:22:28 -07:00

README

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
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 precise control of the RPC issued.

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() functions in include/libnfs.h.
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() functions in include/libnfs.h.
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

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 session establish
                     before failing setting up the tcp connection to the
                     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>


PLATFORM support
=================
This is a truly multiplatform library.

Linux:  - tested with Ubuntu 10.04 - should work with others as well
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
FreeBSD:- tested with 8.2
Solaris
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



MAILING LIST
============
A libnfs mailing list is available at http://groups.google.com/group/libnfs
Announcements of new versions of libnfs will be posted to this list.