GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
COMSERVD(8) FreeBSD System Manager's Manual COMSERVD(8)

comservd
make network terminal server serial ports accessible via /dev

comservd [-f config_file]

The comservd program provides a facility to access network terminal server serial ports, such as those available on Xyplex terminal server models, via /dev device file entries. This allows programs such as tip(1) to access devices connected to the terminal server serial ports. Comservd can also serve local serial ports to remote systems via the network, turning the local system into a network terminal server with respect to its own local serial ports. At startup, comservd loads and executes commands from its configuration file.

The options are as follows:

config_file
At startup, read configuration commands from the file config_file instead of the default /usr/local/etc/comservd.conf.

The configuration file should contain the commands required to tell comservd what terminal server ports to attach to and name the local device file used to access those ports. It also contains which local serial ports the localhost will serve out via the network, making it function like a terminal server itself. See below for a few examples. The complete list of valid commands are:

devid devname host hwport tcpport logspec
Add a remote endpoint to local enpoint mapping. This associates the device file named by devname with the terminal server, serial port, and tcp port named by host, hwport and tcpport. If devname is not an absolute path, it is taken relative to the path specified by the devdir command. comservd creates the device name named by devname which is a symbolic link to the slave side of a pty(4) device. comservd opens the master side of the pty(4) pair. Logspec may be log, nolog, or a filename. If log is used, the log file is the same as was specified for the device id and is relative to the path specified by the logdir command. If anything other than log or nolog is used, it is treated as a filename. Relative filenames are treated relative to the path specified by the logdir command.
devid devname
Add a control port to local enpoint mapping. This allows one to establish a direct local command mode connection to the daemon on the specified device file named by devname.
path
Specify the default path to place symbolic links to pty(4) device files. The devdir path is the default location for relative device names specified in the devname field of the add command.
List local and remote endpoint connections.
, ?
Print a list of valid commands.
List all device ids and their corresponding device and log files.
path
Specify the default path to place session log files. The logdir path is the default directory to place log files specified in the logspec field of the add command. Each connection may have a log file to which the data flow is logged.
Quit command mode and disconnect from the daemon.
Restart the daemon.
devid devname hwport tcpport logspec
Specify a local serial port to serve over the network at the specified TCP port. The serial port is named by devname, with the serial port number specified by hwport. The hwport value is actually not used by comservd except for display purposes. The TCP port number is given by tcpport. If devname is not an absolute path, it is taken relative to the path specified by the devdir command. Unlike the add command, serve does not create the device named by devname. Instead, devname must be a real device and must already exist. comservd creates a network socket and binds it to the specified TCP port and then listens for incoming connections. When an incoming connection is made, comservd passes data between the network connection and the local device. Logspec serves the same purpose as in the add command above.
devid parmeter = value
Set operation parameters for the device referenced by device named by devid. The special devid global refers to parameters that affect all connections. Valid paremeter values are:
Valid values for the options parameter are:
, nowait
for data on the local side before initiating a connection to the remote side. nowait is appropriate if the remote side functions independently of the local side, such as when the remote side is a serial system console. The default is nowait.
, noblock
the producing side if the receiving side can't receive the data immediately. When noblock is in effect, data is lost if the receiver is not ready. Regardless of the whether block or noblock is in effect, all data is properly written in the log file if logging is enabled. noblock is appropriate when the producing side must be able to continue even if there is not a process on the receiving side to see the data. Examples include when the remote side is a serial system console. block is appropriate when reliable transmission of all data between the local and remote sides is required, even if it means blocking one of the sides until the other can consume the data. The default is block.
, nologall
When logall is specified, comservd will log all data originating from the local side of the connection as well as data originating from the remote side of the connection to the log file. When nologall is in effect, comservd will log only data originating from the remote side of the connection. Use nologall for most cases. The logall option is useful when debugging a protocol stream between two devices. The default is nologall.
, nologhex
When loghex is in effect, comservd will write its data to the log file in hexadecimal format as well as provide an ASCII representation and identify the source of the data, either remote or local. loghex is useful for debugging a protocol stream between two devices. nologhex is appropriate when only ASCII data is present. The default is nologhex.
The verbose variable takes a numeric value, and the higher the value, the more verbose the output of comservd. At present, any setting of 1 or greater will enable all informational messages.

The special device id global is available for setting global options which are used as defaults for new device ids.

