MyWebUniversity.com Home Page
 



OpenSolaris man pages main menu


User Commands                                           rpcgen(1)



NAME
     rpcgen - an RPC protocol compiler

SYNOPSIS
     rpcgen infile


     rpcgen [-a] [-A] [-b] [-C] [-D name [= value] [-i size]
          [-I [-K seconds] [-L] [-M] [-N] [- T] [-v]
          [-Y pathname] infile


     rpcgen [-c  -h  -l  -m  -t  -Sc  -Ss  -Sm]
          [-o outfile] [infile]


     rpcgen [-s nettype] [-o outfile] [infile]


     rpcgen [-n netid] [-o outfile] [infile]


DESCRIPTION
     The rpcgen utility is a tool that generates C code to imple-
     ment  an  RPC  protocol.  The  input to rpcgen is a language
     similar to C known as RPC Language  (Remote  Procedure  Call
     Language).


     The rpcgen utility is normally used as in the first synopsis
     where   it  takes  an  input file and generates three output
     files. If the infile is named proto.x, then rpcgen generates
     a  header  in  proto.h, XDR routines in protoxdr.c, server-
     side  stubs  in  protosvc.c,  and  client-side   stubs   in
     protoclnt.c.  With the -T option, it also generates the RPC
     dispatch table in prototbl.i.


     rpcgen can also generate sample client and server files that
     can be customized to suit a particular application. The -Sc,
     -Ss, and -Sm options  generate  sample  client,  server  and
     makefile,  respectively.  The -a option generates all files,
     including sample files. If the infile is proto.x,  then  the
     client  side  sample  file is written to protoclient.c, the
     server side sample file to  protoserver.c  and  the  sample
     makefile to makefile.proto.


     The server created can be started both by the port  monitors
     (for  example,  inetd  or  listen)  or by itself. When it is
     started by a port monitor, it creates servers only  for  the
     transport  for  which  the file descriptor 0 was passed. The



SunOS 5.11           Last change: 7 Dec 2001                    1






User Commands                                           rpcgen(1)



     name of the transport must be specified by  setting  up  the
     environment variable PMTRANSPORT. When the server generated
     by rpcgen is executed, it creates server handles for all the
     transports specified in the NETPATH environment variable, or
     if it is unset, it creates server handles for all the  visi-
     ble transports from the /etc/netconfig file. Note: the tran-
     sports are chosen at run time and not at compile time.  When
     the   server  is  self-started,  it  backgrounds  itself  by
     default. A special define symbol RPCSVCFG can be  used  to
     run the server process in foreground.


     The second synopsis provides special  features  which  allow
     for  the  creation  of more sophisticated RPC servers. These
     features include support for user-provided #defines and  RPC
     dispatch  tables. The entries in the RPC dispatch table con-
     tain:

         o    pointers to the service  routine  corresponding  to
              that procedure

         o    a pointer to the input and output arguments

         o    the size of these routines


     A server can use the dispatch table to  check  authorization
     and  then  to  execute the service routine. A client library
     may use the dispatch table  to  deal  with  the  details  of
     storage management and XDR data conversion.


     The other three synopses shown above are used when one  does
     not  want  to generate all the output files, but only a par-
     ticular one. See the EXAMPLES section below for examples  of
     rpcgen usage. When rpcgen is executed with the -s option, it
     creates servers for that  particular  class  of  transports.
     When  executed  with  the -n option, it creates a server for
     the transport specified by netid. If infile  is  not  speci-
     fied, rpcgen accepts the standard input.


     All the options mentioned in the second synopsis can be used
     with  the other three synopses, but the changes will be made
     only to the specified output file.


     The C preprocessor cc -E is run on the input file before  it
     is  actually  interpreted by rpcgen. For each type of output
     file, rpcgen defines a special preprocessor symbol  for  use
     by the rpcgen programmer:




SunOS 5.11           Last change: 7 Dec 2001                    2






User Commands                                           rpcgen(1)



     RPCHDR     defined when compiling into headers


     RPCXDR     defined when compiling into XDR routines


     RPCSVC     defined when compiling into server-side stubs


     RPCLNT    defined when compiling into client-side stubs


     RPCTBL     defined when compiling into RPC dispatch tables



     Any line beginning with ``%'' is passed  directly  into  the
     output  file, uninterpreted by rpcgen, except that the lead-
     ing ``%" is stripped off. To specify the path name of the  C
     preprocessor, use the -Y flag.


     For every data type referred to in  infile,  rpcgen  assumes
     that  there  exists a routine with the string xdr prepended
     to the name of the data type. If this routine does not exist
     in  the  RPC/XDR  library, it must be provided. Providing an
     undefined data type allows customization of XDR routines.

OPTIONS
     The following options are supported:

     -a                Generates  all  files,  including   sample
                       files.


     -A                Enables  the  Automatic  MT  mode  in  the
                       server main program. In this mode, the RPC
                       library automatically creates  threads  to
                       service  client requests. This option gen-
                       erates multithread-safe  stubs  by  impli-
                       citly  turning  on  the  -M option. Server
                       multithreading modes and parameters can be
                       set   using  the  rpccontrol(3NSL)  call.
                       rpcgen generated code does not change  the
                       default values for the Automatic MT mode.


     -b                Backward  compatibility  mode.   Generates
                       transport-specific RPC code for older ver-
                       sions of the operating system.





SunOS 5.11           Last change: 7 Dec 2001                    3






User Commands                                           rpcgen(1)



     -c                Compiles into XDR routines.


     -C                Generates header and stub files which  can
                       be  used  with  ANSI  C compilers. Headers
                       generated with this flag can also be  used
                       with C] programs.


     -Dname[=value]    Defines a symbol name. Equivalent  to  the
                       #define  directive  in  the  source. If no
                       value is given, value  is  defined  as  1.
                       This  option  may  be  specified more than
                       once.


     -h                Compiles  into   C   data-definitions   (a
                       header). The -T option can be used in con-
                       junction to produce a  header  which  sup-
                       ports RPC dispatch tables.


     -i size           Size at which to start  generating  inline
                       code.  This option is useful for optimiza-
                       tion. The default size is 5.


     -I                Compiles  support  for  inetd(1M)  in  the
                       server  side  stubs.  Such  servers can be
                       self-started or can be started  by  inetd.
                       When  the server is self-started, it back-
                       grounds  itself  by  default.  A   special
                       define  symbol  RPCSVCFG  can be used to
                       run the  server process in foreground,  or
                       the  user  may simply compile without  the
                       -I option.

                       If there are no pending  client  requests,
                       the  inetd  servers exit after 120 seconds
                       (default). The default can be changed with
                       the   -K option. All of the error messages
                       for inetd servers  are always logged  with
                       syslog(3C).

                       Note: This option is supported  for  back-
                       ward  compatibility only. It should always
                       be used in conjunction with the  -b option
                       which   generates  backward  compatibility
                       code. By default (that is, when  -b is not
                       specified),  rpcgen generates servers that
                       can be invoked through portmonitors.




SunOS 5.11           Last change: 7 Dec 2001                    4






User Commands                                           rpcgen(1)



     -K seconds        By default, services created using  rpcgen
                       and invoked through port monitors wait 120
                       seconds after servicing a  request  before
                       exiting.  That  interval  can  be  changed
                       using the -K flag. To create a server that
                       exits   immediately   upon   servicing   a
                       request,  use -K 0.  To  create  a  server
                       that never exits, the appropriate argument
                       is -K -1.

                       When monitoring for a server,  some  port-
                       monitors,  like listen(1M), always spawn a
                       new  process  in  response  to  a  service
                       request. If it is known that a server will
                       be used with such a  monitor,  the  server
                       should exit immediately on completion. For
                       such servers, rpcgen should be  used  with
                       -K 0.


     -l                Compiles into client-side stubs.


     -L                When the  servers  are  started  in  fore-
                       ground,  uses syslog(3C) to log the server
                       errors instead of  printing  them  on  the
                       standard error.


     -m                Compiles into server-side  stubs,  but  do
                       not generate a "main" routine. This option
                       is useful for doing callback-routines  and
                       for  users  who  need  to  write their own
                       "main" routine to do initialization.


     -M                Generates multithread-safe stubs for pass-
                       ing  arguments and results between rpcgen-
                       generated code and user written code. This
                       option  is  useful   for users who want to
                       use threads in their code.


     -N                This option allows procedures to have mul-
                       tiple arguments. It also uses the style of
                       parameter passing that  closely  resembles
                       C.  So,  when  passing  an  argument  to a
                       remote procedure, you do not have to  pass
                       a  pointer  to  the argument, but can pass
                       the argument itself. This behavior is dif-
                       ferent  from  the  old  style  of  rpcgen-
                       generated  code.  To   maintain   backward



SunOS 5.11           Last change: 7 Dec 2001                    5






User Commands                                           rpcgen(1)



                       compatibility,  this  option  is  not  the
                       default.


     -n netid          Compiles into server-side  stubs  for  the
                       transport specified by netid. There should
                       be an entry for  netid  in  the  netconfig
                       database.  This  option  may  be specified
                       more than once, so as to compile a  server
                       that serves multiple transports.


     -o outfile        Specifies the name of the output file.  If
                       none is specified, standard output is used
                       (-c, -h, -l, -m, -n, -s,  -Sc,  -Sm,  -Ss,
                       and -t modes only).


     -s nettype        Compiles into server-side  stubs  for  all
                       the   transports  belonging  to  the class
                       nettype. The supported  classes  are  net-
                       path,   visible,   circuitn,   circuitv,
                       datagramn, datagramv, tcp, and udp  (see
                       rpc(3NSL) for the meanings associated with
                       these classes). This option may be  speci-
                       fied  more than once. Note: The transports
                       are chosen at run time and not at  compile
                       time.


     -Sc               Generates sample  client  code  that  uses
                       remote procedure calls.


     -Sm               Generates a sample Makefile which  can  be
                       used for compiling the  application.


     -Ss               Generates sample  server  code  that  uses
                       remote procedure calls.


     -t                Compiles into RPC dispatch table.


     -T                Generates the code to support RPC dispatch
                       tables.

                       The options  -c, -h, -l, -m, -s, -Sc, -Sm,
                       -Ss,  and  -t are used exclusively to gen-
                       erate a particular type of file, while the
                       options  -D  and  -T are global and can be



SunOS 5.11           Last change: 7 Dec 2001                    6






User Commands                                           rpcgen(1)



                       used with the other options.


     -v                Displays the version number.


     -Y pathname       Gives the  name  of  the  directory  where
                       rpcgen   will  start  looking  for  the  C
                       preprocessor.


OPERANDS
     The following operand is supported:

     infile    input file


EXAMPLES
     Example 1 Generating the output files and dispatch table


     The following entry


       example% rpcgen -T prot.x




     generates  all  the   five   files:   prot.h,   protclnt.c,
     protsvc.c, protxdr.c, and prottbl.i.


     Example 2 Sending headers to standard output


     The following example sends the C data-definitions  (header)
     to the standard output:


       example% rpcgen -h prot.x



     Example 3 Sending a test version


     To send the test version of the -DTEST,  server  side  stubs
     for   all the transport belonging to the class datagramn to
     standard output, use:





SunOS 5.11           Last change: 7 Dec 2001                    7






User Commands                                           rpcgen(1)



       example% rpcgen -s datagramn -DTEST prot.x



     Example 4 Creating server side stubs


     To create the server side stubs for the transport  indicated
     by netid tcp, use:


       example% rpcgen -n tcp -o protsvc.c prot.x



EXIT STATUS
     0     Successful operation.


     >0    An error occurred.


ATRIBUTES
     See attributes(5) for descriptions of the  following  attri-
     butes:



     
           ATRIBUTE TYPE               ATRIBUTE VALUE       
    
     Availability                 SUNWbtool                   
    


SEE ALSO
     cc(1B), inetd(1M), listen(1M), rpc(3NSL), rpccontrol(3NSL),
     rpcsvccalls(3NSL), syslog(3C), netconfig(4), attributes(5)


     The rpcgen chapter in the ONC] Developer's Guide manual.














SunOS 5.11           Last change: 7 Dec 2001                    8



OpenSolaris man pages main menu

Contact us      |       About us      |       Term of use      |       Copyright © 2000-2010 MyWebUniversity.com ™