sjback / libnfs Goto Github PK
View Code? Open in Web Editor NEWThis project forked from sahlberg/libnfs
NFS client library
License: Other
This project forked from sahlberg/libnfs
NFS client library
License: Other
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' LD_PRELOAD ========== examples/ld_nfs.c contains a LD_PRELOADable module that can be used to make several standard utilities nfs aware. It is still very incomplete but can be used for basic things such as cat and cp. Patches to add more coverage is welcome. Compile with : gcc -fPIC -shared -o ld_nfs.so examples/ld_nfs.c -ldl -lnfs Then try things like LD_NFS_DEBUG=9 LD_PRELOAD=./ld_nfs.so cat nfs://127.0.0.1/data/tmp/foo123 LD_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 This is just a toy preload module. Don't open bugs if it does not work. Send patches to make it better instead. 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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.