*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->OpenBSD man pages -> xdr_bool (3)              
Title
Content
Arch
Section
 

XDR(3)

Contents


NAME    [Toc]    [Back]

     xdr_array,  xdr_bool,  xdr_bytes,   xdr_char,   xdr_destroy,
xdr_double,
     xdr_enum,   xdr_float,   xdr_free,  xdr_getpos,  xdr_inline,
xdr_int, xdr_long,
     xdrmem_create, xdr_opaque, xdr_pointer, xdrrec_create,
     xdrrec_endofrecord,      xdrrec_eof,      xdrrec_skiprecord,
xdr_reference,
     xdr_setpos,    xdr_short,    xdrstdio_create,    xdr_string,
xdr_u_char,
     xdr_u_int, xdr_u_long, xdr_u_short,  xdr_union,  xdr_vector,
xdr_void,
     xdr_wrapstring  -  library routines for external data representation

SYNOPSIS    [Toc]    [Back]

     #include <sys/types.h>
     #include <rpc/xdr.h>

     int
     xdr_array(XDR  *xdrs,  char  **arrp,  u_int  *sizep,   u_int
maxsize,
             u_int elsize, xdrproc_t elproc);

     int
     xdr_bool(XDR *xdrs, bool_t *bp);

     int
     xdr_bytes(XDR   *xdrs,   char   **sp,  u_int  *sizep,  u_int
maxsize);

     int
     xdr_char(XDR *xdrs, char *cp);

     void
     xdr_destroy(XDR *xdrs);

     int
     xdr_double(XDR *xdrs, double *dp);

     int
     xdr_enum(XDR *xdrs, enum_t *ep);

     int
     xdr_float(XDR *xdrs, float *fp);

     void
     xdr_free(xdrproc_t proc, char *objp);

     u_int
     xdr_getpos(XDR *xdrs);

     long *
     xdr_inline(XDR *xdrs, int len);

     int
     xdr_int(XDR *xdrs, int *ip);

     int
     xdr_long(XDR *xdrs, long *lp);

     void
     xdrmem_create(XDR *xdrs, char *addr, u_int size, enum xdr_op
op);

     int
     xdr_opaque(XDR *xdrs, char *cp, u_int cnt);

     int
     xdr_pointer(XDR   *xdrs,   char   **objpp,   u_int  objsize,
xdrproc_t xdrobj);

     void
     xdrrec_create(XDR *xdrs,  u_int  sendsize,  u_int  recvsize,
char *handle,
             int (*readit)(), int (*writeit)());

     int
     xdrrec_endofrecord(XDR *xdrs, int sendnow);

     int
     xdrrec_eof(XDR *xdrs, int empty);

     int
     xdrrec_skiprecord(XDR *xdrs);

     int
     xdr_reference(XDR  *xdrs,  char  **pp, u_int size, xdrproc_t
proc);

     int
     xdr_setpos(XDR *xdrs, u_int pos);

     int
     xdr_short(XDR *xdrs, short *sp);

     void
     xdrstdio_create(XDR *xdrs, FILE *file, enum xdr_op op);

     int
     xdr_string(XDR *xdrs, char **sp, u_int maxsize);

     int
     xdr_u_char(XDR *xdrs, unsigned char *ucp);

     int
     xdr_u_int(XDR *xdrs, unsigned int *up);

     int
     xdr_u_long(XDR *xdrs, unsigned long *ulp);

     int
     xdr_u_short(XDR *xdrs, unsigned short *usp);

     int
     xdr_union(XDR  *xdrs,  int   *dscmp,   char   *unp,   struct
xdr_discrim *choices,
             bool_t (*defaultarm)());

     int
     xdr_vector(XDR *xdrs, char *arrp, u_int size, u_int elsize,
             xdrproc_t elproc);

     int
     xdr_void(void);

     int
     xdr_wrapstring(XDR *xdrs, char **sp);

DESCRIPTION    [Toc]    [Back]

     These routines allow C programmers to describe arbitrary data structures
     in a machine-independent fashion.  Data for remote procedure
calls are
     transmitted using these routines.

     xdr_array()  is  a  filter primitive that translates between
variable-length
     arrays and  their  corresponding  external  representations.
The parameter
     arrp is the address of the pointer to the array, while sizep
is the address
 of the element count of the array; this element  count
cannot exceed
     maxsize.   The  parameter  elsize is the size of each of the
array's elements,
 and elproc is an XDR filter that  translates  between
the array elements'
 C form, and their external representation.  This routine returns
     one if it succeeds, zero otherwise.

     xdr_bool() is a filter  primitive  that  translates  between
booleans (C integers)
  and  their external representations.  When encoding
data, this
     filter produces values of either one or zero.  This  routine
returns one
     if it succeeds, zero otherwise.

     xdr_bytes()  is  a  filter primitive that translates between
counted byte
     strings and their external representations.   The  parameter
sp is the address
  of  the  string pointer.  The length of the string is
located at address
 sizep; strings cannot be longer  than  maxsize.   This
routine returns
     one if it succeeds, zero otherwise.

     xdr_char()  is  a filter primitive that translates between C
