tirdwr(7) tirdwr(7)
NAME
tirdwr - Transport Interface read/write interface STREAMS
module
DESCRIPTION
tirdwr is a STREAMS module that provides an alternate
interface to a transport provider which supports the Transport
Interface (TI) functions of the Network Services library (see
Section 3N). This alternate interface allows a user to
communicate with the transport protocol provider using the
read(2) and write(2) system calls. The putmsg(2) and
getmsg(2) system calls may also be used. However, putmsg and
getmsg can only transfer data messages between user and
stream.
The tirdwr module must only be pushed [see I_PUSH in
streamio(7)] onto a stream terminated by a transport protocol
provider which supports the TI. After the tirdwr module has
been pushed onto a stream, none of the Transport Interface
functions can be used. Subsequent calls to TI functions will
cause an error on the stream. Once the error is detected,
subsequent system calls on the stream will return an error
with errno set to EPROTO.
The following are the actions taken by the tirdwr module when
pushed on the stream, popped [see I_POP in streamio(7)] off
the stream, or when data passes through it.
push When the module is pushed onto a stream, it will check
any existing data destined for the user to ensure that
only regular data messages are present. It will
ignore any messages on the stream that relate to
process management, such as messages that generate
signals to the user processes associated with the
stream. If any other messages are present, the I_PUSH
will return an error with errno set to EPROTO.
write The module will take the following actions on data
that originated from a write system call:
All messages with the exception of messages that
contain control portions (see the putmsg and
getmsg system calls) will be transparently
passed onto the module's downstream neighbor.
Copyright 1994 Novell, Inc. Page 1
tirdwr(7) tirdwr(7)
Any zero length data messages will be freed by
the module and they will not be passed onto the
module's downstream neighbor.
Any messages with control portions will generate
an error, and any further system calls
associated with the stream will fail with errno
set to EPROTO.
read The module will take the following actions on data
that originated from the transport protocol provider:
All messages with the exception of those that
contain control portions (see the putmsg and
getmsg system calls) will be transparently
passed onto the module's upstream neighbor.
The action taken on messages with control
portions will be as follows:
Messages that represent expedited data
will generate an error. All further
system calls associated with the stream
will fail with errno set to EPROTO.
Any data messages with control portions
will have the control portions removed
from the message prior to passing the
message on to the upstream neighbor.
Messages that represent an orderly
release indication from the transport
provider will generate a zero length
data message, indicating the end of
file, which will be sent to the reader
of the stream. The orderly release
message itself will be freed by the
module.
Messages that represent an abortive
disconnect indication from the transport
provider will cause all further write
and putmsg system calls to fail with
errno set to ENXIO. All further read
and getmsg system calls will return zero
length data (indicating end of file)
Copyright 1994 Novell, Inc. Page 2
tirdwr(7) tirdwr(7)
once all previous data has been read.
With the exception of the above rules,
all other messages with control portions
will generate an error and all further
system calls associated with the stream
will fail with errno set to EPROTO.
Any zero length data messages will be freed by
the module and they will not be passed onto the
module's upstream neighbor.
pop When the module is popped off the stream or the stream
is closed, the module will take the following action:
If an orderly release indication has been
previously received, then an orderly release
request will be sent to the remote side of the
transport connection.
REFERENCES
getmsg(2), intro(2), intro(3) putmsg(2), read(2), streamio(7),
timod(7), write(2)
Copyright 1994 Novell, Inc. Page 3