TTYMON(1M)TTYMON(1M)NAME
ttymon - port monitor for terminal ports
SYNOPSIS
/usr/lib/saf/ttymon
/usr/lib/saf/ttymon -g [-d device] [-h] [-t timeout]
[-l ttylabel] [-p prompt] [-m modules] [-T termtype]
DESCRIPTION
ttymon is a STREAMS-based TTY port monitor. Its function is to monitor
ports, to set terminal modes, baud rates, and line disciplines for the
ports, and to connect users or applications to services associated with
the ports. Normally, ttymon is configured to run under the Service
Access Controller, sac(1M), as part of the Service Access Facility
(SAF). It is configured using the sacadm(1M) command. Each instance of
ttymon can monitor multiple ports. The ports monitored by an instance
of ttymon are specified in the port monitor's administrative file. The
administrative file is configured using the pmadm(1M) and ttyadm(1M)
commands. When an instance of ttymon is invoked by the sac command, it
starts to monitor its ports. For each port, ttymon first initializes
the line disciplines, if they are specified, and the speed and terminal
settings. For ports with entries in /etc/logindevperm, device owner,
group and permissions are set. (See logindevperm(4).) The values used
for initialization are taken from the appropriate entry in the TTY set‐
tings file. This file is maintained by the sttydefs(1M) command.
Default line disciplines on ports are usually set up by the auto‐
push(1M) command of the Autopush Facility.
ttymon then writes the prompt and waits for user input. If the user
indicates that the speed is inappropriate by pressing the BREAK key,
ttymon tries the next speed and writes the prompt again. When valid
input is received, ttymon interprets the per-service configuration file
for the port, if one exists, creates a utmpx entry if required (see
utmpx(4)), establishes the service environment, and then invokes the
service associated with the port. Valid input consists of a string of
at least one non-newline character, terminated by a carriage return.
After the service terminates, ttymon cleans up the utmpx entry, if one
exists, and returns the port to its initial state.
If autobaud is enabled for a port, ttymon will try to determine the
baud rate on the port automatically. Users must enter a carriage return
before ttymon can recognize the baud rate and print the prompt. Cur‐
rently, the baud rates that can be determined by autobaud are 110,
1200, 2400, 4800, and 9600.
If a port is configured as a bidirectional port, ttymon will allow
users to connect to a service, and, if the port is free, will allow
uucico(1M), cu(1C), or ct(1C) to use it for dialing out. If a port is
bidirectional, ttymon will wait to read a character before it prints a
prompt.
If the connect-on-carrier flag is set for a port, ttymon will immedi‐
ately invoke the port's associated service when a connection request is
received. The prompt message will not be sent.
If a port is disabled, ttymon will not start any service on that port.
If a disabled message is specified, ttymon will send out the disabled
message when a connection request is received. If ttymon is disabled,
all ports under that instance of ttymon will also be disabled.
Service Invocation
The service ttymon invokes for a port is specified in the ttymon admin‐
istrative file. ttymon will scan the character string giving the ser‐
vice to be invoked for this port, looking for a %d or a %% two-charac‐
ter sequence. If %d is found, ttymon will modify the service command to
be executed by replacing those two characters by the full path name of
this port (the device name). If %% is found, they will be replaced by a
single %. When the service is invoked, file descriptor 0, 1, and 2 are
opened to the port device for reading and writing. The service is
invoked with the user ID, group ID and current home directory set to
that of the user name under which the service was registered with tty‐
mon. Two environment variables, HOME and TTYPROMPT, are added to the
service's environment by ttymon. HOME is set to the home directory of
the user name under which the service is invoked. TTYPROMPT is set to
the prompt string configured for the service on the port. This is pro‐
vided so that a service invoked by ttymon has a means of determining if
a prompt was actually issued by ttymon and, if so, what that prompt
actually was.
See ttyadm(1M) for options that can be set for ports monitored by tty‐
mon under the Service Access Controller.
System Console Invocation
The invocation of ttymon on the system console is managed under smf(5)
by the service svc:/system/console-login. It provides a number of prop‐
erties within the property group ttymon to control the invocation, as
follows:
NAME TYPE TTYMON OPTION
----------------------------------------------------------
device astring [-d device]
nohangup boolean [-h]
label astring [-l label]
modules astring [-m module1,module2]
prompt astring [-p prompt]
timeout count [-t timeout]
terminal_type astring [-T termtype]
If any value is the empty string or an integer set to zero, then the
option is not passed to the ttymon invocation. The -g option is always
specified for this invocation. The -d option always defaults to
/dev/console if it is not set.
See EXAMPLES.
SECURITY
ttymon uses pam(3PAM) for session management. The PAM configuration
policy, listed through /etc/pam.conf, specifies the modules to be used
for ttymon. Here is a partial pam.conf file with entries for ttymon
using the UNIX session management module.
ttymon session required /usr/lib/security/pam_unix_session.so.1
If there are no entries for the ttymon service, then the entries for
the "other" service will be used.
OPTIONS
The following options are supported:
-g
A special invocation of ttymon is provided with the -g
option. This form of the command should only be called by
applications that need to set the correct baud rate and
terminal settings on a port and then connect to login
service, but that cannot be pre-configured under the SAC.
The following combinations of options can be used with
-g:
-ddevice
device is the full path name of the port to which ttymon
is to attach. If this option is not specified, file
descriptor 0 must be set up by the invoking process to a
TTY port.
-h
If the -h flag is not set, ttymon will force a hangup on
the line by setting the speed to zero before setting the
speed to the default or specified speed.
-lttylabel
ttylabel is a link to a speed and TTY definition in the
ttydefs file. This definition tells ttymon at what speed
to run initially, what the initial TTY settings are, and
what speed to try next if the user indicates that the
speed is inappropriate by pressing the BREAK key. The
default speed is 9600 baud.
-mmodules
When initializing the port, ttymon will pop all modules
on the port, and then push modules in the order speci‐
fied. modules is a comma-separated list of pushable mod‐
ules. Default modules on the ports are usually set up by
the Autopush Facility.
-pprompt
Allows the user to specify a prompt string. The default
prompt is Login:.
-ttimeout
Specifies that ttymon should exit if no one types any‐
thing in timeout seconds after the prompt is sent.
-Ttermtype
Sets the TERM environment variable to termtype.
EXAMPLES
Example 1 Setting the Terminal Type
The following example sets the value of the terminal type (-T) option
for the system console ttymon invocation:
svccfg -s svc:/system/console-login setprop \
ttymon/terminal_type = "xterm"
svcadm refresh svc:/system/console-login:default
ENVIRONMENT VARIABLES
If any of the LC_* variables ( LC_CTYPE, LC_MESSAGES, LC_TIME, LC_COL‐
LATE, LC_NUMERIC, and LC_MONETARY ) (see environ(5)) are not set in the
environment, the operational behavior of ttymon for each corresponding
locale category is determined by the value of the LANG environment
variable. If LC_ALL is set, its contents are used to override both the
LANG and the other LC_* variables. If none of the above variables is
set in the environment, the "C" (U.S. style) locale determines how tty‐
mon behaves.
LC_CTYPE
Determines how ttymon handles characters. When LC_CTYPE is
set to a valid value, ttymon can display and handle text
and filenames containing valid characters for that locale.
ttymon can display and handle Extended Unix Code (EUC)
characters where any individual character can be 1, 2, or 3
bytes wide. ttymon can also handle EUC characters of 1, 2,
or more column widths. In the "C" locale, only characters
from ISO 8859-1 are valid.
FILES
/etc/logindevperm
The command-line syntax is Stable. The SMF properties are Evolving.
SEE ALSOct(1C), cu(1C), autopush(1M), pmadm(1M), sac(1M), sacadm(1M), stty‐
defs(1M), ttyadm(1M), uucico(1M), pam(3PAM), logindevperm(4),
pam.conf(4), utmpx(4), attributes(5), environ(5), pam_authtok_check(5),
pam_authtok_get(5), pam_authtok_store(5), pam_dhkeys(5),
pam_passwd_auth(5), pam_unix_account(5), pam_unix_auth(5),
pam_unix_session(5), smf(5)NOTES
If a port is monitored by more than one ttymon, it is possible for the
ttymons to send out prompt messages in such a way that they compete for
input.
The pam_unix(5) module is no longer supported. Similar functionality is
provided by pam_authtok_check(5), pam_authtok_get(5), pam_auth‐
tok_store(5), pam_dhkeys(5), pam_passwd_auth(5), pam_unix_account(5),
pam_unix_auth(5), and pam_unix_session(5).
Feb 22, 2005 TTYMON(1M)