characters and
     their external representations.  This routine returns one if
it succeeds,
     zero  otherwise.   Note:  encoded characters are not packed,
and occupy 4
     bytes each.  For arrays of characters, it is  worthwhile  to
consider
     xdr_bytes(), xdr_opaque(), or xdr_string().

     xdr_destroy()  is  a  macro that invokes the destroy routine
associated with
     the XDR stream xdrs.  Destruction usually  involves  freeing
private data
     structures associated with the stream.  Using xdrs after invoking
     xdr_destroy() is undefined.

     xdr_double() is a filter primitive that translates between C
double precision
  numbers  and  their  external representations.  This
routine returns
     one if it succeeds, zero otherwise.

     xdr_enum() is a filter primitive that translates between the
C enum type
     (actually  an  integer)  and  its  external representations.
This routine returns
 one if it succeeds, zero otherwise.

     xdr_float() is a filter primitive  that  translates  between
the C float
     type and its external representations.  This routine returns
one if it
     succeeds, zero otherwise.

     xdr_free() is a generic freeing routine.  The first argument
is the XDR
     routine  for the object being freed.  The second argument is
a pointer to
     the object itself.  Note: the pointer passed to this routine
is not
     freed, but what it points to is freed (recursively).

     xdr_getpos()  is  a macro that invokes the get-position routine associated
     with the XDR stream xdrs.  The routine returns  an  unsigned
integer, which
     indicates  the position of the XDR byte stream.  A desirable
feature of
     XDR streams is that simple arithmetic works with  this  number, although
     the XDR stream instances need not guarantee this.

     xdr_inline() is a macro that invokes the in-line routine associated with
     the XDR stream xdrs.  The routine returns  a  pointer  to  a
contiguous piece
     of  the  stream's  buffer; len is the byte length of the desired buffer.
     Note: pointer is cast to long *.  Warning: xdr_inline()  may
return NULL
     if  it  cannot  allocate  a  contiguous  piece  of a buffer.
Therefore the behavior
 may vary among stream instances; it  exists  for  the
sake of efficiency.


     xdr_int()  is  a  filter primitive that translates between C
integers and
     their external representations.  This routine returns one if
it succeeds,
     zero otherwise.

     xdr_long()  is  a filter primitive that translates between C
long integers
     and their external representations.   This  routine  returns
one if it succeeds,
 zero otherwise.

     xdrmem_create()  is  a  routine  which  initializes  the XDR
stream object
     pointed to by xdrs.  The stream's data  is  written  to,  or
read from, a
     chunk  of  memory  at  location addr whose length is no more
than size bytes
     long.  The op determines the direction  of  the  XDR  stream
(either
     XDR_ENCODE, XDR_DECODE, or XDR_FREE).

     xdr_opaque()  is  a filter primitive that translates between
fixed size
     opaque data and its external representation.  The  parameter
cp is the address
  of  the  opaque object, and cnt is its size in bytes.
This routine
     returns one if it succeeds, zero otherwise.

     xdr_pointer() is like xdr_reference() execpt that it serializes NULL
     pointers,   whereas   xdr_reference()   does   not.    Thus,
xdr_pointer() can represent
 recursive data structures, such as  binary  trees  or
linked lists.

     xdrrec_create()  is  a  routine  which  initializes  the XDR
stream object
     pointed to by xdrs.  The  stream's  data  is  written  to  a
buffer of size
     sendsize;  a value of zero indicates the system should use a
suitable default.
  The stream's data is read  from  a  buffer  of  size
recvsize; it too
     can  be  set  to a suitable default by passing a zero value.
When a
     stream's output buffer  is  full,  (*writeit)()  is  called.
Similarly, when
     a  stream's  input  buffer  is empty, (*readit)() is called.
The behavior of
     these two routines is similar to the system calls read() and
write(), except
  that  handle  is  passed to the former routines as the
first parameter.
     Note: the XDR stream's op field must be set by  the  caller.
Warning: this
     XDR stream implements an intermediate record stream.  Therefore there are
     additional bytes in the stream to  provide  record  boundary
information.

     xdrrec_endofrecord()  is a routine which can be invoked only
on streams
     created by xdrrec_create().  The data in the  output  buffer
is marked as a
     completed  record, and the output buffer is optionally written out if
     sendnow is non-zero.  This routine returns one  if  it  succeeds, zero otherwise.


     xdrrec_eof()  is  a  routine  which  can  be invoked only on
streams created by
     xdrrec_create().  After consuming the rest  of  the  current
record in the
     stream,  this  routine returns one if the stream has no more
input, zero
     otherwise.

     xdrrec_skiprecord() is a routine which can be  invoked  only
on streams
     created by xdrrec_create().  It tells the XDR implementation
that the
     rest of the current record  in  the  stream's  input  buffer
should be discarded.
   This routine returns one if it succeeds, zero otherwise.

     xdr_reference() is a primitive that provides pointer chasing
within
     structures.  The parameter pp is the address of the pointer;
size is the
     size of the structure that *pp points to; and proc is an XDR
