xref: /netbsd/lib/libc/rpc/README (revision 6550d01e)
1#	$NetBSD: README,v 1.2 1998/01/09 04:11:52 perry Exp $
2
3RPCSRC 4.0 7/11/89
4
5This distribution contains Sun Microsystem's implementation of the
6RPC and XDR protocols and is compatible with 4.2BSD and 4.3BSD.  Also
7included is complete documentation, utilities, RPC service
8specification files, and demonstration services in the format used by
9the RPC protocol compiler (rpcgen).  See WHAT'S NEW below for
10details.
11
12NOTE ABOUT SECURE RPC:
13
14This release of RPCSRC contains most of the code needed to implement
15Secure RPC (see "DES Authentication" in the RPC Protocol Specification,
16doc/rpc.rfc.ms).  Due to legal considerations, we are unable to
17distribute an implementation of DES, the Data Encryption Standard, which
18Secure RPC requires.  For this reason, all of the files, documentation, and
19programs associated with Secure RPC have been placed into a separate
20directory, secure_rpc.  The RPC library contained in the main body of this
21release *DOES NOT* support Secure RPC.  See secure_rpc/README for more
22details.  (A DES library was posted in Volume 18 of comp.sources.unix.)
23
24If you wish to report bugs found in this release, send mail to:
25
26Portable ONC/NFS
27Sun Microsystems, Inc
28MS 12-33
292550 Garcia Avenue
30Mountain View, CA  94043
31
32or send Email to nfsnet@sun.com (the Internet) or sun!nfsnet (Usenet).
33
34ROADMAP
35
36The directory hierarchy is as follows:
37
38    demo/       Various demonstration services
39    demo/dir        Remote directory lister
40    demo/msg        Remote console message delivery service
41    demo/sort       Remote sort service
42
43    doc/        Documentation for RPC, XDR and NFS in "-ms" format.
44
45    etc/        Utilities (rpcinfo and portmap).  portmap must be
46                started by root before any other RPC network services are
47                used.  SEE BELOW FOR BUGFIX TO 4.3BSD COMPILER.
48
49    man/        Manual pages for RPC library, rpcgen, and utilities.
50
51    rpc/        The RPC and XDR library.  SEE BELOW
52                FOR BUGFIX TO 4.2BSD COMPILER.
53
54    rpcgen/     The RPC Language compiler (for .x files)
55
56    rpcsvc/     Service definition files for various services and the
57                server and client code for the Remote Status service.
58
59    secure_rpc/ The files in this directory are used to build a version of
60                the RPC library with DES Authentication.  See the README
61                file in that directory for more details.
62
63BUILD INSTRUCTIONS
64
65Makefiles can be found in all directories except for man.  The
66Makefile in the top directory will cause these others to be invoked
67(except for in the doc, man and demo directories), in turn building the
68entire release.
69
70WARNING!  THE DEFAULT INSTALLATION PROCEDURES WILL INSTALL FILES
71IN /usr/include, /usr/lib, /usr/bin and /etc.
72
73The master RPC include file, rpc/rpc.h, is used by all programs and
74routines that use RPC.  It includes other RPC and system include files
75needed by the RPC system.  PLEASE NOTE: If your system has NFS, it
76may have been based on Sun's NFS Source.  The include files installed
77by this package may duplicate include files you will find on your NFS
78system.  The RPCSRC 4.0 include files are upwardly compatible to all
79NFS Source include files as of the date of this distribution (not
80including any new definitions or declarations added by your system
81vendor).  HOWEVER: Please read the comments towards the end of
82rpc/rpc.h regarding rpc/netdb.h.  You may need to uncomment the
83inclusion of that file if the structures it defines are already
84defined by your system's include files.
85
86After making any compiler fixes that are needed (see below), at
87the top directory, type:
88
89    make install
90
91For all installations, the Makefile macro DESTDIR is prepended to the
92installation path.  It is defined to be null in the Makefiles, so
93installations are relative to root.  (You will probably need root
94privileges for installing the files under the default path.)  To
95install the files under some other tree (e.g., /usr/local), use the
96command:
97
98    make install DESTDIR=/usr/local
99
100This will place the include files in /usr/local/usr/include, the RPC
101library in /usr/local/usr/lib, rpcgen in /usr/local/usr/bin, and the
102utilities in /usr/local/etc.  You'll have to edit the Makefiles or
103install the files by hand if you want to do anything other than this
104kind of relocation of the installation tree.
105
106The RPC library will be built and installed first.  By default it is
107installed in /usr/lib as "librpclib.a".  The directory
108/usr/include/rpc will also be created, and several header files will
109be installed there.  ALL RPC SERVICES INCLUDE THESE HEADER FILES.
110
111The programs in etc/ link in routines from librpclib.a.  If you change
112where it is installed, be sure to edit etc/'s Makefile to reflect this.
113These programs are installed in /etc.  PORTMAP MUST BE RUNNING ON
114YOUR SYSTEM BEFORE YOU START ANY OTHER RPC SERVICE.
115
116rpcgen is installed in /usr/bin.  This program is required to build
117the demonstration services in demo and the rstat client and server in
118rpcsvc/.
119
120The rpcsvc/ directory will install its files in the directory
121/usr/include/rpcsvc.  The Remote Status service (rstat_svc) will be
122compiled and installed in /etc.  If you wish to make this service
123available, you should either start this service when needed or have
124it started at boot time by invoking it in your /etc/rc.local script.
125(Be sure that portmap is started first!)  Sun has modified its
126version of inetd to automatically start RPC services.  (Use "make
127LIB=" when building rstat on a Sun Workstation.)  The Remote Status
128client (rstat) will be installed in /usr/bin.  This program queries
129the rstat_svc on a remote host and prints a system status summary
130similar to the one printed by "uptime".
131
132The documentation is not built during the "make install" command.
133Typing "make" in the doc directory will cause all of the manuals to
134be formatted using nroff into a single file.  We have had a report
135that certain "troff" equivalents have trouble processing the full
136manual.  If you have trouble, try building the manuals individually
137(see the Makefile).
138
139The demonstration services in the demo directory are not built by the
140top-level "make install" command.  To build these, cd to the demo
141directory and enter "make".  The three services will be built.
142RPCGEN MUST BE INSTALLED in a path that make can find.  To run the
143services, start the portmap program as root and invoke the service
144(you probably will want to put it in the background).  rpcinfo can be
145used to check that the service succeeded in getting registered with
146portmap, and to ping the service (see rpcinfo's man page).  You can
147then use the corresponding client program to exercise the service.
148To build these services on a Sun workstation, you must prevent the
149Makefile from trying to link the RPC library (as these routines are
150already a part of Sun's libc).  Use: "make LIB=".
151
152BUGFIX FOR 4.3BSD COMPILER
153
154The use of a 'void *' declaration for one of the arguments in
155the reply_proc() procedure in etc/rpcinfo.c will trigger a bug
156in the 4.3BSD compiler.  The bug is fixed by the following change to
157the compiler file mip/manifest.h:
158
159*** manifest.h.r1.1	Thu Apr 30 13:52:25 1987
160--- manifest.h.r1.2	Mon Nov 23 18:58:17 1987
161***************
162*** 21,27 ****
163  /*
164   * Bogus type values
165   */
166! #define TNULL	PTR		/* pointer to UNDEF */
167  #define TVOID	FTN		/* function returning UNDEF (for void) */
168
169  /*
170--- 21,27 ----
171  /*
172   * Bogus type values
173   */
174! #define TNULL	INCREF(MOETY)	/* pointer to MOETY -- impossible type */
175  #define TVOID	FTN		/* function returning UNDEF (for void) */
176
177  /*
178
179If you cannot fix your compiler, change the declaration in reply_proc()
180from 'void *' to 'char *'.
181
182BUGFIX FOR 4.2BSD COMPILER
183
184Unpatched 4.2BSD compilers complain about valid C.  You can make old
185compilers happy by changing some voids to ints.  However, the fix to
186the 4.2 VAX compiler is as follows (to mip/trees.c):
187
188*** trees.c.r1.1	Mon May 11 13:47:58 1987
189--- trees.c.r1.2	Wed Jul  2 18:28:52 1986
190***************
191*** 1247,1253 ****
192  		if(o==CAST && mt1==0)return(TYPL+TYMATCH);
193  		if( mt12 & MDBI ) return( TYPL+LVAL+TYMATCH );
194  		else if( (mt1&MENU)||(mt2&MENU) ) return( LVAL+NCVT+TYPL+PTMATCH+PUN );
195! 		else if( mt12 == 0 ) break;
196  		else if( mt1 & MPTR ) return( LVAL+PTMATCH+PUN );
197  		else if( mt12 & MPTI ) return( TYPL+LVAL+TYMATCH+PUN );
198  		break;
199--- 1261,1269 ----
200  		if(o==CAST && mt1==0)return(TYPL+TYMATCH);
201  		if( mt12 & MDBI ) return( TYPL+LVAL+TYMATCH );
202  		else if( (mt1&MENU)||(mt2&MENU) ) return( LVAL+NCVT+TYPL+PTMATCH+PUN );
203! 		/* if right is TVOID and looks like a CALL, is not ok */
204! 		else if (mt2 == 0 && (p->in.right->in.op == CALL || p->in.right->in.op == UNARY CALL))
205! 			break;
206  		else if( mt1 & MPTR ) return( LVAL+PTMATCH+PUN );
207  		else if( mt12 & MPTI ) return( TYPL+LVAL+TYMATCH+PUN );
208  		break;
209
210WHAT'S NEW IN THIS RELEASE: RPCSRC 4.0
211
212The previous release was RPCSRC 3.9.  As with all previous releases,
213this release is based directly on files from Sun Microsystem's
214implementation.
215
216Upgrade from RPCSRC 3.9
217
2181)  RPCSRC 4.0 upgrades RPCSRC 3.9.  Improvements from SunOS 4.0 have
219    been integrated into this release.
220
221Secure RPC (in the secure_rpc/ directory)
222
2232)  DES Authentication routines and programs are provided.
2243)  A new manual, "Secure NFS" is provided, which describes Secure RPC
225    and Secure NFS.
2264)  Skeleton routines and manual pages are provided which describe the
227    DES encryption procedures required by Secure RPC.  HOWEVER, NO DES
228    ROUTINE IS PROVIDED.
229
230New Functionality
231
2325)  rpcinfo can now be used to de-register services from the portmapper
233    which may have terminated abnormally.
2346)  A new client, rstat, is provided which queries the rstat_svc and
235    prints a status line similar to the one displayed by "uptime".
236