summaryrefslogtreecommitdiffstats
path: root/support/nsm
Commit message (Collapse)AuthorAgeFilesLines
* libnsm.a: Add RPC construction helper functionsChuck Lever2010-01-152-1/+535
| | | | | | | | | | | | | | | | | | | To manage concurrency, both statd and sm-notify construct raw RPC requests in socket buffers, and use a minimal request scheduler to send these requests and manage replies. Both statd and sm-notify open code the RPC request construction. Introduce helper functions that can construct and send raw NSMPROC_NOTIFY, NLM downcalls, and portmapper calls over a datagram socket, and receive and parse their replies. Support for IPv6 and RPCB_GETADDR is featured. This code (and the IPv6 support it introduces) can now be shared by statd and sm-notify, eliminating code and bug duplication. This implementation is based on what's in utils/statd/rmtcall.c now, but is wrapped up in a nice API and includes extra error checking. Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
* nfs-utils: make private cookie to hex conversion a library routineJeff Layton2010-01-121-10/+34
| | | | | Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* libnsm.a: Introduce common routines to handle persistent storageChuck Lever2010-01-122-1/+820
| | | | | | | | | | | | | | | | | | | | | | | | | | | | rpc.statd and sm-notify access the same set of files under /var/lib/nfs/statd, but both have their own code base to handle this. They should share this code. In addition, the on-disk format used by statd and friends is considered a formal interface, so this new code will codify the API and provide documentation for it. The shared code handles switching from the default parent statd directory, reducing privileges at start-up, and managing the NSM state files, in addition to handling normal operations on the monitored host and notification lists on disk. The new code is simply a copy of the same logic that was used in rpc.statd and sm-notify, but wrapped in a nice API. There should be minimal behavioral and no on-disk format changes with the new libnsm.a code. The new code is more careful to check for bad corner cases. Occassionally this code may not allow an operation that was permitted in the past, but hopefully the error reporting has improved enough that it should be easy to track down any problems. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* libnsm.a: Move the sm_inter XDR pieces to libnsm.aChuck Lever2009-12-232-0/+176
Clean up: Move the .x file and the generated C source for NSM to libnsm.a, echoing the architecture of mountd and exportfs. This makes the NSM protocol definitions, data types, and XDR routines available to be shared across nfs-utils. This simplifies the addition of other NSM-related code (for example for testing or providing clustering support), and also provides public data type definitions that can be used to make sense of the contents of statd's on-disk database. Because sim_sm_inter.x still resides in utils/statd, I've left some rpcgen build magic in utils/statd/Makefile.am. This is an internal organization change only. This patch should not affect code behavior in any way. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>