procedure
     that filters the structure between its C form and its external representation.
  This routine returns one if it succeeds, zero  otherwise.  Warning:
  this  routine  does not understand NULL pointers.  Use
xdr_pointer()
     instead.

     xdr_setpos() is a macro that invokes the set  position  routine associated
     with  the  XDR stream xdrs.  The parameter pos is a position
value obtained
     from xdr_getpos().  This routine  returns  one  if  the  XDR
stream could be
     repositioned,  and zero otherwise.  Warning: it is difficult
to reposition
     some types of XDR streams, so this routine may fail with one
type of
     stream and succeed with another.

     xdr_short()  is a filter primitive that translates between C
short integers
 and their external representations.  This  routine  returns one if it
     succeeds, zero otherwise.

     xdrstdio_create()  is  a  routine  which initializes the XDR
stream object
     pointed to by xdrs.  The XDR stream data is written  to,  or
read from, the
     Standard  I/O  stream file.  The parameter op determines the
direction of
     the XDR stream (either XDR_ENCODE, XDR_DECODE, or XDR_FREE).
Warning:
     the  destroy  routine associated with such XDR streams calls
fflush() on
     the file stream, but never fclose().

     xdr_string() is a filter primitive that translates between C
strings and
     their  corresponding external representations.  Strings cannot be longer
     than maxsize.  Note: sp  is  the  address  of  the  string's
pointer.  This
     routine returns one if it succeeds, zero otherwise.

     xdr_u_char()  is  a filter primitive that translates between
unsigned C
     characters and their external representations.  This routine
returns one
     if it succeeds, zero otherwise.

     xdr_u_int()  is a filter primitive that translates between C
unsigned integers
 and their external representations.  This routine returns one if
     it succeeds, zero otherwise.

     xdr_u_long() is a filter primitive that translates between C
unsigned
     long integers and their external representations.  This routine returns
     one if it succeeds, zero otherwise.

     xdr_u_short()  is a filter primitive that translates between
C unsigned
     short integers and  their  external  representations.   This
routine returns
     one if it succeeds, zero otherwise.

     xdr_union()  is a filter primitive that translates between a
discriminated
     C union and its corresponding external  representation.   It
first translates
  the discriminant of the union located at dscmp.  This
discriminant
     is always an enum_t.  Next  the  union  located  at  unp  is
translated.  The
     parameter  choices  is  a  pointer  to  an  array  of struct
xdr_discrim structures.
  Each structure contains an ordered pair of [ value ,
proc ].  If
     the  union's  discriminant is equal to the associated value,
then the proc
     is called to translate the union.  The  end  of  the  struct
xdr_discrim
     structure  array  is denoted by a routine of value NULL.  If
the discriminant
  is  not  found  in  the  choices   array,   then   the
(*defaultarm)() procedure
  is called (if it is not NULL).  Returns one if it succeeds, zero
     otherwise.

     xdr_vector() is a filter primitive that  translates  between
fixed-length
     arrays  and  their  corresponding  external representations.
The parameter
     arrp is the address of the pointer to the array, while  size
is the element
  count  of the array.  The parameter elsize is the size
of each of the
     array's elements, and elproc is an XDR  filter  that  translates between the
     array  elements'  C form, and their external representation.
This routine
     returns one if it succeeds, zero otherwise.

     xdr_void() is a routine which always returns one.  It may be
passed to
     RPC  routines  that  require a function parameter, but where
nothing is to
     be done.

     xdr_wrapstring() is a primitive that calls  xdr_string(xdrs,
sp,
     MAXUN.UNSIGNED  ); where MAXUN.UNSIGNED is the maximum value
of an unsigned
 integer.  xdr_wrapstring() is handy because  the  RPC
package passes
     a   maximum   of   two   XDR  routines  as  parameters,  and
xdr_string(), one of the
     most frequently used primitives,  requires  three.   Returns
one if it succeeds,
 zero otherwise.

SEE ALSO    [Toc]    [Back]

      
      
     rpc(3)

     eXternal     Data    Representation    Standard:    Protocol
Specification.

     eXternal Data Representation: Sun Technical Notes.

     Sun Microsystems, Inc., XDR:  External  Data  Representation
Standard, RFC
     1014, USC-ISI.

OpenBSD      3.6                        February     16,     1988
[ Back ]
 Similar pages
Name OS Title
xdr IRIX External Data Representation (XDR) library routines
xdr_create IRIX library routines for external data representation stream creation
des_crypt Tru64 Data Encryption Standard (DES) encryption library routines (Auth)
des_quad_cksum Tru64 Data Encryption Standard (DES) encryption library routines (Auth)
des_string_to_key Tru64 Data Encryption Standard (DES) encryption library routines (Auth)
des_key_sched Tru64 Data Encryption Standard (DES) encryption library routines (Auth)
des_is_weak_key Tru64 Data Encryption Standard (DES) encryption library routines (Auth)
unvis OpenBSD revert a visual representation of data back to original form
unvis FreeBSD revert a visual representation of data back to original form
XmRepTypeGetId Tru64 A representation type manager function that retrieves the identification number of a representation ...
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service