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