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