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