STREAMS Modules tirdwr(7M)
NAME
tirdwr - Transport Interface read/write interface STREAMS
module
SYNOPSIS
int ioctl( fd, IPUSH, "tirdwr");
DESCRIPTION
tirdwr is a STREAMS module that provides an alternate
interface to a transport provider which supports the Tran-
sport 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. How-
ever, putmsg and getmsg can only transfer data messages
between user and stream; control portions are disallowed.
The tirdwr module must only be pushed (see IPUSH in
streamio(7I)) onto a stream terminated by a transport proto-
col provider which supports the TI. After the tirdwr module
has been pushed onto a stream, none of the TI functions can
be used. Subsequent calls to TI functions cause an error on
the stream. Once the error is detected, subsequent system
calls on the stream 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 IPOP in
streamio(7I)) off the stream, or when data passes through
it.
push When the module is pushed onto a stream, it checks
any existing data destined for the user to ensure
that only regular data messages are present. It
ignores 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
IPUSH will return an error with errno set to
EPROTO.
write The module takes the following actions on data that
originated from a write system call:
o All messages with the exception of mes-
sages that contain control portions (see
the putmsg and getmsg system calls) are
SunOS 5.11 Last change: 3 Jul 1990 1
STREAMS Modules tirdwr(7M)
transparently passed onto the module's
downstream neighbor.
o Any zero length data messages are freed by
the module and they will not be passed
onto the module's downstream neighbor.
o Any messages with control portions gen-
erate an error, and any further system
calls associated with the stream fails
with errno set to EPROTO.
read The module takes the following actions on data that
originated from the transport protocol provider.
All messages with the exception of those that con-
tain control portions (see the putmsg and getmsg
system calls) are transparently passed onto the
module's upstream neighbor. The action taken on
messages with control portions will be as follows:
o Any data messages with control portions
have the control portions removed from the
message before to passing the message on
to the upstream neighbor.
o Messages that represent an orderly release
indication from the transport provider
generate a zero length data message, indi-
cating the end of file, which will be sent
to the reader of the stream. The orderly
release message itself is freed by the
module.
o Messages that represent an abortive
disconnect indication from the transport
provider cause all further write and
putmsg system calls to fail with errno set
to ENXIO. All further read and getmsg sys-
tem calls return zero length data (indi-
cating end of file) once all previous data
has been read.
o With the exception of the above rules, all
other messages with control portions gen-
erate an error and all further system
calls associated with the stream will fail
with errno set to EPROTO.
Any zero length data messages are freed by the
module and they are not passed onto the module's
upstream neighbor.
SunOS 5.11 Last change: 3 Jul 1990 2
STREAMS Modules tirdwr(7M)
pop When the module is popped off the stream or the
stream is closed, the module takes the following
action:
o 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.
SEE ALSO
Intro(3), getmsg(2), putmsg(2), read(2), write(2), Intro(3),
streamio(7I), timod(7M)
STREAMS Programming Guide
SunOS 5.11 Last change: 3 Jul 1990 3
|