tels, telm - STREAMS Telnet slave (pseudo-terminal) driver, STREAMS
Telnet master driver (used by telnetd only), respectively
int open("/dev/pts/tN", O_RDWR);
A Telnet pseudo-terminal consists of a tightly-coupled pair of
character devices, called the master device and slave device. The
master and slave device drivers work together to provide a Telnet
connection on the server side where the master provides a connection
to telnetd and the slave provides a terminal device special file
access for the Telnet application processes, as depicted below:
| Pseudo terminal functions|
Application <--> |--------------------------| <--> telnetd
Processes | Slave | Master |
| (tels) | (telm) |
The slave driver, tels with ptem (STREAMS pty emulation module) and
ldterm (STREAMS line discipline module) pushed on top (not shown for
simplicity), provides a terminal interface as described in termio(7).
Whereas devices that provide the terminal interface described in
termio(7) have a hardware device behind them; in contrast, the slave
device has telnetd manipulating it through the master side of the
Telnet pseudo terminal.
There are no nodes in the file system for each individual master
device. Rather, the master driver is set up as a STREAMS clone(7)
driver with its major device number set to the major for the clone
driver and its minor device number set to the major for the telm
driver. The master driver is opened by telnetd using the open(2)
system call with /dev/telnetm as the device file parameter. The clone
open finds the next available minor number for the master device. The
master device is available only if it and its corresponding slave
device are not already opened.
In order to use the STREAMS Telnet subsystem, a node for the master
driver /dev/telnetm and N number of Telnet slave devices must be
The number of slave devices is set by a kernel tunable parameter
called nstrtel. This can be modified using SAM; its default and
minimum value is 60. The value of nstrtel is the upper limit of the
number of telnet sessions that can be opened.
Hewlett-Packard Company - 1 - HP-UX Release 11i: November 2000
Multiple opens are allowed on the Telnet slave device.
The master and slave drivers pass all STREAMS messages to their
adjacent drivers. When the connection is closed from the Telnet client
side, an M_HANGUP message is sent to the corresponding slave device
which will render that slave device unusable. The process on the
slave side gets the errno ENXIO when attempting a write(2) system call
to the slave device file but it will be able to read any data
remaining in the slave stream. Finally, when all the data has been
read, the read(2) system call will return 0, indicating that the slave
can no longer be used.
tels() and telm() were developed by HP.
/dev/telnetm Streams Telnet master clone device
/dev/pts/tN Streams slave devices where N is the minor number
of the slave device and 0 < N < nstrtel.
insf(1M), open(2), ioctl(2), streamio(7), ldterm(7), telnetd(1M),
Hewlett-Packard Company - 2 - HP-UX Release 11i: November 2000