home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / SATAN11.ZIP / SRC / RPCGEN / README < prev    next >
Encoding:
Text File  |  1995-04-08  |  10.0 KB  |  241 lines

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