Home | History | Annotate | Line # | Download | only in rpc
README revision 1.1
      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 (a] 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".
    234