Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

intro(3)

t_open(3N)

t_optmgmt(3N)

t_unbind(3N)



t_bind(3N)              NETWORK FUNCTIONS              t_bind(3N)



NAME
     t_bind - bind an address to a transport endpoint

SYNOPSIS
     #include <tiuser.h>

     int t_bind (fd, req, ret)
     int fd;
     struct t_bind *req;
     struct t_bind *ret;

DESCRIPTION
     This function associates a protocol address with  the  tran-
     sport  endpoint specified by fd and activates that transport
     endpoint.  In connection mode, the  transport  provider  may
     begin  accepting  or requesting connections on the transport
     endpoint.  In connectionless mode, the  transport  user  may
     send or receive data units through the transport endpoint.

     The req and ret arguments point to a t_bind  structure  con-
     taining the following members:

     struct netbuf addr;
     unsigned qlen;

     netbuf is described in intro(3).   The  addr  field  of  the
     t_bind  structure  specifies a protocol address and the qlen
     field is used to indicate the maximum number of  outstanding
     connect indications.

     req is used to request that an address, represented  by  the
     netbuf  structure, be bound to the given transport endpoint.
     len [see netbuf in intro(3); also for buf and maxlen] speci-
     fies  the  number  of bytes in the address and buf points to
     the address buffer.  maxlen has no meaning for the req argu-
     ment.   On  return,  ret contains the address that the tran-
     sport provider actually bound  to  the  transport  endpoint;
     this may be different from the address specified by the user
     in req.  In ret, the user specifies  maxlen,  which  is  the
     maximum size of the address buffer, and buf, which points to
     the buffer where the address is to be  placed.   On  return,
     len  specifies  the number of bytes in the bound address and
     buf points to the bound address.  If  maxlen  is  not  large
     enough to hold the returned address, an error will result.

     If the requested address is not available, or if no  address
     is  specified  in req (the len field of addr in req is zero)
     the transport provider may assign an appropriate address  to
     be  bound, and will return that address in the addr field of
     ret.  The user can compare the addresses in req and  ret  to
     determine whether the transport provider bound the transport
     endpoint to a different address than that requested.



            Last change: Networking Support Utilities           1





t_bind(3N)              NETWORK FUNCTIONS              t_bind(3N)



     req may be NULL if the user does  not  wish  to  specify  an
     address  to be bound.  Here, the value of qlen is assumed to
     be zero, and the transport provider must assign  an  address
     to  the  transport  endpoint.  Similarly, ret may be NULL if
     the user does not care what address was bound  by  the  pro-
     vider and is not interested in the negotiated value of qlen.
     It is valid to set req and ret to NULL for the same call, in
     which  case  the provider chooses the address to bind to the
     transport endpoint and does not return that  information  to
     the user.

     The  qlen  field  has  meaning  only  when  initializing   a
     connection-mode  service.   It  specifies the number of out-
     standing connect indications the transport  provider  should
     support  for  the  given transport endpoint.  An outstanding
     connect indication is one that has been passed to the  tran-
     sport  user  by  the  transport  provider.   A value of qlen
     greater than zero is only meaningful when issued by  a  pas-
     sive  transport  user  that  expects other users to call it.
     The value of qlen will be negotiated by the  transport  pro-
     vider  and  may  be changed if the transport provider cannot
     support the specified number of outstanding connect  indica-
     tions.   On  return,  the qlen field in ret will contain the
     negotiated value.

     This function allows more than one transport endpoint to  be
     bound  to  the same protocol address (however, the transport
     provider must support this capability also), but it  is  not
     allowable to bind more than one protocol address to the same
     transport endpoint.  If a user binds more than one transport
     endpoint to the same protocol address, only one endpoint can
     be used to listen for connect  indications  associated  with
     that  protocol address.  In other words, only one t_bind for
     a given protocol address may specify a value of qlen greater
     than zero.  In this way, the transport provider can identify
     which transport endpoint should be notified of  an  incoming
     connect  indication.   If a user attempts to bind a protocol
     address to a second transport endpoint with a value of  qlen
     greater  than  zero,  the  transport  provider  will  assign
     another address to be bound to that  endpoint.   If  a  user
     accepts a connection on the transport endpoint that is being
     used as the listening endpoint, the bound  protocol  address
     will  be  found  to be busy for the duration of that connec-
     tion.  No other transport endpoints may be bound for listen-
     ing  while  that  initial  listening endpoint is in the data
     transfer phase.  This will prevent more than  one  transport
     endpoint  bound  to the same protocol address from accepting
     connect indications.  On failure, t_errno may be set to  one
     of the following:

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



            Last change: Networking Support Utilities           2





t_bind(3N)              NETWORK FUNCTIONS              t_bind(3N)



     [TOUTSTATE]        The function  was  issued  in  the  wrong
                        sequence.

     [TBADADDR]         The specified protocol address was in  an
                        incorrect  format  or  contained  illegal
                        information.

     [TNOADDR]          The transport provider could not allocate
                        an address.

     [TACCES]           The user does not have permission to  use
                        the specified address.

     [TBUFOVFLW]        The number of bytes allowed for an incom-
                        ing  argument  is not sufficient to store
                        the  value   of   that   argument.    The
                        provider's  state  will  change to T_IDLE
                        and the information to be returned in ret
                        will be discarded.

     [TSYSERR]          A system error has occurred during execu-
                        tion of this function.

SEE ALSO
     intro(3), t_open(3N), t_optmgmt(3N), t_unbind(3N).
     UNIX System V Network Programmer's Guide.

DIAGNOSTICS
     t_bind returns 0 on success and -1 on failure and t_errno is
     set to indicate the error.

























            Last change: Networking Support Utilities           3



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