.\" $NetBSD: lmcconfig.8,v 1.1 2005/12/06 03:12:35 christos Exp $ .\" .\" Copyright (c) 2003 David Boggs. (boggs@boggs.palo-alto.ca.us) .\" All rights reserved. .\" .\" BSD License: .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" GNU General Public License: .\" .\" This program is free software; you can redistribute it and/or modify it .\" under the terms of the GNU General Public License as published by the Free .\" Software Foundation; either version 2 of the License, or (at your option) .\" any later version. .\" .\" This program is distributed in the hope that it will be useful, but WITHOUT .\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or .\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for .\" more details. .\" .\" You should have received a copy of the GNU General Public License along with .\" this program; if not, write to the Free Software Foundation, Inc., 59 .\" Temple Place - Suite 330, Boston, MA 02111-1307, USA. .\" .\" I forget these things: .\" groff -Tascii -mdoc lmcconfig.8 > lmcconfig.txt .\" groff -Tps -mdoc lmcconfig.8 > lmcconfig.ps .\" groff -Thtml -mdoc lmcconfig.8 > lmcconfig.html (buggy) .\" .Dd October 2005 .Dt LMCCONFIG 8 .Os .Sp .Sh NAME .Sp .Nm lmcconfig .Nd configuration program for .Tn SBE (formerly .Tn LMC ) wide-area network interface cards. .Sp .Sh SYNOPSIS .Sp .Nm .Ar interface .Op Fl abBcCdDeEfhLmMpPrsStTuwxXyYzZ? .br .Nm .Ar interface .Fl 1 .Op Fl aABceEfFgiIlLpPstTuUxX .br .Nm .Ar interface .Fl 3 .Op Fl aABcefFlLsSv .Sp .Sh DESCRIPTION .Sp .Nm is the configuration program for the .Xr lmc 4 wide-area network device driver. It sets control values, such as T3 framing format, and it displays status, such as that of integrated modems, that are beyond the scope of .Xr ifconfig 8 . .Pp .Nm displays the interface status when no parameters are specified; see example below. For this case only, if no .Ar interface is specified, it defaults to .Ic lmc0 . .Pp Only the super-user may modify the configuration of a network interface. .Pp The following options are available: .Bl -tag -width indent .It Ar interface This is the name of the interface; the default is .Cm lmc0 . If .Xr netgraph 4 is present and the interface name ends with a colon then netgraph control messages are used, otherwise the .Xr ifnet 9 kernel interface and socket .Xr ioctl 2 system calls are used. .It Fl 1 All parameters after this apply to the T1E1 card. .It Fl 3 All parameters after this apply to the T3 card. .El .Sp .Ss Commands for all cards .Sp The following parameters apply to more then one card type. .Bl -tag -width indent .It Fl a Ar number Set Transmitter clock source to .Ar number . .Bl -column "1" "External connector" "T1E1, HSSIc" -offset 2m -compact .It "1" Ta "TxClk from modem" Ta "T1E1, HSSI" Ta "default" .It "2" Ta "Internal source" Ta "T1E1, HSSI" .It "3" Ta "RxClk from modem" Ta "T1E1, HSSIc" Ta "loop timed" .It "4" Ta "External connector" Ta "T1E1, HSSIc" .El .Pp An HSSI card normally takes its Tx clock from the modem connector (it is a DTE) but can use the PCI bus clock (typically 33 MHz) for loopback and null modem testing; values 3 and 4 are only applicable to a few rare CompactPCI/HSSI cards. .Pp A T1E1 card uses an on-board synthesized oscillator if the value is 1 or 2; it .Em loop times (uses the clock recovered by the receiver as the transmitter clock) if the value is 3; and it uses a clock from a header connector on the card if the value is 4. .Pp TxClk source is not applicable to other card types. .It Fl b Read BIOS rom. Print the first 256 locations. The BIOS rom is not used and not present on some cards. .It Fl B Write BIOS rom. Write the first 256 locations with an address pattern. .It Fl c Use HDLC's 16-bit CRC polynomial: X^16+X^12+X^5+1 (default) .Bd -ragged -compact .It Fl C Use HDLC's 32-bit CRC polynomial: X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X+1 .Ed .It Fl d Clear the driver-level debug flag. Non-critical log messages are suppressed. .It Fl D Set the driver-level debug flag. The driver generates more log messages. The driver also generates more log messages if the interface-level debug flag is set by .Xr ifconfig 8 . .It Fl e Set DTE (Data Terminal Equipment) mode (default). An SSI card transmitter uses the Tx clock signal from the modem connector and receives the Data Carrier Detect pin (DCD). DTE/DCE is not applicable to other card types except a few rare CompactPCI/HSSI cards. .It Fl E Set DCE (Data Communication Equipment) mode. An SSI card transmitter uses an on-board synthesized oscillator and drives the Data Carrier Detect pin (DCD). .It Fl f Ar number Set the frequency of the built-in synthesized oscillator to .Ar number bits/second. The nearest frequency that the synthesizer can generate will be used. Only SSI cards and a few rare CompactPCI/HSSI cards have synthesizers. .It Fl F Set SPPP line protocol to Frame-Relay. Only works for FreeBSD-5.4 and later. Not applicable to Linux, NetBSD, OpenBSD. or BSD/OS. .It Fl h Print help (usage message). .It Fl i Set interface name (eg. 'lmc0'). .It Fl L Ar number Set loopback mode to .Ar number . .Bl -column "99" "payload" "inward thru drvrs/rcvrsxxx" "HSSI, SSI" -offset 1m -compact .It "1" Ta "none" Ta "default" .It "2" Ta "payload" Ta "outward thru framer" Ta "T1E1. T3" .It "3" Ta "line" Ta "outward thru line if" Ta "T1E1, T3, HSSIc" .It "4" Ta "other" Ta "inward thru line if" Ta "T1E1, T3" .It "5" Ta "inward" Ta "inward thru framer" Ta "T1E1, T3" .It "6" Ta "dual" Ta "inward and outward" Ta "T1E1, T3" .It "16" Ta "tulip" Ta "inward thru Tulip chip" Ta "all cards" .It "17" Ta "pins" Ta "inward thru drvrs/rcvrs" Ta "SSI" .It "18" Ta "LA/LL" Ta "assert LA/LL modem pin" Ta "HSSI, SSI" .It "19" Ta "LB/RL" Ta "assert LB/RL modem pin" Ta "HSSI, SSI" .El .It Fl m Read Tulip MII registers. Print the 32 16-bit registers in the Media Independent Interface. .It Fl M Ar addr Ar data Write Tulip MII register. Write .Ar data into register .Ar addr . .It Fl p Read Tulip PCI configuration registers. Print the first 16 32-bit registers in the PCI configuration space. .It Fl P Ar addr Ar data Write Tulip PCI configuration register. Write .Ar data into register .Ar addr . .It Fl s Read Tulip SROM. Print the 64 16-bit locations. The PCI subsystem vendor and device IDs are kept here. .It Fl S Ar number Write Tulip SROM. Initializes the Tulip SROM to card type .Ar number . .Bl -tag -width 1m -offset 1m -compact .It 3 Ta HSSI .It 4 Ta T3 .It 5 Ta SSI .It 6 Ta T1E1 .It 7 Ta HSSIc .It 8 Ta SDSL .It 0 Ta auto-set from MII PHYID .El If .Ar number is zero, then the card type is computed from the gate array microcode version field in the MII PHYID register. .Em CAUTION : if the SROM is incorrect, the card will be unusable! This command is .Em so dangerous that lmcconfig must be edited and recompiled to enable it. .It Fl t Read Tulip CSRs. Print the 16 32-bit control and status registers. .It Fl T Ar addr Ar data Write Tulip CSR. Write .Ar data into csr number .Ar addr . Note that addr is a CSR number (0-15) not a byte offset into CSR space. .It Fl u Reset event counters to zero. The driver counts events like packets in and out, errors, discards, etc. The time when the counters are reset is remembered. .It Fl U Reset gate array. Not needed during normal operation; just for testing. .It Fl v Set verbose mode: print more stuff. .It Fl V Print the card configuration -- see the EXAMPLES section. .It Fl w Load gate array from on-board rom. Not needed during normal operation; just for testing. .It Fl W Ar filename Load gate array microcode from .Ar filename . .It Fl x Select RAWIP mode -- bypass line protocol code. .It Fl X Select line protocol code rather than RAWIP mode. .It Fl y Disable SPPP keep-alive packets, Only works for FreeBSD, NetBSD and OpenBSD. Not applicable to Linux or BSD/OS. .It Fl Y Enable SPPP keep-alive packets. Only works for FreeBSD, NetBSD and OpenBSD. Not applicable to Linux or BSD/OS. .It Fl z Set SPPP line protocol to Cisco-HDLC. Only works for FreeBSD, NetBSD and OpenBSD. Not applicable to Linux or BSD/OS. .It Fl Z Set SPPP line protocol to PPP. Only works for FreeBSD, NetBSD and OpenBSD. Not applicable to Linux or BSD/OS. .It Fl ? Print help (usage message). .El .Sp .Ss Commands for T1E1 cards .Sp The following parameters apply to the T1E1 card type: .Bl -tag -width indent .It Fl a Ar y|a|b Stop sending alarm signal. .Bl -column "y" "Yellow Alarm" "unframed all ones; aka AIS" -offset 1m -compact .It "y" Ta "Yellow Alarm" Ta "varies with framing" .It "a" Ta "Red Alarm" Ta "unframed all ones; aka AIS" .It "b" Ta "Blue Alarm" Ta "unframed all ones" .El Red alarm, also known as AIS (Alarm Indication Signal), and Blue alarm are identical in T1. .It Fl A Ar y|a|b Start sending alarm signal (see table above). .It Fl B Ar number Send a Bit Oriented Protocol (BOP) message with code .Ar number. BOP codes are six bits. .It Fl c Ar number Set cable length to .Ar number meters (default: 10 meters). This is used to set receiver sensitivity and transmitter line build-out. .It Fl d Print the status of the on-board DSU/CSU -- see the EXAMPLES section. .It Fl e Ar number Set the framing format to .Ar number : .Bl -tag -width 1m -offset 1m -compact .It 9 Ta T1-SF/AMI .It 27 Ta T1-ESF/B8ZS (default) .It 0 Ta E1-FAS .It 8 Ta E1-FAS+CRC .It 16 Ta E1-FAS+CAS .It 24 Ta E1-FAS+CRC+CAS .It 32 Ta E1-NO-framing .El .It Fl E Ar number Enable 64Kb time slots (TSs) for the T1E1 card. .Ar number is a 32-bit hex number (default 0xFFFFFFFF). The LSB is TS0 and the MSB is TS31. TS0 and TS25-31 are ignored in T1 mode. TS0 and TS16 are determined by the framing format in E1 mode. .It Fl f Read framer registers. Print the 512 8-bit registers in the framer chip. .It Fl F Ar addr Ar data Write framer register. Write .Ar data into register .Ar addr . .It Fl g Ar number Set receiver gain range to .Ar number : .Bl -column "0x00" "Medium" "auto-set based on cable length (default)" -offset 1m -compact .It "0x24" Ta "Short" Ta "0 to 20 dB of equalized gain" .It "0x2C" Ta "Medium" Ta "0 to 30 dB of equalized gain" .It "0x34" Ta "Long" Ta "0 to 40 dB of equalized gain" .It "0x3F" Ta "Extend" Ta "0 to 64 dB of equalized gain (wide open)" .It "0xFF" Ta "Auto" Ta "auto-set based on cable length (default)" .El This sets the level at which .Em Loss-Of-Signal is declared. .It Fl i Send a .Em CSU loopback deactivate inband command (T1-SF only). .It Fl I Send a .Em CSU loopback activate inband command (T1-SF only). .It Fl l Send a .Em line loopback deactivate BOP message (T1-ESF only). .It Fl L Send a .Em line loopback activate BOP message (T1-ESF only). .It Fl p Send a .Em payload loopback deactivate BOP message (T1-ESF only). .It Fl P Send a .Em payload loopback activate BOP message (T1-ESF only). .It Fl s Print the status of the on-board DSU/CSU -- see the EXAMPLES section. .It Fl t Stop sending test pattern. .It Fl T Ar number Start sending test pattern .Ar number : .Bl -tag -width 1m -offset 1m -compact .It 0 Ta unframed X^11+X^9+1 .It 1 Ta unframed X^15+X^14+1 .It 2 Ta unframed X^20+X^17+1 .It 3 Ta unframed X^23+X^18+1 .It 4 Ta unframed X^11+X^9+1 with 7ZS .It 5 Ta unframed X^15+X^14+1 with 7ZS .It 6 Ta unframed X^20+X^17+1 with 14ZS (QRSS) .It 7 Ta unframed X^23+X^18+1 with 14ZS .It 8 Ta framed X^11+X^9+1 .It 9 Ta framed X^15+X^14+1 .It 10 Ta framed X^20+X^17+1 .It 11 Ta framed X^23+X^18+1 .It 12 Ta framed X^11+X^9+1 with 7ZS .It 13 Ta framed X^15+X^14+1 with 7ZS .It 14 Ta framed X^20+X^17+1 with 14ZS (QRSS) .It 15 Ta framed X^23+X^18+1 with 14ZS .El .It Fl u Ar number Set transmit pulse shape to .Ar number : .Bl -tag -width 1m -offset 1m -compact .It 0 Ta T1 DSX 0 to 40 meters .It 2 Ta T1 DSX 40 to 80 meters .It 4 Ta T1 DSX 80 to 120 meters .It 6 Ta T1 DSX 120 to 160 meters .It 8 Ta T1 DSX 160 to 200 meters .It 10 Ta E1 75-ohm coax pair .It 12 Ta E1 120-ohm twisted pairs .It 14 Ta T1 CSU 200 to 2000 meters; set LBO .It 255 Ta auto-set based on cable length and framing format (default) .El .It Fl U Ar number Set transmit line build-out to .Ar number : .Bl -column "255" "22.5 dB" "FCC option A" -offset 1m -compact .It " 0" Ta "0 dB" Ta "FCC option A" .It " 16" Ta "7.5 dB" Ta "FCC option B" .It " 32" Ta "15 dB" Ta "FCC option C" .It " 48" Ta "22.5 dB" Ta "final span" .It "255" Ta "auto-set based on cable length (default)" .El This is only applicable if the pulse shape is T1-CSU. .It Fl v Set verbose mode: print more stuff. .It Fl x Disable transmitter outputs. .It Fl X Enable transmitter outputs. .El .Sp .Ss Commands for T3 cards .Sp The following parameters apply to the T3 card type: .Bl -tag -width indent .It Fl a Ar y|a|b|i Stop sending alarm signal. .Bl -column "y" "Yellow Alarm" "framed 1010... aka AIS" -offset 1m -compact .It "y" Ta "Yellow Alarm" Ta "X-bits set to 0" .It "a" Ta "Red Alarm" Ta "framed 1010... aka AIS" .It "b" Ta "Blue Alarm" Ta "unframed all-ones" .It "i" Ta "Idle signal" Ta "framed 11001100..." .El .It Fl A Ar y|a|b|i Start sending alarm signal (see table above). .It Fl B Ar number Send a BOP (Bit Oriented Protocol) message with code .Ar number . BOP codes are six bits. .It Fl c Ar number Set cable length to .Ar number meters (default: 10 meters). This is used to set receiver sensitivity and transmitter line build-out. .It Fl d Print the status of the on-board T3 DSU -- see the EXAMPLES section. .It Fl e Ar number Set the framing format to .Ar number : .Bl -tag -width 1m -offset 1m -compact .It 100 Ta T3-C-bit parity .It 101 Ta T3-M13 format .El .It Fl f Read framer registers. Print the 22 8-bit registers in the framer chip. .It Fl F Ar addr Ar data Write framer register. Write .Ar data into register .Ar addr . .It Fl l Send a .Em line loopback deactivate BOP message. .It Fl L Send a .Em line loopback activate BOP message. .It Fl s Print the status of the on-board T3 DSU -- see the EXAMPLES section. .It Fl S Ar number Set payload scrambler polynominal to .Ar number : .Bl -tag -width 1m -offset 1m -compact .It 1 Ta payload scrambler disabled .It 2 Ta X^43+1: DigitalLink and Kentrox .It 3 Ta X^20+X^17+1 w/28ZS: Larscom .El Payload scrambler polynomials are not standardized. .It Fl v Set verbose mode: print more stuff. .It Fl V Ar number Set transmit frequency offset to .Ar number . Some T3 cards can offset the transmitter frequency from 44.736 MHz. .Ar Number is in the range (0..4095); 2048 is zero offset; step size is about 3 Hz. .Ar Number is written to a Digital-Analog Converter (DAC) which connects to a Voltage Controlled Crystal Oscillator (VCXO). .El .Sp .Ss Event Counters .Sp The device driver counts many interesting events such as packets in and out, errors and discards. The table below lists the event counters and describes what they count. .Bl -tag -width "underruns" .It ibytes Bytes received in packets with good ending status. .It obytes Bytes transmitted. .It ipackets Packets received with good ending status. .It opackets Packets transmitted. .It ierrors Packets received with bad ending status. .It oerrors Packets transmitted with bad ending status. .It idiscards Packets received but discarded because the input queue was full or the interface was down. .It odiscards Packets presented for transmission but discarded because the output queue was full or the interface was down. .It txdma Packets presented for transmission but queued and retried later because no DMA descriptors were available. This can happen during normal operation and is not an indication of trouble. .It fifo-overrun Packets that started to arrive, but were aborted because the card was unable to DMA data to memory fast enough to prevent the receiver fifo from overflowing. .It fifo-underrun Packets that started to transmit but were aborted because the card was unable to DMA data from the memory fast enough to prevent the transmitter fifo from underflowing. When this happens, the transmitter threshold is increased, so that more bytes are required to be in the fifo before the transmitter is started. .It missed Packets that are missed because the receiver is stopped. .It overruns Packets that are missed because the receiver had no DMA descriptors available. .It fdl_pkts Packets received on the T1 Facility Data Link. .It crc-errs Cyclic Redundancy Checksum errors detected by the CRC-6 in T1 Extended SuperFrames (ESF) or the CRC-4 in E1 frames. .It lcv-errs Line Coding Violation errors: Alternate Mark Inversion (AMI) errors for T1-SF, Bipolar 8-Zero Substitution (B8ZS) errors for T1-ESF, or High Density Bipolar with 3-Zero Substitution (HDB3) errors for E1 or Bipolar 3-Zero Substitution (B3ZS) errors for T3. .It frm-errs T1 or T3 bit errors in the frame alignment signal. .It febe-errs Far End Block Errors: T1 or T3 bit errors detected by the device at the far end of the link. .It par-errs T3 bit errors detected by the hop-by-hop parity mechanism. .It cpar-errs T3 bit errors detected by the end-to-end parity mechanism. .It mfrm-errs T3 bit errors in the multi-frame alignment signal. .El .Sp .Ss Transmit Speed .Sp The hardware counts transmit clocks divided by 2048. The software computes "Tx speed" from this (see examples below). The transmit clock is the bit rate of the circuit divided by two if the circuit is idle and divided by four if the circuit is carrying a packet. So an idle circuit reports a Tx speed equal to its bit rate, and a busy circuit reports a Tx speed equal to half its bit rate. .Pp This "bit rate" does not include circuit-level overhead bits (such as T1 or T3 frame bits) but does include HDLC stuff bits. An idle T1 circuit with a raw bit rate of 1544000 and a bit-rate-minus-overhead of 1536000 will report a "Tx speed" of ((1536000 bitand 4095) plus or minus 4096). Sometimes it will even get the correct answer of 1536000, and if the link is fully loaded it will report about 768000 bits/sec. .Pp It's not a perfect bit rate meter (the circuit must be idle), but it is a useful circuit utilization meter if you know the circuit bit rate and do some arithmetic. Software recalculates Tx speed once a second; the measurement period has some jitter. .Sp .Sh EXAMPLES .Sp .Bd -unfilled -compact When lmc0 is a T1E1 card, .br .Ic lmcconfig lmc0 generates the following output: .Ed .Bd -literal -offset 2m -compact Card name: lmc0 Card type: SBE/LMC T1E1 card Link status: Up Tx Speed: 1548288 Line Prot/Pkg: Frame-Relay/SPPP SPPP Keep-alives: OFF CRC length: 16 bits Loopback: None Tx Clk src: Internal source Format-Frame/Code: T1-ESF/B8ZS TimeSlot [31-0]: 0x01FFFFFE Cable length: 10 meters Tx pulse shape: auto-set to T1-DSX: 0 to 40 meters Rx gain max: auto-set to 20.0 dB Current time: Thu Sep 29 21:48:51 2005 Cntrs reset: Thu Sep 29 16:21:05 2005 RX bytes: 15053836 RX packets: 23271 TX bytes: 1732169 TX packets: 20526 Rx fdl pkts: 5443 .Ed .Bd -unfilled When lmc0 is a T1E1 card, .br .Ic lmcconfig lmc0 -1 -d generates the following output: .Ed .Bd -literal -offset 2m -compact Format-Frame/Code: T1-ESF/B8ZS TimeSlot [31-0]: 0x01FFFFFE Tx Clk src: Internal source Tx Speed: 1548288 Tx pulse shape: T1-DSX: 0 to 40 meters Tx outputs: Enabled Line impedance: 100 ohms Max line loss: 20.0 dB Cur line loss: 3.1 dB Invert data: No Line loop: No Payload loop: No Framer loop: No Analog loop: No Tx AIS: No Rx AIS: No Tx BOP RAI: No Rx BOP RAI: No Rx LOS analog: No Rx LOS digital: No Rx LOF: No Tx QRS: No Rx QRS: No LCV errors: 0 CRC errors: 0 Frame errors: 0 Sev Err Frms: 0 Change of Frm align: 0 Loss of Frame events: 0 Last Tx BOP msg: 0x00 (Yellow Alarm (far end LOF)) Last Rx BOP msg: 0x00 (Yellow Alarm (far end LOF)) SNMP Near-end performance data: LCV=0 LOS=0 FE=0 CRC=0 AIS=0 SEF=0 OOF=0 RAI=0 ANSI Far-end performance reports: SEQ=1 CRC=0 SE=0 FE=0 LV=0 SL=0 LB=0 SEQ=0 CRC=0 SE=0 FE=0 LV=0 SL=0 LB=0 SEQ=3 CRC=0 SE=0 FE=0 LV=0 SL=0 LB=0 SEQ=2 CRC=0 SE=0 FE=0 LV=0 SL=0 LB=0 .Ed .Sp .Sh DIAGNOSTICS .Sp Messages indicating the specified interface does not exist, or the user is not privileged and tried to alter an interface's configuration. .Sp .Sh SEE ALSO .Sp .Xr ioctl 2 , .Xr netgraph 4 , .Xr lmc 4 , .Xr ifconfig 8 , .Xr ifnet 9 . .Pp .Pa http://www.sbei.com . .Sp .Sh HISTORY .Sp This is a total rewrite of the program lmcctl by Andrew Stanley-Jones. .Sp .Sh AUTHOR .Sp .An "David Boggs" Aq boggs@boggs.palo-alto.ca.us .