Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

t_rcvuderr(3)

t_sndudata(3)



  t_rcvudata(3)                       CLIX                       t_rcvudata(3)



  NAME

    t_rcvudata - Receives a data unit

  LIBRARY

    The Transport Layer Interface (TLI) Library (libnsl-s.a)

  SYNOPSIS

    #include <tiuser.h>

    int t_rcvudata(
      int fd ,
      struct t_unitdata *unitdata ,
      int *flags );

  PARAMETERS

    fd         Identifies the local transport endpoint through which data will
               be received.

    unitdata   Points to the t_unitdata structure.

    flags      Indicates that the complete data unit was not received.

  DESCRIPTION

    This function is used in connectionless mode to receive a data unit from
    another transport user.  The fd parameter identifies the local transport
    endpoint through which data will be received, unitdata holds information
    associated with the received data unit, and flags is set on return to
    indicate that the complete data unit was not received.  The unitdata
    parameter points to a t_unitdata structure containing the following
    members:

    struct netbuf addr;
    struct netbuf opt;
    struct netbuf udata;

    The maxlen [see netbuf in intro] field of addr, opt, and udata must be set
    before issuing this function to indicate the maximum size of the buffer
    for each.

    On return from this call, addr specifies the protocol address of the
    sending user, opt identifies protocol-specific options that were
    associated with this data unit, and udata specifies the user data that was
    received.

    By default, t_rcvudata() operates in synchronous mode and waits for a data
    unit to arrive if none is available.  However, if O_NDELAY is set (with



  2/94 - Intergraph Corporation                                              1






  t_rcvudata(3)                       CLIX                       t_rcvudata(3)



    t_open() or fcntl), t_rcvudata() executes in asynchronous mode and fails
    if no data units are available.

    If the buffer defined in the udata field of unitdata is not large enough
    to hold the current data unit, the buffer is filled and T_MORE is set in
    flags on return to indicate that another t_rcvudata() should be issued to
    retrieve the rest of the data unit.  Subsequent t_rcvudata() call(s)
    return zero for the length of the address and options until the full data
    unit has been received.

  RETURN VALUES

    The t_rcvudata() function returns 0 on successful completion and -1 on
    failure and t_errno is set to indicate the error.

  ERRORS

    On failure, t_errno may be set to one of the following:

    [TBADF]
           The specified file descriptor does not refer to a transport
           endpoint.

    [TNODATA]
           The O_NDELAY was set, but no data units are currently available
           from the transport provider.

    [TBUFOVFLW]
           The number of bytes allocated for the incoming protocol address or
           options is not sufficient to store the information.  The unit data
           information to be returned in unitdata is discarded.

    [TLOOK]
           An asynchronous event has occurred on this transport endpoint and
           requires immediate attention.

    [TNOTSUPPORT]
           This function is not supported by the underlying transport
           provider.

    [TSYSERR]
           A system error has occurred during execution of this function.

  RELATED INFORMATION

    Functions:  t_rcvuderr(3), t_sndudata(3) AT&T UNIX System V Network
    Programmer's Guide







  2                                              Intergraph Corporation - 2/94




Typewritten Software • bear@typewritten.org • Edmonds, WA 98026