Article View: comp.protocols.iso
Article #44Re: Transport Provider Interface for UNIX STREAMS
From: Alex Brown
Date: Wed, 04 Nov 1992 22:54
Date: Wed, 04 Nov 1992 22:54
40 lines
2845 bytes
2845 bytes
Transport Provider Interface (TPI) dates back to System V Release 2, and was originally known as Transport Service Interface. It's now a UNIX International standard interface and documents describing it are available through UI -- you may need to be in a member organization, however. UI has recently opened its "OSI Working Group" to non-UI participation as a SIG, and your organization may be able to gain access to it as a participating user. Ed Romascan (magma@nic.cerf.net) mentions a specification in a "Porting Rules" document; I think this is the "Device Driver Interface - Driver Kernel Interface (DDI/DKI)" document, but I don't remember seeing a TPI specification there. (The current edition of this document for SVR4 is available in bookstores.) However, because TLI is well documented in man pages, there's enough information for most application purposes in header files. See /usr/include/sys/tihdr.h in any SVR32 or SVR4 implementation, e.g. 386/ix. To use it you must be generally familiar with getmsg() and putmsg(), with Streams messages in the kernel and with other simpler Streams interfaces such as DLPI (or its predecessor LLI). The mapping of TPI primitives to TLI routines is fairly straightforward with the exception of protocol-specific options parameters in T_conn_* (which are not used in protocol-independent applications) and the presence of a queue_t *QUEUE_ptr in T_conn_res. This is used only by a listener stream to pass an incoming connection to another stream, and thus can't be used from user space (should be NULL). "timod" is pushed above TPI in the kernel by the TLI library, to manage the endpoint state to provide TLI services such as t_look(), and the handoff of an incoming connection to a forked process using t_sync() in user space; its IOCTLs are identified but not documented in timod.h. Most applications are far easier to write using TLI, but if for whatever reason you are not interested in TLI library services, tiuser.h should be sufficient to write a user-space application. -- Alex Brown OSI networks Sequoia Systems abrown@sequoia.com 400 Nickerson Rd (508) 480-0800 x1614 Marlboro MA 01752 481-2418 fax
Technical Details
Message-ID:
<ABROWN.92Nov4225417@seqp4.uucp>Path:
arc1-ca.pugleaf.net!sparky!uunet!charon.amdahl.com!pacbell.com!decwrl!hal.com!olivea!spool.mu.edu!hri.com!noc.near.net!seqp4!abrownReferences:
<1992Oct27.145159.7217@stc.nato.int> <Bwu048.73F@ra.nrl.navy.mil> <3542@news.cerf.net>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!sparky!uunet!charon.amdahl.com!pacbell.com!decwrl!hal.com!olivea!spool.mu.edu!hri.com!noc.near.net!seqp4!abrown From: abrown@seqp4.uucp (Alex Brown) Newsgroups: comp.protocols.iso Subject: Re: Transport Provider Interface for UNIX STREAMS Message-ID: <ABROWN.92Nov4225417@seqp4.uucp> Date: 4 Nov 92 22:54:17 GMT References: <1992Oct27.145159.7217@stc.nato.int> <Bwu048.73F@ra.nrl.navy.mil> <3542@news.cerf.net> Sender: abrown@seqp4.sequoia.com Organization: Sequoia Systems, Inc. Marlboro MA, USA Lines: 40 In-reply-to: koelman@cuby.stc.nl's message of 27 Oct 92 14:51:59 GMT