NTIRPC - Transport-independent RPC (TI-RPC)

To use this in a CMake-based project, copy cmake/modules/FindNTIRPC.cmake into
your project, and add:

find_package(NTIRPC [<version>] [REQUIRED])

where <version> is the minimum version needed (e.g. 1.3.0) and REQUIRED is
added if ntirpc is not optional.




LIBTIRPC 0.1 FROM SUN'S TIRPCSRC 2.3 29 Aug 1994

This package contains SunLib's implementation of transport-independent
RPC (TI-RPC) documentation.  This library forms a piece of the base of Open Network
Computing (ONC), and is derived directly from the Solaris 2.3 source.

TI-RPC is an enhanced version of TS-RPC that requires the UNIX System V
Transport Layer Interface (TLI) or an equivalent X/Open Transport Interface
(XTI).  TI-RPC is on-the-wire compatible with the TS-RPC, which is supported
by almost 70 vendors on all major operating systems.  TS-RPC source code
(RPCSRC 4.0) remains available from several internet sites.

This release was a native source release, compatible for
building on Solaris 2.3. It had been ported from FreeBSD 5.2.1 to GNU/Linux 
in 2004.

Applications linked with this release's librpc must link with the United
States domestic version of libcrypt in order to resolve the cbc_crypt() and
ecb_crypt() functions.  These routines are used with Secure RPC however all
RPC programs that link with this release's librpc will need to link with the
domestic libcrypt.  

WHAT'S NEW IN THIS RELEASE: TIRPCSRC 2.3 FROM SUN

The previous release was TIRPCSRC 2.0.

1.      This release is based on Solaris 2.3.  The previous release was
	based on Solaris 2.0.  This release contains a siginificant number of
	bug fixes and other enhancements over TIRPCSRC 2.0.

2.      The RPC library is thread safe for all client-side interfaces
	(clnt_create, clnt_call, etc.).  The server-side interfaces
	(svc_create, svc_run, etc.) are not thread safe in this release. The
	server-side interfaces will be made thread safe in the next release of
	TIRPCSRC.  Please see the manual pages for details about which
	interfaces are thread safe.

3.      As part of the work to make the RPC library thread-safe, rpcgen has
	been enhanced to generate thread-safe RPC stubs (the -M option).  Note
	that this modifies the call-signature for the stub functions; the
	procedure calling the RPC stub must now pass to the stub a pointer to
	an allocated structure where results will be placed by the stub.  See
	the rpcgen manual page and the rpcgen Programming Guide for details.

What's New in ntirpc

Non-cosmetic changes introduced in the ntirpc library include

1. Bi-directional operation
2. Full-duplex operation on the TCP (vc) transport
3. Thread-safe operating modes
3.1 new locking primitives and lock callouts (interface change)
3.2 stateless send/recv on the TCP transport (interface change)
4. Flexible server integration support
5. Event channels (remove static arrays of xprt handles, new EPOLL/KEVENT
   integration)
