Ronnie Sahlberg [Thu, 31 Oct 2013 01:15:03 +0000 (18:15 -0700)]
Dont leak every single buffer we read from the socket.
Ronnie Sahlberg [Sat, 26 Oct 2013 20:16:09 +0000 (13:16 -0700)]
Add an async helper function to connect an rpc context to a program/version
Ronnie Sahlberg [Sat, 26 Oct 2013 14:44:29 +0000 (07:44 -0700)]
Add a mechanism to control what the next XID value on a session will be.
This makes it possible for multiple processes/contexts to use the same
target and (with some synchronization) avoid XID collissions across processes/contexts.
Ronnie Sahlberg [Fri, 25 Oct 2013 23:16:43 +0000 (16:16 -0700)]
Mix in the pid in the top 16 bits for the initial xid.
This helps for users which rapidly fork a lot of processes that then
immediately create a new context (I am looking at you dbench)
to awoid having lots of processes starting and using overlapping xid values.
Ronnie Sahlberg [Thu, 24 Oct 2013 02:18:41 +0000 (19:18 -0700)]
Don't clamp write3 max to 32k
We use our own XDR and RPC layer nowadays and do not have
any external dependencies to XDR or RPC.
As such we no longer need to clamp the write size to max 32kb
since we never link to the system rpc/xdr libraries.
(and thus dont have to clamp in case the system library is broken for
pdu's > 32k)
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
Volker Lendecke [Wed, 23 Oct 2013 19:43:24 +0000 (21:43 +0200)]
Fix typos
Ronnie Sahlberg [Tue, 22 Oct 2013 02:15:11 +0000 (19:15 -0700)]
Make xid be a uint32_t and not either unsigned long or unsigned int
Ronnie Sahlberg [Sun, 20 Oct 2013 23:31:32 +0000 (16:31 -0700)]
New version 1.7
- Allow nested eventloops so that a sync function can be called from a callback.
- Fix a bug in unmarshalling a uint64.
- Add PATHCONF support.
- WIN32/64 updates
- AROS updates
Ronnie Sahlberg [Sun, 20 Oct 2013 20:16:45 +0000 (13:16 -0700)]
Reset the receive buffer processing the received PDU.
This allows us to have recursive eventloops and do synchronous
rpc calls from a callback.
Ronnie Sahlberg [Sun, 20 Oct 2013 19:41:56 +0000 (12:41 -0700)]
Make sure the the value is unsigned before we OR it into the uint64_t
or else the sign might be extended.
Ronnie Sahlberg [Sun, 20 Oct 2013 17:07:19 +0000 (10:07 -0700)]
Add support for NFS/PATHCONF
Ronnie Sahlberg [Wed, 10 Jul 2013 18:39:05 +0000 (11:39 -0700)]
Merge pull request #36 from Memphiz/win32fix2
[win32] - fix missing preprocessor define for using 32bit time_t in
Memphiz [Wed, 10 Jul 2013 17:53:54 +0000 (19:53 +0200)]
[win32] - fix missing preprocessor define for using 32bit time_t in
release target of vs project (fixes crashing with xbmc)
Ronnie Sahlberg [Sat, 8 Jun 2013 20:06:17 +0000 (13:06 -0700)]
AROS: Add an install target to the makefile
Copy libnfs.a to GCC:lib and the header files to
INCLUDE:nfsc
Ronnie Sahlberg [Fri, 31 May 2013 00:59:24 +0000 (17:59 -0700)]
Merge branch 'master' of github.com:sahlberg/libnfs
Ronnie Sahlberg [Fri, 31 May 2013 00:58:29 +0000 (17:58 -0700)]
On Windows, use 65534/65534 instead of 65535/65535 for the default uid/gid
Ronnie Sahlberg [Thu, 30 May 2013 02:28:27 +0000 (19:28 -0700)]
Merge pull request #34 from Memphiz/win32fix2
Win32fix2
Memphiz [Wed, 29 May 2013 09:05:54 +0000 (11:05 +0200)]
[win32] - add projects for examples to the solution and make them compile (all compile but nfsclient-bcast)
Memphiz [Wed, 29 May 2013 08:27:31 +0000 (10:27 +0200)]
[win32] - include time.h through win32_compat.h for getting rid of undefined symbol warnings
Memphiz [Wed, 29 May 2013 08:26:55 +0000 (10:26 +0200)]
[cosmetics] - removed trailing semicolon
Memphiz [Wed, 29 May 2013 08:26:28 +0000 (10:26 +0200)]
[win32] - fix visual studio project for allowing compilation for windows
Ronnie Sahlberg [Wed, 29 May 2013 05:49:19 +0000 (22:49 -0700)]
More AROS fixes. AROS compiles and works again.
Ronnie Sahlberg [Wed, 29 May 2013 05:41:54 +0000 (22:41 -0700)]
Aros fixes
Ronnie Sahlberg [Wed, 29 May 2013 05:13:08 +0000 (22:13 -0700)]
AROS fixes
Ronnie Sahlberg [Wed, 29 May 2013 04:25:08 +0000 (21:25 -0700)]
Add configure test for arpa/inet.h
Ronnie Sahlberg [Wed, 29 May 2013 04:20:00 +0000 (21:20 -0700)]
Include ifdef cleanup
Ronnie Sahlberg [Wed, 29 May 2013 01:08:02 +0000 (18:08 -0700)]
Configure check for sys/time.h
Ronnie Sahlberg [Wed, 29 May 2013 00:54:12 +0000 (17:54 -0700)]
Some more configure checks for headers
Ronnie Sahlberg [Wed, 29 May 2013 00:43:47 +0000 (17:43 -0700)]
Add configure checks for sys/socket.h
Ronnie Sahlberg [Wed, 29 May 2013 00:38:37 +0000 (17:38 -0700)]
Add configure checks for whether netinet/in.h is available or not
Ronnie Sahlberg [Wed, 29 May 2013 00:22:28 +0000 (17:22 -0700)]
Try making the initial port used a little more random
Ronnie Sahlberg [Tue, 28 May 2013 23:15:16 +0000 (16:15 -0700)]
WIN32 fixes
Ronnie Sahlberg [Tue, 28 May 2013 04:50:24 +0000 (21:50 -0700)]
READE update the location of the tarballs
Ronnie Sahlberg [Tue, 28 May 2013 04:35:26 +0000 (21:35 -0700)]
New version 1.6
Add AROS/Amiga support
Chose initial XID value better to reduce probability for collissions
Fix bug in the initial default credentials and use getgid() instead of -1
Ronnie Sahlberg [Sat, 25 May 2013 13:24:15 +0000 (06:24 -0700)]
On unix systems, when creating the default authentication token
use getgid() as the group instead of -1.
Recent linux knfsd do not allow grp==-1
On windows there are no uid/gids in the traditional sense so there I still specify a default credential of uid==gid==-1 :
rpc->auth = authunix_create("LibNFS", 65535, 65535, 0, NULL);
This is I think the sanest/safest thing to do since most servers will have
special handing of -1 meaning 'nobody' or similar.
This should work on many/most servers and give the user the minimum available
access allowed for 'nobody'.
I think on windows (or AROS for that matter) applications will probably have
to invoke and set the credentials themself explicitely.
Those apps probably, unfortunately, also need to have a configuration
setting to select which uid/gid to use when talking to the server.
(or they could hardcode it)
rpc_set_auth(rpc, libnfs_authunix_create("hostname", uid, gid, 0, NULL))
should do the trick if they call immediately after creating the rpc/nfs context.
But dont set it to 0,0 root/root for uid/gid.
First of all, most servers have root-squash so they will re-map this uid/gid
to 'nobody' internally.
But, if the user uses a server that does not do root-squash, then setting this to 0,0 would mean that your app now access the nfs share as root which is probably not what you want.
Ronnie Sahlberg [Wed, 17 Apr 2013 01:28:50 +0000 (18:28 -0700)]
Change nfs-cp.c example to use lseek+read/write instead of pread/pwrite since some platforms (==amiga) dont have pread/pwrite
Build nfs-ls and nfs-cp for amiga/aros
Ronnie Sahlberg [Tue, 16 Apr 2013 04:41:38 +0000 (21:41 -0700)]
Add two more examples: nfs-ls and nfs-cp
Ronnie Sahlberg [Tue, 16 Apr 2013 04:37:03 +0000 (21:37 -0700)]
Fix a bug when returning the filehandle in creat() and return the filehandle
of the object we created and not the filehandle of the parent directory
Ronnie Sahlberg [Tue, 16 Apr 2013 03:42:44 +0000 (20:42 -0700)]
Allow nfs_lookuppath_async to have path[0]=='\0' this happens when we
want to create an object straight under the root directory of what we
mounted.
As always, the actual object to create is then a string starting after the \0 byte
Ronnie Sahlberg [Sun, 14 Apr 2013 17:46:08 +0000 (10:46 -0700)]
remove obsolete comment
Ronnie Sahlberg [Sun, 14 Apr 2013 17:44:14 +0000 (10:44 -0700)]
Dont include config.h from libnfs-zdr.h
Ronnie Sahlberg [Sun, 14 Apr 2013 17:34:33 +0000 (10:34 -0700)]
we can always include netinet/in.h all platforms have it
Ronnie Sahlberg [Sun, 14 Apr 2013 17:32:01 +0000 (10:32 -0700)]
more include cleanups it starts to look almost decent now
Ronnie Sahlberg [Sun, 14 Apr 2013 17:11:48 +0000 (10:11 -0700)]
more header include cleanups
Ronnie Sahlberg [Sun, 14 Apr 2013 16:02:23 +0000 (09:02 -0700)]
WIN32: More ifdef cleanups
Ronnie Sahlberg [Sun, 14 Apr 2013 15:50:38 +0000 (08:50 -0700)]
WIN32: get rid of some ifdefs
Ronnie Sahlberg [Sun, 14 Apr 2013 15:43:59 +0000 (08:43 -0700)]
SOCKET: Use recv/send for all socket io on all platforms
instead of only on windows and aros and read/write on the others
Ronnie Sahlberg [Sat, 13 Apr 2013 15:13:31 +0000 (08:13 -0700)]
AROS: we dont need to protect aros_compat.c with an ifdef
Ronnie Sahlberg [Sat, 13 Apr 2013 15:01:05 +0000 (08:01 -0700)]
AROS: Add an example for using the SYNC API to AROS
While the ASYNC API is probably always preferable, the SYNC API is easier
to use. The SYNC API is probably what most users want.
Ronnie Sahlberg [Sat, 13 Apr 2013 14:40:46 +0000 (07:40 -0700)]
AROS: add inet_pton emulation and make sure we use recv/send and not read/write
Ronnie Sahlberg [Sat, 13 Apr 2013 11:20:57 +0000 (04:20 -0700)]
AROS: Add copyright boilerplate for aros_compat.c
Ronnie Sahlberg [Sat, 13 Apr 2013 11:13:05 +0000 (04:13 -0700)]
AROS: implement their weird errno handling
Ronnie Sahlberg [Sat, 13 Apr 2013 10:49:15 +0000 (03:49 -0700)]
AROS: Update README and list AROS as supported and provide build instruction for it
Ronnie Sahlberg [Sat, 13 Apr 2013 10:39:12 +0000 (03:39 -0700)]
AROS: We have to provide the correct nfds to WaitSelect
When copying the poll() compatibility function from win32 to AROS
we need to update it to set nfds correctly.
While win32 does not care what nfds is set to and works even if nfds is always
0, other platforms, like AROS do care.
Ronnie Sahlberg [Sat, 13 Apr 2013 02:13:11 +0000 (19:13 -0700)]
SOCKADDR_STORAGE: it is called HAVE_SOCKADDR_LEN not HAVE_SA_LEN
Ronnie Sahlberg [Sat, 13 Apr 2013 01:12:56 +0000 (18:12 -0700)]
AROS: we need htons to convert socket port to network order
Ronnie Sahlberg [Sat, 13 Apr 2013 00:38:44 +0000 (17:38 -0700)]
AROS more stuff. The listservers example now compiles and links
it sends packets to the host but something is still not working.
Ronnie Sahlberg [Fri, 12 Apr 2013 13:12:58 +0000 (06:12 -0700)]
AROS: it is called IoctlSocket/CloseSocket and WaitSelect on AROS.
Additionally add a aros_init_socket() function to open the bsd socket library and set up networking
Ronnie Sahlberg [Fri, 12 Apr 2013 01:37:05 +0000 (18:37 -0700)]
AROS: getting closer to link. only a handful of missing symbols now
Ronnie Sahlberg [Thu, 11 Apr 2013 03:28:40 +0000 (20:28 -0700)]
Initial AROS support.
The test app doesnt link yet since we are missing a bunch of symbols
but it is a start
Ronnie Sahlberg [Tue, 26 Feb 2013 14:40:23 +0000 (06:40 -0800)]
Merge pull request #32 from hulu/master
[PATCH] randomize the initial rpc xid to avoid reply cache collision
Steve Cai [Tue, 26 Feb 2013 00:40:29 +0000 (16:40 -0800)]
randomize the initial rpc xid to avoid reply cache collision
Ronnie Sahlberg [Fri, 4 Jan 2013 02:13:05 +0000 (18:13 -0800)]
README: We dont need tirpc for cygwin builds anymore
Ronnie Sahlberg [Wed, 5 Dec 2012 02:55:32 +0000 (18:55 -0800)]
Remove all remaining references to RPC
Ronnie Sahlberg [Wed, 5 Dec 2012 02:43:52 +0000 (18:43 -0800)]
Merge pull request #31 from clandmeter/master
Remove rpcgen check
Carlo Landmeter [Tue, 4 Dec 2012 23:43:21 +0000 (00:43 +0100)]
Remove rpcgen check as it is not needed anymore
Ronnie Sahlberg [Mon, 3 Dec 2012 14:38:18 +0000 (06:38 -0800)]
New version 1.5
- Switch to our own builtin RPC/XDR replacement
- Android support
Ronnie Sahlberg [Thu, 29 Nov 2012 04:21:53 +0000 (20:21 -0800)]
Rearrange the header files.
Move the headers we install to ./include/nfsc
and start including nfsc/libnfs-zdr.h from all the other header files.
Ronnie Sahlberg [Thu, 29 Nov 2012 03:26:54 +0000 (19:26 -0800)]
Add ifndef's to protect libnfs-raw.h from being included multiple times
Ronnie Sahlberg [Thu, 29 Nov 2012 03:19:09 +0000 (19:19 -0800)]
Merge pull request #30 from theuni/android
[droid] Support building for android
Cory Fields [Wed, 28 Nov 2012 17:04:05 +0000 (12:04 -0500)]
[droid] Support building for android
These are the changes necessary to build for android. Working status is yet
untested.
Ronnie Sahlberg [Wed, 28 Nov 2012 14:36:06 +0000 (06:36 -0800)]
Install libnfs-zdr.h
Ronnie Sahlberg [Wed, 28 Nov 2012 02:22:27 +0000 (18:22 -0800)]
Merge branch 'zdr'
Manually fixyp some merge conflicts in :
lib/init.c
lib/pdu.c
lib/socket.c
nfs/Makefile.am
nfs/nfs.x
nlm/Makefile.am
Ronnie Sahlberg [Tue, 27 Nov 2012 03:42:10 +0000 (19:42 -0800)]
Implement 'rejected_reply' and switch to RFC5531 definitions
Switch to using fields and names from RFC5531. that is the standard
for RPC.
Ronnie Sahlberg [Sun, 25 Nov 2012 15:57:40 +0000 (07:57 -0800)]
New version 1.4
- Add trackig of freed context and assert on using a context after it has been
freed.
- Windows x64 support and fixes.
- Switch to using our own version of xdr_int64() since the one in libtirpc
crashes on some platforms.
- Fix memory leak in an error path for addrinfo.
- Fix bug dereferencing a null pointer in the mount callback on error.
Ronnie Sahlberg [Sat, 24 Nov 2012 17:01:00 +0000 (09:01 -0800)]
ZDR_ARRAYS: The sub-unmarshaller returns TRUE FALSE if there was an error, not TRUE
Ronnie Sahlberg [Sat, 24 Nov 2012 16:26:26 +0000 (08:26 -0800)]
We must link the examples with popt
Ronnie Sahlberg [Sat, 24 Nov 2012 16:18:54 +0000 (08:18 -0800)]
Add an assert to track if we try to use an rpc_context after it has been destroyed
Ronnie Sahlberg [Sun, 18 Nov 2012 06:06:19 +0000 (22:06 -0800)]
NFSCLIENT-SYNC: remove some debug output
Ronnie Sahlberg [Fri, 16 Nov 2012 02:38:54 +0000 (13:38 +1100)]
Dont leak addrinfo in error path
Evgeny Grin [Fri, 9 Nov 2012 15:40:19 +0000 (19:40 +0400)]
[Win32] Add windows x64 builds, use some win defines from header if available
Ronnie Sahlberg [Sun, 4 Nov 2012 23:55:05 +0000 (15:55 -0800)]
MOUNT: when processing the mount response, check status before dereferencing data pointer
If status is non-zero in the mount callback, then the datapointer might be NULL
so we should not dereference it into an exports pointer before we have checked the status.
This would otherwise cause crashes.
warped-rudi [Tue, 18 Sep 2012 06:35:11 +0000 (08:35 +0200)]
Added ignore pattern for Windows intermediate files
Rudi Ihle [Thu, 14 Jun 2012 07:23:25 +0000 (09:23 +0200)]
Fixed errno processing for connect() on Windows.
Rudi Ihle [Thu, 14 Jun 2012 07:21:43 +0000 (09:21 +0200)]
Modified mechanism to assign privileged ports and enable it for Windows as well
Ronnie Sahlberg [Thu, 22 Nov 2012 01:10:05 +0000 (17:10 -0800)]
Add an assert to track if we try to use an rpc_context after it has been destroyed
Ronnie Sahlberg [Sat, 17 Nov 2012 18:01:01 +0000 (05:01 +1100)]
Change the sync example to perform a 'ls -l' on an NFS URL
Ronnie Sahlberg [Fri, 16 Nov 2012 02:58:04 +0000 (13:58 +1100)]
Configure: When configuring examples, make sure we have popt-devel
Add a check for configure that we do have popt-devel available
if --enable-examples is specified.
Ronnie Sahlberg [Thu, 22 Nov 2012 00:45:03 +0000 (16:45 -0800)]
Merge branch 'master' of github.com:sahlberg/libnfs
Ronnie Sahlberg [Wed, 21 Nov 2012 03:51:10 +0000 (19:51 -0800)]
Merge pull request #27 from Karlson2k/Win32x64
Add windows x64 builds, use some win defines from header if available
Ronnie Sahlberg [Sun, 18 Nov 2012 06:06:19 +0000 (22:06 -0800)]
NFSCLIENT-SYNC: remove some debug output
Ronnie Sahlberg [Sat, 17 Nov 2012 18:01:34 +0000 (05:01 +1100)]
Use our own xdr_int64() for all 64 bit types.
Oh dear. It is really difficult for rpc and tirpc implementors to get
64 bit types right. Sigh.
I am tired of fighting broken ti-rpc libraries under linux and others
that do random corruption on xdr_u_quad_t and friends
so lets just override that shit and replace it with our own, non-broken,
implementation of a 64 bit xdr accessor.
Ronnie Sahlberg [Sat, 17 Nov 2012 18:01:01 +0000 (05:01 +1100)]
Change the sync example to perform a 'ls -l' on an NFS URL
Ronnie Sahlberg [Fri, 16 Nov 2012 02:58:04 +0000 (13:58 +1100)]
Configure: When configuring examples, make sure we have popt-devel
Add a check for configure that we do have popt-devel available
if --enable-examples is specified.
Ronnie Sahlberg [Fri, 16 Nov 2012 02:38:54 +0000 (13:38 +1100)]
Dont leak addrinfo in error path
Evgeny Grin [Fri, 9 Nov 2012 15:40:19 +0000 (19:40 +0400)]
[Win32] Add windows x64 builds, use some win defines from header if available
Ronnie Sahlberg [Sun, 4 Nov 2012 23:55:05 +0000 (15:55 -0800)]
MOUNT: when processing the mount response, check status before dereferencing data pointer
If status is non-zero in the mount callback, then the datapointer might be NULL
so we should not dereference it into an exports pointer before we have checked the status.
This would otherwise cause crashes.
Ronnie Sahlberg [Wed, 19 Sep 2012 00:54:22 +0000 (17:54 -0700)]
Merge pull request #23 from warped-rudi/master-updates
Merged. Thanks!
warped-rudi [Tue, 18 Sep 2012 06:35:11 +0000 (08:35 +0200)]
Added ignore pattern for Windows intermediate files
Rudi Ihle [Thu, 14 Jun 2012 07:23:25 +0000 (09:23 +0200)]
Fixed errno processing for connect() on Windows.