1 | RPCSRC 4.0 7/11/89 |
---|
2 | |
---|
3 | This distribution contains Sun Microsystem's implementation of the |
---|
4 | RPC and XDR protocols and is compatible with 4.2BSD and 4.3BSD. Also |
---|
5 | included is complete documentation, utilities, RPC service |
---|
6 | specification files, and demonstration services in the format used by |
---|
7 | the RPC protocol compiler (rpcgen). See WHAT'S NEW below for |
---|
8 | details. |
---|
9 | |
---|
10 | NOTE ABOUT SECURE RPC: |
---|
11 | |
---|
12 | This release of RPCSRC contains most of the code needed to implement |
---|
13 | Secure RPC (see "DES Authentication" in the RPC Protocol Specification, |
---|
14 | doc/rpc.rfc.ms). Due to legal considerations, we are unable to |
---|
15 | distribute an implementation of DES, the Data Encryption Standard, which |
---|
16 | Secure RPC requires. For this reason, all of the files, documentation, and |
---|
17 | programs associated with Secure RPC have been placed into a separate |
---|
18 | directory, secure_rpc. The RPC library contained in the main body of this |
---|
19 | release *DOES NOT* support Secure RPC. See secure_rpc/README for more |
---|
20 | details. (A DES library was posted in Volume 18 of comp.sources.unix.) |
---|
21 | |
---|
22 | If you wish to report bugs found in this release, send mail to: |
---|
23 | |
---|
24 | Portable ONC/NFS |
---|
25 | Sun Microsystems, Inc |
---|
26 | MS 12-33 |
---|
27 | 2550 Garcia Avenue |
---|
28 | Mountain View, CA 94043 |
---|
29 | |
---|
30 | or send Email to nfsnet@sun.com (the Internet) or sun!nfsnet (Usenet). |
---|
31 | |
---|
32 | ROADMAP |
---|
33 | |
---|
34 | The 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 | |
---|
61 | BUILD INSTRUCTIONS |
---|
62 | |
---|
63 | Makefiles can be found in all directories except for man. The |
---|
64 | Makefile 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 |
---|
66 | entire release. |
---|
67 | |
---|
68 | WARNING! THE DEFAULT INSTALLATION PROCEDURES WILL INSTALL FILES |
---|
69 | IN /usr/include, /usr/lib, /usr/bin and /etc. |
---|
70 | |
---|
71 | The master RPC include file, rpc/rpc.h, is used by all programs and |
---|
72 | routines that use RPC. It includes other RPC and system include files |
---|
73 | needed by the RPC system. PLEASE NOTE: If your system has NFS, it |
---|
74 | may have been based on Sun's NFS Source. The include files installed |
---|
75 | by this package may duplicate include files you will find on your NFS |
---|
76 | system. The RPCSRC 4.0 include files are upwardly compatible to all |
---|
77 | NFS Source include files as of the date of this distribution (not |
---|
78 | including any new definitions or declarations added by your system |
---|
79 | vendor). HOWEVER: Please read the comments towards the end of |
---|
80 | rpc/rpc.h regarding rpc/netdb.h. You may need to uncomment the |
---|
81 | inclusion of that file if the structures it defines are already |
---|
82 | defined by your system's include files. |
---|
83 | |
---|
84 | After making any compiler fixes that are needed (see below), at |
---|
85 | the top directory, type: |
---|
86 | |
---|
87 | make install |
---|
88 | |
---|
89 | For all installations, the Makefile macro DESTDIR is prepended to the |
---|
90 | installation path. It is defined to be null in the Makefiles, so |
---|
91 | installations are relative to root. (You will probably need root |
---|
92 | privileges for installing the files under the default path.) To |
---|
93 | install the files under some other tree (e.g., /usr/local), use the |
---|
94 | command: |
---|
95 | |
---|
96 | make install DESTDIR=/usr/local |
---|
97 | |
---|
98 | This will place the include files in /usr/local/usr/include, the RPC |
---|
99 | library in /usr/local/usr/lib, rpcgen in /usr/local/usr/bin, and the |
---|
100 | utilities in /usr/local/etc. You'll have to edit the Makefiles or |
---|
101 | install the files by hand if you want to do anything other than this |
---|
102 | kind of relocation of the installation tree. |
---|
103 | |
---|
104 | The RPC library will be built and installed first. By default it is |
---|
105 | installed in /usr/lib as "librpclib.a". The directory |
---|
106 | /usr/include/rpc will also be created, and several header files will |
---|
107 | be installed there. ALL RPC SERVICES INCLUDE THESE HEADER FILES. |
---|
108 | |
---|
109 | The programs in etc/ link in routines from librpclib.a. If you change |
---|
110 | where it is installed, be sure to edit etc/'s Makefile to reflect this. |
---|
111 | These programs are installed in /etc. PORTMAP MUST BE RUNNING ON |
---|
112 | YOUR SYSTEM BEFORE YOU START ANY OTHER RPC SERVICE. |
---|
113 | |
---|
114 | rpcgen is installed in /usr/bin. This program is required to build |
---|
115 | the demonstration services in demo and the rstat client and server in |
---|
116 | rpcsvc/. |
---|
117 | |
---|
118 | The rpcsvc/ directory will install its files in the directory |
---|
119 | /usr/include/rpcsvc. The Remote Status service (rstat_svc) will be |
---|
120 | compiled and installed in /etc. If you wish to make this service |
---|
121 | available, you should either start this service when needed or have |
---|
122 | it 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 |
---|
124 | version of inetd to automatically start RPC services. (Use "make |
---|
125 | LIB=" when building rstat on a Sun Workstation.) The Remote Status |
---|
126 | client (rstat) will be installed in /usr/bin. This program queries |
---|
127 | the rstat_svc on a remote host and prints a system status summary |
---|
128 | similar to the one printed by "uptime". |
---|
129 | |
---|
130 | The documentation is not built during the "make install" command. |
---|
131 | Typing "make" in the doc directory will cause all of the manuals to |
---|
132 | be formatted using nroff into a single file. We have had a report |
---|
133 | that certain "troff" equivalents have trouble processing the full |
---|
134 | manual. If you have trouble, try building the manuals individually |
---|
135 | (see the Makefile). |
---|
136 | |
---|
137 | The demonstration services in the demo directory are not built by the |
---|
138 | top-level "make install" command. To build these, cd to the demo |
---|
139 | directory and enter "make". The three services will be built. |
---|
140 | RPCGEN MUST BE INSTALLED in a path that make can find. To run the |
---|
141 | services, start the portmap program as root and invoke the service |
---|
142 | (you probably will want to put it in the background). rpcinfo can be |
---|
143 | used to check that the service succeeded in getting registered with |
---|
144 | portmap, and to ping the service (see rpcinfo's man page). You can |
---|
145 | then use the corresponding client program to exercise the service. |
---|
146 | To build these services on a Sun workstation, you must prevent the |
---|
147 | Makefile from trying to link the RPC library (as these routines are |
---|
148 | already a part of Sun's libc). Use: "make LIB=". |
---|
149 | |
---|
150 | BUGFIX FOR 4.3BSD COMPILER |
---|
151 | |
---|
152 | The use of a 'void *' declaration for one of the arguments in |
---|
153 | the reply_proc() procedure in etc/rpcinfo.c will trigger a bug |
---|
154 | in the 4.3BSD compiler. The bug is fixed by the following change to |
---|
155 | the 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 | |
---|
177 | If you cannot fix your compiler, change the declaration in reply_proc() |
---|
178 | from 'void *' to 'char *'. |
---|
179 | |
---|
180 | BUGFIX FOR 4.2BSD COMPILER |
---|
181 | |
---|
182 | Unpatched 4.2BSD compilers complain about valid C. You can make old |
---|
183 | compilers happy by changing some voids to ints. However, the fix to |
---|
184 | the 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 | |
---|
208 | WHAT'S NEW IN THIS RELEASE: RPCSRC 4.0 |
---|
209 | |
---|
210 | The previous release was RPCSRC 3.9. As with all previous releases, |
---|
211 | this release is based directly on files from Sun Microsystem's |
---|
212 | implementation. |
---|
213 | |
---|
214 | Upgrade from RPCSRC 3.9 |
---|
215 | |
---|
216 | 1) RPCSRC 4.0 upgrades RPCSRC 3.9. Improvements from SunOS 4.0 have |
---|
217 | been integrated into this release. |
---|
218 | |
---|
219 | Secure RPC (in the secure_rpc/ directory) |
---|
220 | |
---|
221 | 2) DES Authentication routines and programs are provided. |
---|
222 | 3) A new manual, "Secure NFS" is provided, which describes Secure RPC |
---|
223 | and Secure NFS. |
---|
224 | 4) 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 | |
---|
228 | New Functionality |
---|
229 | |
---|
230 | 5) rpcinfo can now be used to de-register services from the portmapper |
---|
231 | which may have terminated abnormally. |
---|
232 | 6) A new client, rstat, is provided which queries the rstat_svc and |
---|
233 | prints a status line similar to the one displayed by "uptime". |
---|