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