]>
Commit | Line | Data |
---|---|---|
d49d4c81 A |
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". |