devid
Show operational settings for the device id specified by devid.
Shutdown the server.
Display the revision timestamp. This information is very useful to include in bug reports.

comservd can be used for many applications. One of the more common applications is using comservd to provide access to serial system consoles. A Xyplex MAXserver 1600 has 16 serial ports which can be connected to the serial console of your system. The example below provides the setup:
#
# /usr/local/etc/comservd.conf
# Configuration file for serial consoles
# Host terminal server is named xyplex1

# Specify default directory for device log files and for device symlinks.
logdir /usr/local/comserv/log
devdir /usr/local/comserv/dev

# Define a control port
ctl comserv comserv

# Don't block the remote side of a connection if there is no one
# listening locally.
set default options=noblock

# Serve up our own com1 and com2 serial ports for remote access at
# ports 2100 and 2200 respectively.
#
#       DevId      Device  Com#  TCP/IP Port  LogFile Spec
#       -----  ----------  ----  -----------  ------------
serve   com1   /dev/cuaa0     1         2100  nolog
serve   com2   /dev/cuaa1     2         2200  nolog

# Add device nodes to point to the first 4 serial ports of 'xyplex1'.
#
#   DevId  Device   TermSrv   Termsrv        TermSrv  LogFile
#          Symlink  Hostname   Port #  TCP/IP Port #     Spec
#   -----  -------  --------  -------  -------------  -------
add  srv1     srv1   xyplex1        1           2100  log
add  srv2     srv2   xyplex1        2           2200  log
add  srv3     srv3   xyplex1        3           2300  log
add  srv4     srv4   xyplex1        4           2400  log

Add the following entries to /etc/remote:

comserv:dv=/usr/local/comserv/dev/comserv:br#9600:pa=none
srv1:dv=/usr/local/comserv/dev/srv1:br#9600:pa=none
srv2:dv=/usr/local/comserv/dev/srv2:br#9600:pa=none
srv3:dv=/usr/local/comserv/dev/srv3:br#9600:pa=none
srv4:dv=/usr/local/comserv/dev/srv4:br#9600:pa=none

One can now use a program like tip(1) to connect to comserv and issue commands or connect to srv1-srv4 and attach to the console of the respective machine. The console log files are placed in /usr/local/comserv/log/srv1-srv4. Additionally, one can connect to TCP ports 2100 and 2200 of the system running comservd and to access its local serial ports.

To use comservd to debug the data stream between two devices, set up the device entry as follows in /usr/local/etc/comservd.conf:

ctl comserv comserv
add ppp ppp xyplex1 1 2100 log
set ppp options=block,logall,loghex

The log file /usr/local/comserv/log/ppp will contain the data transmission log of the form:

L  7e ff 7d 23 c0 21 7d 21  7d 21 7d 20 7d 2e 7d 25  |~.}#.!}!}!} }.}%|
L  7d 26 89 4b f6 e5 7d 27  7d 22 7d 28 7d 22 7d 2b  |}&.K..}'}"}(}"}+|
L  f3 7e                                             |.~              |
R  7e ff ff 7d 23 c0 21 7d  21 7d 25 7d 20 7d 34 7d  |~..}#.!}!}%} }4}|
R  22 7d 26 7d 20 7d 2a 7d  20 7d 20 7d 25 7d        |"}&} }*} } }%}  |
R  26 7d 25 7d 24 92 70 7d  27 7d 22 7d 28 7d 22 bb  |&}%}$.p}'}"}(}".|
R  c8 7e                                             |.~              |
L  7e ff 7d 23 c0 21 7d 21  7d 21 7d 20 7d 2e 7d 25  |~.}#.!}!}!} }.}%|
L  7d 26 89 4b f6 e5 7d 27  7d 22 7d 28 7d 22 7d 2b  |}&.K..}'}"}(}"}+|
L  f3 7e                                             |.~              |

Data prefixed with L originate from the local endpoint, while data prefixed with R originate from the remote side.

/usr/local/etc/comservd.conf
Configuration file.
/usr/local/etc/comservd.conf.sample
Sample configuration file.
/usr/local/comserv/log
Default directory for session logs.
/usr/local/comserv/dev
Default directory for device symlinks.

pty(4), remote(5), syslogd(8), tip(1)

Brian S. Dean <bsd@FreeBSD.org>

Please send bug reports to bsd@FreeBSD.org.
May 14, 2002 BSD 4.4

Search for    or go to Top of page |  Section 8 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.