|
|
1.1 ! root 1: .TH LIBTSAP 3N "31 May 1988" ! 2: .\" $Header: /f/osi/tsap/RCS/libtsap.3n,v 7.0 89/11/23 22:30:28 mrose Rel $ ! 3: .\" ! 4: .\" ! 5: .\" $Log: libtsap.3n,v $ ! 6: .\" Revision 7.0 89/11/23 22:30:28 mrose ! 7: .\" Release 6.0 ! 8: .\" ! 9: .SH NAME ! 10: libtsap \- Transport Services library ! 11: .SH SYNOPSIS ! 12: .B "#include <isode/tsap.h>" ! 13: .sp ! 14: \fIcc\fR\0...\0\fB\-ltsap\fR ! 15: .SH DESCRIPTION ! 16: The \fIlibtsap\fR library contains a set of routines which implement ! 17: transport services on top of the TCP. ! 18: In essence, ! 19: they implement a Transport Service Access Point (TSAP) interface to the ! 20: native TCP/IP implementation on Berkeley UNIX. ! 21: .PP ! 22: Although the ISO model is symmetric, ! 23: the TCP/IP model (and this implementation) is based on a client/server ! 24: paradigm and hence asymmetric. ! 25: The information herein is skeletal: ! 26: consult the \fIUser's Manual\fR for actual examples of how ISO servers and ! 27: clients are coded and interact with the \fIlibtsap\fR library. ! 28: .SH ADDRESSES ! 29: TSAP addresses are represented by the \fBTSAPaddr\fR structure. ! 30: This contains one more more network addresses, ! 31: and a transport-selector as found in the \fIisoservices\fR\0(5) ! 32: database. ! 33: .SH "SERVER INITIALIZATION" ! 34: A program providing an ISO service is invoked under \fItsapd\fR\0(8c), ! 35: with the argument vector listed in the ISODE services database. ! 36: The server's very first action is to re\-capture the TSAP ! 37: state as recorded by \fItsapd\fR. ! 38: This is accomplished by calling \fBTInit\fR. ! 39: Information returned by this call is equivalent to the parameters passed by a ! 40: T\-CONNECTION.INDICATION event. ! 41: If the call is successful, ! 42: the program can then examine the argument vector that was passed via ! 43: \fIexecvp\fR ! 44: (it's important to call \fBTInit\fR prior to reading \fBargc\fR and ! 45: \fBargv\fR). ! 46: If the call to \fBTInit\fR is not successful, ! 47: information returned by the call indicates the reason for failure. ! 48: .PP ! 49: After examining the information provided by \fBTInit\fR ! 50: (and possibly the argument vector), ! 51: the server should either accept or reject the connection. ! 52: If accepting, the \fBTConnResponse\fR routine is called ! 53: (which corresponds to the T\-CONNECT.RESPONSE action). ! 54: If the call is successful, ! 55: the interaction is henceforth symmetric. ! 56: If un\-successful, ! 57: information returned by the call indicates the reason for failure. ! 58: If rejecting, the \fBTDiscRequest\fR routine is called ! 59: (which corresponds to the T\-DISCONNECT.REQUEST action), ! 60: and the program may exit. ! 61: .SH "CLIENT INITIALIZATION" ! 62: A program requesting an ISO service calls \fBTConnRequest\fR ! 63: (which corresponds to the T\-CONNECT.REQUEST action). ! 64: If successful, ! 65: the interaction is henceforth symmetric. ! 66: If un\-successful, ! 67: information returned by the call indicates the reason for failure. ! 68: .SH TRANSPORT\-DESCRIPTORS ! 69: Once a connection has been established via a successful return from ! 70: \fBTConnResponse\fR (for servers) or \fBTConnRequest\fR (for clients), ! 71: a connection is referenced by a small integer ! 72: (returned in a structure passed to these calls) called a ! 73: \fItransport\-descriptor\fR. ! 74: The transport\-descriptor appears as an argument to the peer routines described ! 75: below. ! 76: .PP ! 77: By default, ! 78: events associated with a transport\-descriptor are synchronous in nature: ! 79: activity in the network won't generate an INDICATION event without program ! 80: first asking to be told of any activity. ! 81: To mark a transport\-descriptor as asynchronous, ! 82: a call to \fBTSetIndications\fR is made with the addresses of an integer ! 83: function to handle these events: ! 84: .sp ! 85: .in +.5i ! 86: .nf ! 87: .ta \w'\fIroutine\fR 'u ! 88: \fIroutine\fR \fIevents\fR ! 89: \fBfunc1\fR T\-DATA.INDICATION, T\-EXPEDITED DATA.INDICATION ! 90: \fBfunc2\fR T\-DISCONNECT.INDICATION ! 91: .re ! 92: .fi ! 93: .in -.5i ! 94: .sp ! 95: Upon a successful return from \fBTSetIndications\fR, ! 96: these functions will be called as appropriate in this fashion: ! 97: .sp ! 98: .in +.5i ! 99: .B "(*func1) (sd, tx);" ! 100: .sp ! 101: .B "(*func2) (sd, td);" ! 102: .in -.5i ! 103: .sp ! 104: where \fBsd\fR is the transport\-descriptor, ! 105: \fBtx\fR is a pointer to a \fBTSAPdata\fR structure, ! 106: and \fBtd\fR is a pointer to a \fBTSAPdisconnect\fR structure. ! 107: Any value returned by these functions is ignored. ! 108: .PP ! 109: Note well: the \fB\-ltsap\fR library uses the SIGEMT signal to provide this ! 110: interface. ! 111: Programs loaded with \fB\-ltsap\fR that use asynchronous transport\-descriptors ! 112: should NOT use SIGEMT for other purposes. ! 113: .PP ! 114: For synchronous multiplexing of several connections, ! 115: the routine \fBTSelectMask\fR updates a file\-descriptor mask and counter for ! 116: use with \fIselect\fR\0(2). ! 117: .SH PEER ! 118: As a rule, ! 119: a fatal failure (consult the \fIUser's Manual\fR) ! 120: on return from any of these routines is equivalent to a ! 121: T\-DISCONNECT.INDICATION. ! 122: .sp ! 123: .in +.5i ! 124: .nf ! 125: .ta \w'\fBTWriteRequest\fR 'u ! 126: \fIroutine\fR \fIaction\fR ! 127: \fBTDataRequest\fR T\-DATA.REQUEST ! 128: \fBTExpdRequest\fR T\-EXPEDITED\-DATA.REQUEST ! 129: \fBTWriteRequest\fR T\-WRITE.REQUEST (write user data vectors) ! 130: \fBTReadRequest\fR T\-READ.REQUEST (synchronous read) ! 131: \fBTDiscRequest\fR T\-DISCONNECT.REQUEST ! 132: .re ! 133: .fi ! 134: .in -.5i ! 135: .sp ! 136: Note that the \fBTReadRequest\fR routine returns data from the peer by ! 137: allocating memory. ! 138: It should be freed before the structure is re\-used. ! 139: .PP ! 140: Finally, ! 141: the routine \fBTErrString\fR takes a failure code from a \fBTSAPdisconnect\fR ! 142: structure and returns a null\-terminated diagnostic string. ! 143: Also, ! 144: the routine \fBTLocalHostName\fR returns a null\-terminated string ! 145: denoting the name of the localhost. ! 146: .SH FILES ! 147: .nf ! 148: .ta \w'\*(EDisoservices 'u ! 149: \*(EDisoservices ISODE services database ! 150: .re ! 151: .fi ! 152: .SH "SEE ALSO" ! 153: isoc(1c), isoservices(5), isod(8c), isore(8c), tsapd(8c), ! 154: .br ! 155: \fIThe ISO Development Environment: User's Manual\fR, ! 156: .br ! 157: \fIRFC1006: ISO Transport Services on top of the TCP, Version: 3\fR, ! 158: .br ! 159: ISO 8072: ! 160: \fIInformation Processing Systems \-\- Open Systems Interconnection \-\- ! 161: Transport Service Definition\fR, ! 162: .br ! 163: CCITT Recommendation X.214: ! 164: \fITransport Service Definition for Open Systems Interconnection (OSI) for ! 165: CCITT Applications\fR ! 166: .SH DIAGNOSTICS ! 167: All routines return the manifest constant \fBNOTOK\fR (\-1) on error. ! 168: In addition, ! 169: those routines which take a pointer to a \fBTSAPdisconnect\fR structure ! 170: fill\-in the structure as appropriate. ! 171: .SH AUTHORS ! 172: Marshall T. Rose ! 173: .br ! 174: Dwight E. Cass, ! 175: Northrop Research and Technology Center ! 176: .SH BUGS ! 177: Do not confuse transport\-descriptors with file\-descriptors. ! 178: Unlike file\-descriptors which are implemented by the kernel, ! 179: transport\-descriptors do not work across \fIfork\fRs and \fIexec\fRs.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.