summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2003-12-03 17:09:41 +0000
committerimp <imp@FreeBSD.org>2003-12-03 17:09:41 +0000
commit73d89551dc0595c595b217d9ae46cec9c9852b18 (patch)
tree6133ead878f39e11b21a8a0da2e775a4c8393d2e
parentcb07f8075e5f329b86c69cce72fb733c33cb24c0 (diff)
downloadFreeBSD-src-73d89551dc0595c595b217d9ae46cec9c9852b18.zip
FreeBSD-src-73d89551dc0595c595b217d9ae46cec9c9852b18.tar.gz
Remove old cxconfig utility and connect new sconfig utility to the build.
The sconfig utility supports more than just cx boards, and those drivers will make their way into FreeBSD shortly (maybe before 5.2). Confirmed that this doesn't break the build. Submitted by: Roman Kurakin <rik@cronyx.ru> Approved by: re@ <scottl>
-rw-r--r--sbin/Makefile2
-rw-r--r--sbin/cxconfig/Makefile6
-rw-r--r--sbin/cxconfig/cxconfig.8329
-rw-r--r--sbin/cxconfig/cxconfig.c768
4 files changed, 1 insertions, 1104 deletions
diff --git a/sbin/Makefile b/sbin/Makefile
index 71e5440..5e49d8f 100644
--- a/sbin/Makefile
+++ b/sbin/Makefile
@@ -102,7 +102,7 @@ SUBDIR+=vinum
.endif
.if ${MACHINE_ARCH} == "i386"
-SUBDIR+=cxconfig
+SUBDIR+=sconfig
.if ${MACHINE} == "pc98"
SUBDIR+=fdisk_pc98
.else
diff --git a/sbin/cxconfig/Makefile b/sbin/cxconfig/Makefile
deleted file mode 100644
index e851ec9..0000000
--- a/sbin/cxconfig/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# $FreeBSD$
-
-PROG= cxconfig
-MAN= cxconfig.8
-
-.include <bsd.prog.mk>
diff --git a/sbin/cxconfig/cxconfig.8 b/sbin/cxconfig/cxconfig.8
deleted file mode 100644
index 62b06e3..0000000
--- a/sbin/cxconfig/cxconfig.8
+++ /dev/null
@@ -1,329 +0,0 @@
-.\" $FreeBSD$
-.Dd December 2, 1994
-.Dt CXCONFIG 8
-.Os
-.Sh NAME
-.Nm cxconfig
-.Nd channel options management utility for Cronyx-Sigma adapter
-.Sh SYNOPSIS
-.Nm
-.Op Fl a
-.Op Ar <channel> Op Ar <option>...
-.Sh DESCRIPTION
-The
-.Nm
-utility is used for configuring the channel options of
-the Cronyx-Sigma adapter.
-.Pp
-To change channel options the channel should be free: the corresponding
-network interface in ``down'' state, the asynchronous terminal device
-.Pa /dev/tty*
-closed.
-Generally, the channel options are set up during the operating
-system startup, for example from the
-.Pa /etc/rc
-file.
-.Pp
-Note, that not all options have a sense for every particular
-case, and an attempt to set some of them can hang up the channel or
-the whole adapter.
-.Pp
-The following option is available:
-.Bl -tag -width indent
-.It Fl a
-Display full information.
-.El
-.Sh "Channel options"
-.Bl -tag -width 10n
-.It ispeed=#
-Set the receiver baud rate to the number given.
-The maximal value is 256000 bits/sec.
-In the synchronous mode the receiver baud rate is significant
-only when DPLL mode is used.
-.It ospeed=#
-Set the transmitter baud rate to the number given.
-The maximal value is 256000 bits/sec.
-In the synchronous mode the transmitter baud rate is significant
-only in the case of the internal clock source.
-If receiver and transmitter have equal data rate, then it could
-be set by specifying only the numerical argument.
-.It async
-Set the asynchronous channel mode.
-.It "hdlc, bisync, bsc, x.21, x21
-Set the synchronous channel mode: HDLC, Bisync (BSC) or X.21.
-.It ppp
-Set the link-level protocol: PpP/HDLC. The built-in simplified synchronous PPP
-implementation is used (see RFC-1548, RFC-1549).
-.It cisco
-Set the link-level protocol: Cisco/HDLC (see RFC-1547).
-This protocol is intended for compatibility with old models of Cisco routers,
-and with early versions of
-.Tn BSD/386
-drivers.
-The extensive usage of this protocol is not recommended.
-.It ext
-Use the external link-level protocol suite (for
-.Tn BSD/386
-only).
-.It "+keepalive, -keepalive"
-Enable the automatic line state control sub-protocol.
-This setting is not significant when the external link-level protocol is used.
-.It "+autorts, -autorts"
-Enable the automatic RTS signal control.
-When enabled, the RTS signal goes up only when both halves of
-the receiver ring buffer are free and ready for receive,
-and goes down when one or both buffers are busy.
-.It "port=rs232, port=rs449, port=v35
-Set the zero channel hardware interface type.
-.El
-.Sh "Common options"
-.Bl -tag -width 10n
-.It "nrz, nrzi, manchester"
-Set the data line signal encoding.
-In the case of
-.Em NRZ
-encoding the zero bit is transmitted by the zero signal
-level, the one bit - by the positive signal level.
-In the case of
-.Em NRZI
-encoding the zero bit is transmitted by the change of
-the signal level, the one bit - by the constant signal level.
-In the case of
-.Em Manchester
-encoding the zero bit is encoded as 01 value,
-the one bit - as 10 value.
-.It "+dpll, -dpll"
-Enable the digital phase locked loop mode (DPLL).
-When enabled, the receiver timing clock signal
-is derived from the received data.
-.It "+lloop, -lloop"
-Set the local loopback mode.
-.It "+extclock, -extclock"
-Set the timing clock source of synchronous channels. There are
-two possible variants:
-.Em "external clock"
-source or
-.Em "internal clock"
-generation.
-.Pp
-.Em "External clock"
-mode is the most common method for connecting
-external modem hardware. In this mode the external timing
-signal is received on TXCIN pin of the connector, and it is
-used as a synchronization clock for transmitting data (TXD).
-.Pp
-In the case of
-.Em "internal clock"
-mode the transmitted data (TXD)
-are synchronized using the internal on-board timing generator,
-the internally generated timing signal is driven on the TXCOUT
-pin, and the signal on the TXCIN pin is ignored. This mode
-is used for direct terminal-to-terminal communication,
-e.g. for connecting two computers together in a synchronous mode
-via relatively short cable. This method should also be used
-for testing channels with an external loopback connector.
-.It fifo=#
-FIFO threshold level setup for receiver and transmitter.
-.It rfifo=#
-Hardware RTS/CTS flow control FIFO threshold setup.
-.It "+ctsup, -ctsup"
-Enable/disable interrupts on CTS (Clear To Send) signal setup (0 to 1 transition).
-.It "+ctsdown, -ctsdown"
-Enable/disable interrupts on CTS (Clear To Send) signal clear (1 to 0 transition).
-.It "+cdup, -cdup"
-Enable/disable interrupts on CD (Carrier Detect) signal setup (0 to 1 transition).
-.It "+cddown, -cddown"
-Enable/disable interrupts on CD (Carrier Detect) signal clear (1 to 0 transition).
-.It "+dsrup, -dsrup"
-Enable/disable interrupts on DSR (Data Set Ready) signal setup (0 to 1 transition).
-.It "+dsrdown, -dsrdown"
-Enable/disable interrupts on DSR (Data Set Ready) signal clear (1 to 0 transition).
-.El
-.Sh "Asynchronous mode options"
-.Bl -tag -width 10n
-.It cs#
-Select character size: 5, 6, 7 or 8 bits.
-.It "parodd, pareven
-Parity mode: odd or even.
-.It "+ignpar, -ignpar
-Disable/enable parity detection.
-.It nopar
-Disable parity bit generation.
-.It forcepar
-Force parity: even - 0, odd - 1.
-.It "stopb1, stopb1.5, stopb2
-Use 1 or 1.5 or 2 stop bits per character.
-.It "+dsr, -dsr"
-Use the DSR input signal as receiver enable/disable.
-.It "+cts, -cts"
-Use the CTS input signal as transmitter enable/disable.
-.It "+rts, -rts"
-Drive the RTS output signal as transmitter ready.
-.It "+rloop, -rloop"
-Set the remote loopback mode.
-.It "+etc, -etc"
-Enable the embedded transmit commands mode.
-.It "+ixon, -ixon"
-Enable the hardware XON/XOFF flow control support.
-.It "+ixany, -ixany"
-Use the hardware IXANY mode support.
-.It "+sdt, -sdt"
-Detect the spec. characters SCHR1 and SCHR2 in the receive data.
-.It "+flowct, -flowct"
-Receive the flow control spec. characters as data.
-.It "+rdt, -rdt"
-Detect the spec. characters in range SCRL..SCRH in the receive data.
-.It "+exdt, -exdt"
-Detect the spec. characters SCHR3 and SCHR4 in the receive data.
-.It "parintr, parnull, parign, pardisc, parffnull
-Action on parity errors:
-.Pp
-.Bl -tag -width parffnullxxx -compact
-.It Mode
-Action
-.It parintr
-Generate the receiver error interrupt
-.It parnull
-Input the NUL character
-.It parign
-Ignore the error, receive as good data
-.It pardisc
-Ignore the character
-.It parffnull
-Input the sequence <0xFF, NUL, character>
-.El
-.It "brkintr, brknull, brkdisc
-Line break state action:
-.Pp
-.Bl -tag -width parffnullxxx -compact
-.It Mode
-Action
-.It brkintr
-Generate the receiver error interrupt
-.It brknull
-Input the NUL character
-.It brkdisc
-Ignore the line break state
-.El
-.It "+inlcr, -inlcr"
-Translate received NL characters to CR.
-.It "+icrnl, -icrnl"
-Translate received CR characters to NL.
-.It "+igncr, -igncr"
-Ignore received CR characters.
-.It "+ocrnl, -ocrnl"
-Translate transmitted CR characters to NL.
-.It "+onlcr, -onlcr"
-Translate transmitted NL characters to CR.
-.It "+fcerr, -fcerr"
-Process (don't process) the characters, received with errors,
-for special character/flow control matching.
-.It "+lnext, -lnext"
-Enable the LNEXT character option: the character following
-the LNEXT character is not processed for special character/flow
-control matching.
-.It "+istrip, -istrip"
-Strip input characters to seven bits.
-.It schr1=#
-The XON flow control character value.
-.It schr2=#
-The XOFF flow control character value.
-.It schr3=#
-The SCHR3 spec. character value.
-.It schr4=#
-The SCHR4 spec. character value.
-.It "scrl=#, scrh=#
-The spec. character range (inclusive).
-.It lnext=#
-The LNEXT spec. character value.
-.El
-.Sh "HDLC mode options"
-.Bl -tag -width 10n
-.It if#
-The minimum number of flags transmitted before a frame is started.
-.It noaddr
-No frame address recognition.
-.It "addrlen1, addrlen2"
-Address field length: 1 or 2 bytes.
-.It "addr1, addr2"
-Addressing mode: 4x1 bytes or 2x2 bytes.
-Registers RFAR1..RFAR4 should contain the address to be matched.
-.It "+clrdet, -clrdet"
-Enable/disable clear detect for X.21 protocol support.
-.It "+dsr, -dsr"
-Use the DSR input signal as receiver enable/disable.
-.It "+cts, -cts"
-Use the CTS input signal as transmitter enable/disable.
-.It "+rts, -rts"
-Drive the RTS output signal as transmitter ready.
-.It "+fcs, -fcs"
-Enable/disable the frame checksum generation and checking.
-.It "crc-16, crc-v.41
-Select the CRC polynomial: CRC-16 (x^16+x^15+x^2+1)
-or CRC V.41 (x^16+x^12+x^5+1).
-.It "fcs-crc-16, fcs-v.41
-Frame checksum preset: all zeros (CRC-16) or all ones (CRC V.41).
-.It "+crcinv, -crcinv"
-Invert (ie. CRC V.41) or don't invert (ie. CRC-16) the transmitted frame checksum.
-.It "+fcsapd, -fcsapd"
-Pass the received CRC to the host at the end of receiver data buffer.
-.It "idlemark, idleflag
-Idle mode: idle in mark (transmit all ones) or idle in flag (transmit flag).
-.It "+syn, -syn"
-Enable/disable sending pad characters before sending flag when coming out
-of the idle mode.
-.It pad#
-The number of synchronous characters sent (0..4).
-.It "syn=0xaa, syn=0x00
-Send sync pattern.
-.It "rfar1=#, rfar2=#, rfar3=#, rfar4=#
-Frame address registers for address recognition.
-.El
-.Sh EXAMPLES
-Set up the channel 7 of the adapter Sigma-400 under
-.Fx .
-Physical 4-wire leased line with Zelax+ M115 short-range modems.
-Synchronous mode, 128000 bits/sec, interface RS-232,
-protocol PpP/HDLC without keepalive support, NRZI encoding,
-DPLL mode, no flow control:
-.Bd -literal
-cxconfig cx7 128000 hdlc ppp -keepalive nrzi -cts +dpll -extclock
-ifconfig cx7 158.250.244.2 158.250.244.1 up
-.Ed
-.Pp
-Set up the channel 0 of the adapter Sigma-100 under
-.Fx .
-Attachment to the near computer by short cable, internal clock source.
-Synchronous mode, 256000 bits/sec, interface RS-232,
-protocol Cisco/HDLC with keepalive support:
-.Bd -literal
-cxconfig cx0 hdlc 256000 cisco +keepalive -extclock
-ifconfig cx0 200.1.1.1 200.1.1.2 up
-.Ed
-.Pp
-Set up the channel 1 of the adapter Sigma-840 under
-.Tn BSD/386 .
-Synchronous 64 kbit/sec leased line, external clock source.
-Synchronous mode, interface V.35, external protocol suite:
-.Bd -literal
-cxconfig cx1 hdlc ext
-ifconfig cx1 193.124.254.50 193.124.254.49 multicast up
-.Ed
-.Pp
-Set up the channel 0 of the adapter Sigma-840 under
-.Fx .
-Attachment to the Cisco-4000 router by null-modem cable, internal clock source.
-Synchronous mode, 64000 bits/sec, interface RS-232,
-protocol PpP/HDLC with keepalive support and flow control,
-LCP and IPCP protocols (see RFC-1548 and RFC-1332) debug tracing enabled:
-.Bd -literal
-cxconfig cx0 hdlc 64000 port=rs232 ppp +keepalive -extclock +cts
-ifconfig cx0 100.0.0.2 100.0.0.1 debug up
-.Ed
-.Sh FILES
-.Bl -tag -width /dev/cronyx -compact
-.It Pa /dev/cronyx
-the special device file for adapter options management
-.El
-.Sh SEE ALSO
-.Xr cx 4
diff --git a/sbin/cxconfig/cxconfig.c b/sbin/cxconfig/cxconfig.c
deleted file mode 100644
index 05fd0d5..0000000
--- a/sbin/cxconfig/cxconfig.c
+++ /dev/null
@@ -1,768 +0,0 @@
-/*
- * Cronyx-Sigma adapter configuration utility for Unix.
- *
- * Copyright (C) 1994 Cronyx Ltd.
- * Author: Serge Vakulenko, <vak@zebub.msk.su>
- *
- * This software is distributed with NO WARRANTIES, not even the implied
- * warranties for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- * Authors grant any other persons or organisations permission to use
- * or modify this software as long as this message is kept with the software,
- * all derivative works or modified versions.
- *
- * Version 1.9, Wed Oct 4 18:58:15 MSK 1995
- *
- * Usage:
- * cxconfig [-a]
- * -- print status of all channels
- * cxconfig [-a] <channel>
- * -- print status of the channel
- * cxconfig <channel> <option>...
- * -- set channel options
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#include <sys/ioctl.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <machine/cronyx.h>
-
-#include <err.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#define NBRD 3
-#define CXDEV "/dev/cronyx"
-#define atoi(a) strtol((a), (char**)0, 0)
-
-cx_options_t o;
-cx_stat_t st;
-int aflag;
-int sflag;
-
-static char *
-symbol(unsigned char sym)
-{
- static char buf[40];
-
- if (sym < ' ')
- sprintf (buf, "^%c", sym+0100);
- else if (sym == '\\')
- strcat (buf, "\\\\");
- else if (sym < 127)
- sprintf (buf, "%c", sym);
- else
- sprintf (buf, "\\%03o", sym);
- return (buf);
-}
-
-static unsigned char
-atosym(char *s)
-{
- if (*s == '^')
- return (*++s & 037);
- if (*s == '\\')
- return (strtol (++s, 0, 8));
- return (*s);
-}
-
-static void
-usage(void)
-{
- fprintf (stderr,
- "Cronyx-Sigma Adapter Configuration Utility, Version 1.0\n");
- fprintf (stderr, "Copyright (C) 1994 Cronyx Ltd.\n");
- fprintf (stderr, "usage: cxconfig [-a] [<channel> [<option>...]]\n");
- exit (1);
-}
-
-static const char *
-chantype(int type)
-{
- switch (type) {
- default:
- case T_NONE: return ("none");
- case T_ASYNC: return ("RS-232");
- case T_UNIV_RS232: return ("RS-232");
- case T_UNIV_RS449: return ("RS-232/RS-449");
- case T_UNIV_V35: return ("RS-232/V.35");
- case T_SYNC_RS232: return ("RS-232");
- case T_SYNC_V35: return ("V.35");
- case T_SYNC_RS449: return ("RS-449");
- }
-}
-
-static const char *
-chanmode(int mode)
-{
- switch (mode) {
- case M_ASYNC: return ("Async");
- case M_HDLC: return ("HDLC");
- case M_BISYNC: return ("Bisync");
- case M_X21: return ("X.21");
- default: return ("???");
- }
-}
-
-static void
-getchan(int channel)
-{
- int s = open (CXDEV, 0);
- if (s < 0)
- err (1, "%s", CXDEV);
- o.board = channel/NCHAN;
- o.channel = channel%NCHAN;
- if (ioctl (s, CXIOCGETMODE, (caddr_t)&o) < 0)
- err (1, "CXIOCGETMODE");
- close (s);
- if (o.type == T_NONE)
- errx (1, "cx%d: channel %d not configured", o.board,
- o.channel);
-}
-
-static int
-printstats(int channel, int hflag)
-{
- int s, res;
-
- s = open (CXDEV, 0);
- if (s < 0)
- err (1, "%s", CXDEV);
- st.board = channel/NCHAN;
- st.channel = channel%NCHAN;
- res = ioctl (s, CXIOCGETSTAT, (caddr_t)&st);
- close (s);
- if (res < 0)
- return (-1);
-
- if (hflag)
- printf ("Chan Rintr Tintr Mintr Ibytes Ipkts Ierrs Obytes Opkts Oerrs\n");
- printf ("cx%-2d %7ld %7ld %7ld %8ld %7ld %7ld %8ld %7ld %7ld\n",
- channel, st.rintr, st.tintr, st.mintr, st.ibytes, st.ipkts,
- st.ierrs, st.obytes, st.opkts, st.oerrs);
- return (0);
-}
-
-static void
-printallstats(void)
-{
- int b, c;
-
- printf ("Chan Rintr Tintr Mintr Ibytes Ipkts Ierrs Obytes Opkts Oerrs\n");
- for (b=0; b<NBRD; ++b)
- for (c=0; c<NCHAN; ++c)
- printstats (b*NCHAN + c, 0);
-}
-
-static void
-setchan(int channel)
-{
- int s = open (CXDEV, 0);
- if (s < 0)
- err (1, "%s", CXDEV);
- o.board = channel/NCHAN;
- o.channel = channel%NCHAN;
- if (ioctl (s, CXIOCSETMODE, (caddr_t)&o) < 0)
- err (1, "CXIOCSETMODE");
- close (s);
-}
-
-static void
-printopt(void)
-{
- /* Common channel options */
- /* channel option register 4 */
- printf ("\t");
- printf ("fifo=%d ", o.opt.cor4.thr); /* FIFO threshold */
- printf ("%cctsdown ", o.opt.cor4.cts_zd ? '+' : '-'); /* detect 1 to 0 transition on the CTS */
- printf ("%ccddown ", o.opt.cor4.cd_zd ? '+' : '-'); /* detect 1 to 0 transition on the CD */
- printf ("%cdsrdown ", o.opt.cor4.dsr_zd ? '+' : '-'); /* detect 1 to 0 transition on the DSR */
- printf ("\n");
-
- /* channel option register 5 */
- printf ("\t");
- printf ("rfifo=%d ", o.opt.cor5.rx_thr); /* receive flow control FIFO threshold */
- printf ("%cctsup ", o.opt.cor5.cts_od ? '+' : '-'); /* detect 0 to 1 transition on the CTS */
- printf ("%ccdup ", o.opt.cor5.cd_od ? '+' : '-'); /* detect 0 to 1 transition on the CD */
- printf ("%cdsrup ", o.opt.cor5.dsr_od ? '+' : '-'); /* detect 0 to 1 transition on the DSR */
- printf ("\n");
-
- /* receive clock option register */
- printf ("\t");
- printf ("%s ", o.opt.rcor.encod == ENCOD_NRZ ? "nrz" : /* signal encoding */
- o.opt.rcor.encod == ENCOD_NRZI ? "nrzi" :
- o.opt.rcor.encod == ENCOD_MANCHESTER ? "manchester" : "???");
- printf ("%cdpll ", o.opt.rcor.dpll ? '+' : '-'); /* DPLL enable */
-
- /* transmit clock option register */
- printf ("%clloop ", o.opt.tcor.llm ? '+' : '-'); /* local loopback mode */
- printf ("%cextclock ", o.opt.tcor.ext1x ? '+' : '-'); /* external 1x clock mode */
- printf ("\n");
-
- switch (o.mode) {
- case M_ASYNC: /* async mode options */
- /* channel option register 1 */
- printf ("\t");
- printf ("cs%d ", o.aopt.cor1.charlen+1); /* character length, 5..8 */
- printf ("par%s ", o.aopt.cor1.parity ? "odd" : "even"); /* parity */
- printf ("%cignpar ", o.aopt.cor1.ignpar ? '+' : '-'); /* ignore parity */
- if (o.aopt.cor1.parmode != PARM_NORMAL) /* parity mode */
- printf ("%s ", o.aopt.cor1.parmode == PARM_NOPAR ? "nopar" :
- o.aopt.cor1.parmode == PARM_FORCE ? "forcepar" : "???");
- printf ("\n");
-
- /* channel option register 2 */
- printf ("\t");
- printf ("%cdsr ", o.aopt.cor2.dsrae ? '+' : '-'); /* DSR automatic enable */
- printf ("%ccts ", o.aopt.cor2.ctsae ? '+' : '-'); /* CTS automatic enable */
- printf ("%crts ", o.aopt.cor2.rtsao ? '+' : '-'); /* RTS automatic output enable */
- printf ("%crloop ", o.aopt.cor2.rlm ? '+' : '-'); /* remote loopback mode enable */
- printf ("%cetc ", o.aopt.cor2.etc ? '+' : '-'); /* embedded transmitter cmd enable */
- printf ("%cxon ", o.aopt.cor2.ixon ? '+' : '-'); /* in-band XON/XOFF enable */
- printf ("%cxany ", o.aopt.cor2.ixany ? '+' : '-'); /* XON on any character */
- printf ("\n");
-
- /* option register 3 */
- printf ("\t");
- printf ("%s ", o.aopt.cor3.stopb == STOPB_1 ? "stopb1" : /* stop bit length */
- o.aopt.cor3.stopb == STOPB_15 ? "stopb1.5" :
- o.aopt.cor3.stopb == STOPB_2 ? "stopb2" : "???");
- printf ("%csdt ", o.aopt.cor3.scde ? '+' : '-'); /* special char detection enable */
- printf ("%cflowct ", o.aopt.cor3.flowct ? '+' : '-'); /* flow control transparency mode */
- printf ("%crdt ", o.aopt.cor3.rngde ? '+' : '-'); /* range detect enable */
- printf ("%cexdt ", o.aopt.cor3.escde ? '+' : '-'); /* extended spec. char detect enable */
- printf ("\n");
-
- /* channel option register 6 */
- printf ("\t");
- printf ("%s ", o.aopt.cor6.parerr == PERR_INTR ? "parintr" : /* parity/framing error actions */
- o.aopt.cor6.parerr == PERR_NULL ? "parnull" :
- o.aopt.cor6.parerr == PERR_IGNORE ? "parign" :
- o.aopt.cor6.parerr == PERR_DISCARD ? "pardisc" :
- o.aopt.cor6.parerr == PERR_FFNULL ? "parffnull" : "???");
- printf ("%s ", o.aopt.cor6.brk == BRK_INTR ? "brkintr" : /* action on break condition */
- o.aopt.cor6.brk == BRK_NULL ? "brknull" :
- o.aopt.cor6.brk == BRK_DISCARD ? "brkdisc" : "???");
- printf ("%cinlcr ", o.aopt.cor6.inlcr ? '+' : '-'); /* translate NL to CR on input */
- printf ("%cicrnl ", o.aopt.cor6.icrnl ? '+' : '-'); /* translate CR to NL on input */
- printf ("%cigncr ", o.aopt.cor6.igncr ? '+' : '-'); /* discard CR on input */
- printf ("\n");
-
- /* channel option register 7 */
- printf ("\t");
- printf ("%cocrnl ", o.aopt.cor7.ocrnl ? '+' : '-'); /* translate CR to NL on output */
- printf ("%conlcr ", o.aopt.cor7.onlcr ? '+' : '-'); /* translate NL to CR on output */
- printf ("%cfcerr ", o.aopt.cor7.fcerr ? '+' : '-'); /* process flow ctl err chars enable */
- printf ("%clnext ", o.aopt.cor7.lnext ? '+' : '-'); /* LNext option enable */
- printf ("%cistrip ", o.aopt.cor7.istrip ? '+' : '-'); /* strip 8-bit on input */
- printf ("\n");
-
- printf ("\t");
- printf ("schr1=%s ", symbol (o.aopt.schr1)); /* special character register 1 (XON) */
- printf ("schr2=%s ", symbol (o.aopt.schr2)); /* special character register 2 (XOFF) */
- printf ("schr3=%s ", symbol (o.aopt.schr3)); /* special character register 3 */
- printf ("schr4=%s ", symbol (o.aopt.schr4)); /* special character register 4 */
- printf ("scrl=%s ", symbol (o.aopt.scrl)); /* special character range low */
- printf ("scrh=%s ", symbol (o.aopt.scrh)); /* special character range high */
- printf ("lnext=%s ", symbol (o.aopt.lnxt)); /* LNext character */
- printf ("\n");
- break;
-
- case M_HDLC: /* hdlc mode options */
- /* hdlc channel option register 1 */
- printf ("\t");
- printf ("if%d ", o.hopt.cor1.ifflags); /* number of inter-frame flags sent */
- printf ("%s ", o.hopt.cor1.admode == ADMODE_NOADDR ? "noaddr" : /* addressing mode */
- o.hopt.cor1.admode == ADMODE_4_1 ? "addr1" :
- o.hopt.cor1.admode == ADMODE_2_2 ? "addr2" : "???");
- printf ("%cclrdet ", o.hopt.cor1.clrdet ? '+' : '-'); /* clear detect for X.21 data transfer phase */
- printf ("addrlen%d ", o.hopt.cor1.aflo + 1); /* address field length option */
- printf ("\n");
-
- /* hdlc channel option register 2 */
- printf ("\t");
- printf ("%cdsr ", o.hopt.cor2.dsrae ? '+' : '-'); /* DSR automatic enable */
- printf ("%ccts ", o.hopt.cor2.ctsae ? '+' : '-'); /* CTS automatic enable */
- printf ("%crts ", o.hopt.cor2.rtsao ? '+' : '-'); /* RTS automatic output enable */
- printf ("%ccrcinv ", o.hopt.cor2.crcninv ? '-' : '+'); /* CRC invertion option */
- printf ("%cfcsapd ", o.hopt.cor2.fcsapd ? '+' : '-'); /* FCS append */
- printf ("\n");
-
- /* hdlc channel option register 3 */
- printf ("\t");
- printf ("pad%d ", o.hopt.cor3.padcnt); /* pad character count */
- printf ("idle%s ", o.hopt.cor3.idle ? "mark" : "flag"); /* idle mode */
- printf ("%cfcs ", o.hopt.cor3.nofcs ? '-' : '+'); /* FCS disable */
- printf ("fcs-%s ", o.hopt.cor3.fcspre ? "crc-16" : "v.41"); /* FCS preset */
- printf ("syn=%s ", o.hopt.cor3.syncpat ? "0xAA" : "0x00"); /* send sync pattern */
- printf ("%csyn ", o.hopt.cor3.sndpad ? '+' : '-'); /* send pad characters before flag enable */
- printf ("\n");
-
- printf ("\t");
- printf ("rfar1=0x%02x ", o.hopt.rfar1); /* receive frame address register 1 */
- printf ("rfar2=0x%02x ", o.hopt.rfar2); /* receive frame address register 2 */
- printf ("rfar3=0x%02x ", o.hopt.rfar3); /* receive frame address register 3 */
- printf ("rfar4=0x%02x ", o.hopt.rfar4); /* receive frame address register 4 */
- printf ("crc-%s ", o.hopt.cpsr ? "16" : "v.41"); /* CRC polynomial select */
- printf ("\n");
- break;
-
- case M_BISYNC: /* bisync mode options */
- /* channel option register 1 */
- printf ("\t");
- printf ("cs%d ", o.bopt.cor1.charlen+1); /* character length, 5..8 */
- printf ("par%s ", o.bopt.cor1.parity ? "odd" : "even"); /* parity */
- printf ("%cignpar ", o.bopt.cor1.ignpar ? '+' : '-'); /* ignore parity */
- if (o.bopt.cor1.parmode != PARM_NORMAL) /* parity mode */
- printf ("%s ", o.bopt.cor1.parmode == PARM_NOPAR ? "nopar" :
- o.bopt.cor1.parmode == PARM_FORCE ? "forcepar" : "???");
- printf ("\n");
-
- /* channel option register 2 */
- printf ("\t");
- printf ("syn%d ", o.bopt.cor2.syns+2); /* number of extra SYN chars before a frame */
- printf ("%ccrcinv ", o.bopt.cor2.crcninv ? '-' : '+'); /* CRC invertion option */
- printf ("%s ", o.bopt.cor2.ebcdic ? "ebcdic" : "ascii"); /* use EBCDIC as char set (instead of ASCII) */
- printf ("%cbccapd ", o.bopt.cor2.bcc ? '+' : '-'); /* BCC append enable */
- printf ("%s ", o.bopt.cor2.lrc ? "lrc" : "crc-16"); /* longitudinal redundancy check */
- printf ("\n");
-
- /* channel option register 3 */
- printf ("\t");
- printf ("pad%d ", o.bopt.cor3.padcnt); /* pad character count */
- printf ("idle%s ", o.bopt.cor3.idle ? "mark" : "syn"); /* idle mode */
- printf ("%cfcs ", o.bopt.cor3.nofcs ? '-' : '+'); /* FCS disable */
- printf ("fcs-%s ", o.bopt.cor3.fcspre ? "crc-16" : "v.41"); /* FCS preset */
- printf ("syn=%s ", o.bopt.cor3.padpat ? "0x55" : "0xAA"); /* send sync pattern */
- printf ("%csyn ", o.bopt.cor3.sndpad ? '+' : '-'); /* send pad characters before flag enable */
- printf ("\n");
-
- /* channel option register 6 */
- printf ("\t");
- printf ("specterm=%s ", symbol (o.bopt.cor6.specterm)); /* special termination character */
-
- printf ("crc-%s ", o.bopt.cpsr ? "16" : "v.41"); /* CRC polynomial select */
- printf ("\n");
- break;
-
- case M_X21: /* x.21 mode options */
- /* channel option register 1 */
- printf ("\t");
- printf ("cs%d ", o.xopt.cor1.charlen+1); /* character length, 5..8 */
- printf ("par%s ", o.xopt.cor1.parity ? "odd" : "even"); /* parity */
- printf ("%cignpar ", o.xopt.cor1.ignpar ? '+' : '-'); /* ignore parity */
- if (o.xopt.cor1.parmode != PARM_NORMAL) /* parity mode */
- printf ("%s ", o.xopt.cor1.parmode == PARM_NOPAR ? "nopar" :
- o.xopt.cor1.parmode == PARM_FORCE ? "forcepar" : "???");
- printf ("\n");
-
- /* channel option register 2 */
- printf ("\t");
- printf ("%cetc ", o.xopt.cor2.etc ? '+' : '-'); /* embedded transmitter cmd enable */
-
- /* channel option register 3 */
- printf ("%csdt ", o.xopt.cor3.scde ? '+' : '-'); /* special char detection enable */
- printf ("%cstripsyn ", o.xopt.cor3.stripsyn ? '+' : '-'); /* treat SYN chars as special condition */
- printf ("%cssdt ", o.xopt.cor3.ssde ? '+' : '-'); /* steady state detect enable */
- printf ("syn%c ", o.xopt.cor3.syn ? '1' : '2'); /* the number of SYN chars on receive */
- printf ("\n");
-
- /* channel option register 6 */
- printf ("\t");
- printf ("syn=%s ", symbol (o.xopt.cor6.synchar)); /* syn character */
-
- printf ("schr1=%s ", symbol (o.xopt.schr1)); /* special character register 1 */
- printf ("schr2=%s ", symbol (o.xopt.schr2)); /* special character register 2 */
- printf ("schr3=%s ", symbol (o.xopt.schr3)); /* special character register 3 */
- printf ("\n");
- break;
- }
-}
-
-static void
-printchan(int channel)
-{
- printf ("cx%d (%s) %s", channel, chantype (o.type), chanmode (o.mode));
- if (o.txbaud == o.rxbaud)
- printf (" %lu", o.rxbaud);
- else
- printf (" ospeed=%lu ispeed=%lu", o.txbaud, o.rxbaud);
- if ((o.channel == 0 || o.channel == 8) &&
- (o.type == T_UNIV_V35 || o.type == T_UNIV_RS449))
- printf (" port=%s", o.iftype ? (o.type == T_UNIV_V35 ?
- "v35" : "rs449") : "rs232");
- printf (o.sopt.ext ? " ext" : o.sopt.cisco ? " cisco" : " ppp");
- printf (" %ckeepalive", o.sopt.keepalive ? '+' : '-');
- printf (" %cautorts", o.sopt.norts ? '-' : '+');
- if (*o.master)
- printf (" master=%s", o.master);
- printf ("\n");
- if (aflag)
- printopt ();
-}
-
-static void
-printall(void)
-{
- struct ifconf ifc;
- struct ifreq *ifr;
- char buf[BUFSIZ], *cp;
- int s, c;
-
- s = socket (AF_INET, SOCK_DGRAM, 0);
- if (s < 0)
- err (1, "socket");
- ifc.ifc_len = sizeof (buf);
- ifc.ifc_buf = buf;
- if (ioctl (s, SIOCGIFCONF, (caddr_t)&ifc) < 0)
- err (1, "SIOCGIFCONF");
- close (s);
- s = open (CXDEV, 0);
- if (s < 0)
- err (1, "%s", CXDEV);
-
- ifr = ifc.ifc_req;
-#define max(a,b) ((a)>(b) ? (a) : (b))
-#define size(p) max((p).sa_len, sizeof(p))
- for (cp=buf; cp<buf+ifc.ifc_len; cp+=sizeof(ifr->ifr_name)+size(ifr->ifr_addr)) {
- ifr = (struct ifreq*) cp;
- if (ifr->ifr_addr.sa_family != AF_LINK)
- continue;
- if (strncmp (ifr->ifr_name, "cx", 2) != 0)
- continue;
- c = atoi (ifr->ifr_name + 2);
- o.board = c/NCHAN;
- o.channel = c%NCHAN;
- if (ioctl (s, CXIOCGETMODE, (caddr_t)&o) < 0)
- err (1, "CXIOCGETMODE");
- printchan (c);
- }
- close (s);
-}
-
-static void
-set_interface_type(char *type)
-{
- if (o.channel != 0 && o.channel != 8) {
- printf ("interface option is applicable only for channels 0 and 8\n");
- exit (1);
- }
- if (o.type != T_UNIV_V35 && o.type != T_UNIV_RS449) {
- printf ("interface option is applicable only for universal channels\n");
- exit (1);
- }
- if (! strcasecmp (type, "port=rs232"))
- o.iftype = 0;
- else
- o.iftype = 1;
-}
-
-static void
-set_master(char *ifname)
-{
- if (o.type == T_ASYNC) {
- printf ("master option is not applicable for async channels\n");
- exit (1);
- }
- strcpy (o.master, ifname);
-}
-
-static void
-set_async_opt(char *opt)
-{
- /* channel option register 1 */
- if (! strncasecmp (opt, "cs", 2)) o.aopt.cor1.charlen = atoi (opt + 2) - 1;
- else if (! strcasecmp (opt, "parodd")) o.aopt.cor1.parity = 1;
- else if (! strcasecmp (opt, "pareven")) o.aopt.cor1.parity = 0;
- else if (! strcasecmp (opt, "-ignpar")) o.aopt.cor1.ignpar = 0;
- else if (! strcasecmp (opt, "+ignpar")) o.aopt.cor1.ignpar = 1;
- else if (! strcasecmp (opt, "nopar")) o.aopt.cor1.parmode = PARM_NOPAR;
- else if (! strcasecmp (opt, "forcepar")) o.aopt.cor1.parmode = PARM_FORCE;
-
- /* channel option register 2 */
- else if (! strcasecmp (opt, "-dsr")) o.aopt.cor2.dsrae = 0;
- else if (! strcasecmp (opt, "+dsr")) o.aopt.cor2.dsrae = 1;
- else if (! strcasecmp (opt, "-cts")) o.aopt.cor2.ctsae = 0;
- else if (! strcasecmp (opt, "+cts")) o.aopt.cor2.ctsae = 1;
- else if (! strcasecmp (opt, "-rts")) o.aopt.cor2.rtsao = 0;
- else if (! strcasecmp (opt, "+rts")) o.aopt.cor2.rtsao = 1;
- else if (! strcasecmp (opt, "-rloop")) o.aopt.cor2.rlm = 0;
- else if (! strcasecmp (opt, "+rloop")) o.aopt.cor2.rlm = 1;
- else if (! strcasecmp (opt, "-etc")) o.aopt.cor2.etc = 0;
- else if (! strcasecmp (opt, "+etc")) o.aopt.cor2.etc = 1;
- else if (! strcasecmp (opt, "-ixon")) o.aopt.cor2.ixon = 0;
- else if (! strcasecmp (opt, "+ixon")) o.aopt.cor2.ixon = 1;
- else if (! strcasecmp (opt, "-ixany")) o.aopt.cor2.ixany = 0;
- else if (! strcasecmp (opt, "+ixany")) o.aopt.cor2.ixany = 1;
-
- /* option register 3 */
- else if (! strcasecmp (opt, "stopb1")) o.aopt.cor3.stopb = STOPB_1;
- else if (! strcasecmp (opt, "stopb1.5")) o.aopt.cor3.stopb = STOPB_15;
- else if (! strcasecmp (opt, "stopb2")) o.aopt.cor3.stopb = STOPB_2;
- else if (! strcasecmp (opt, "-sdt")) o.aopt.cor3.scde = 0;
- else if (! strcasecmp (opt, "+sdt")) o.aopt.cor3.scde = 1;
- else if (! strcasecmp (opt, "-flowct")) o.aopt.cor3.flowct = 0;
- else if (! strcasecmp (opt, "+flowct")) o.aopt.cor3.flowct = 1;
- else if (! strcasecmp (opt, "-rdt")) o.aopt.cor3.rngde = 0;
- else if (! strcasecmp (opt, "+rdt")) o.aopt.cor3.rngde = 1;
- else if (! strcasecmp (opt, "-exdt")) o.aopt.cor3.escde = 0;
- else if (! strcasecmp (opt, "+exdt")) o.aopt.cor3.escde = 1;
-
- /* channel option register 6 */
- else if (! strcasecmp (opt, "parintr")) o.aopt.cor6.parerr = PERR_INTR;
- else if (! strcasecmp (opt, "parnull")) o.aopt.cor6.parerr = PERR_NULL;
- else if (! strcasecmp (opt, "parign")) o.aopt.cor6.parerr = PERR_IGNORE;
- else if (! strcasecmp (opt, "pardisc")) o.aopt.cor6.parerr = PERR_DISCARD;
- else if (! strcasecmp (opt, "parffnull")) o.aopt.cor6.parerr = PERR_FFNULL;
- else if (! strcasecmp (opt, "brkintr")) o.aopt.cor6.brk = BRK_INTR;
- else if (! strcasecmp (opt, "brknull")) o.aopt.cor6.brk = BRK_NULL;
- else if (! strcasecmp (opt, "brkdisc")) o.aopt.cor6.brk = BRK_DISCARD;
- else if (! strcasecmp (opt, "-inlcr")) o.aopt.cor6.inlcr = 0;
- else if (! strcasecmp (opt, "+inlcr")) o.aopt.cor6.inlcr = 1;
- else if (! strcasecmp (opt, "-icrnl")) o.aopt.cor6.icrnl = 0;
- else if (! strcasecmp (opt, "+icrnl")) o.aopt.cor6.icrnl = 1;
- else if (! strcasecmp (opt, "-igncr")) o.aopt.cor6.igncr = 0;
- else if (! strcasecmp (opt, "+igncr")) o.aopt.cor6.igncr = 1;
-
- /* channel option register 7 */
- else if (! strcasecmp (opt, "-ocrnl")) o.aopt.cor7.ocrnl = 0;
- else if (! strcasecmp (opt, "+ocrnl")) o.aopt.cor7.ocrnl = 1;
- else if (! strcasecmp (opt, "-onlcr")) o.aopt.cor7.onlcr = 0;
- else if (! strcasecmp (opt, "+onlcr")) o.aopt.cor7.onlcr = 1;
- else if (! strcasecmp (opt, "-fcerr")) o.aopt.cor7.fcerr = 0;
- else if (! strcasecmp (opt, "+fcerr")) o.aopt.cor7.fcerr = 1;
- else if (! strcasecmp (opt, "-lnext")) o.aopt.cor7.lnext = 0;
- else if (! strcasecmp (opt, "+lnext")) o.aopt.cor7.lnext = 1;
- else if (! strcasecmp (opt, "-istrip")) o.aopt.cor7.istrip = 0;
- else if (! strcasecmp (opt, "+istrip")) o.aopt.cor7.istrip = 1;
-
- else if (! strncasecmp (opt, "schr1=", 6)) o.aopt.schr1 = atosym (opt+6);
- else if (! strncasecmp (opt, "schr2=", 6)) o.aopt.schr2 = atosym (opt+6);
- else if (! strncasecmp (opt, "schr3=", 6)) o.aopt.schr3 = atosym (opt+6);
- else if (! strncasecmp (opt, "schr4=", 6)) o.aopt.schr4 = atosym (opt+6);
- else if (! strncasecmp (opt, "scrl=", 5)) o.aopt.scrl = atosym (opt+5);
- else if (! strncasecmp (opt, "scrh=", 5)) o.aopt.scrh = atosym (opt+5);
- else if (! strncasecmp (opt, "lnext=", 6)) o.aopt.lnxt = atosym (opt+6);
- else
- usage ();
-}
-
-static void
-set_hdlc_opt(char *opt)
-{
- /* hdlc channel option register 1 */
- if (! strncasecmp (opt, "if", 2)) o.hopt.cor1.ifflags = atoi (opt + 2);
- else if (! strcasecmp (opt, "noaddr")) o.hopt.cor1.admode = ADMODE_NOADDR;
- else if (! strcasecmp (opt, "addr1")) o.hopt.cor1.admode = ADMODE_4_1;
- else if (! strcasecmp (opt, "addr2")) o.hopt.cor1.admode = ADMODE_2_2;
- else if (! strcasecmp (opt, "-clrdet")) o.hopt.cor1.clrdet = 0;
- else if (! strcasecmp (opt, "+clrdet")) o.hopt.cor1.clrdet = 1;
- else if (! strcasecmp (opt, "addrlen1")) o.hopt.cor1.aflo = 0;
- else if (! strcasecmp (opt, "addrlen2")) o.hopt.cor1.aflo = 1;
-
- /* hdlc channel option register 2 */
- else if (! strcasecmp (opt, "-dsr")) o.hopt.cor2.dsrae = 0;
- else if (! strcasecmp (opt, "+dsr")) o.hopt.cor2.dsrae = 1;
- else if (! strcasecmp (opt, "-cts")) o.hopt.cor2.ctsae = 0;
- else if (! strcasecmp (opt, "+cts")) o.hopt.cor2.ctsae = 1;
- else if (! strcasecmp (opt, "-rts")) o.hopt.cor2.rtsao = 0;
- else if (! strcasecmp (opt, "+rts")) o.hopt.cor2.rtsao = 1;
- else if (! strcasecmp (opt, "-fcsapd")) o.hopt.cor2.fcsapd = 0;
- else if (! strcasecmp (opt, "+fcsapd")) o.hopt.cor2.fcsapd = 1;
- else if (! strcasecmp (opt, "-crcinv")) o.hopt.cor2.crcninv = 1;
- else if (! strcasecmp (opt, "+crcinv")) o.hopt.cor2.crcninv = 0;
-
- /* hdlc channel option register 3 */
- else if (! strncasecmp (opt, "pad", 3)) o.hopt.cor3.padcnt = atoi (opt + 3);
- else if (! strcasecmp (opt, "idlemark")) o.hopt.cor3.idle = 1;
- else if (! strcasecmp (opt, "idleflag")) o.hopt.cor3.idle = 0;
- else if (! strcasecmp (opt, "-fcs")) o.hopt.cor3.nofcs = 1;
- else if (! strcasecmp (opt, "+fcs")) o.hopt.cor3.nofcs = 0;
- else if (! strcasecmp (opt, "fcs-crc-16")) o.hopt.cor3.fcspre = 1;
- else if (! strcasecmp (opt, "fcs-v.41")) o.hopt.cor3.fcspre = 0;
- else if (! strcasecmp (opt, "syn=0xaa")) o.hopt.cor3.syncpat = 1;
- else if (! strcasecmp (opt, "syn=0x00")) o.hopt.cor3.syncpat = 0;
- else if (! strcasecmp (opt, "-syn")) o.hopt.cor3.sndpad = 0;
- else if (! strcasecmp (opt, "+syn")) o.hopt.cor3.sndpad = 1;
-
- else if (! strncasecmp (opt, "rfar1=", 6)) o.hopt.rfar1 = atoi (opt + 6);
- else if (! strncasecmp (opt, "rfar2=", 6)) o.hopt.rfar2 = atoi (opt + 6);
- else if (! strncasecmp (opt, "rfar3=", 6)) o.hopt.rfar3 = atoi (opt + 6);
- else if (! strncasecmp (opt, "rfar4=", 6)) o.hopt.rfar4 = atoi (opt + 6);
- else if (! strcasecmp (opt, "crc-16")) o.hopt.cpsr = 1;
- else if (! strcasecmp (opt, "crc-v.41")) o.hopt.cpsr = 0;
- else usage ();
-}
-
-static void
-set_bisync_opt(char *opt __unused)
-{
- usage ();
-}
-
-static void
-set_x21_opt(char *opt __unused)
-{
- usage ();
-}
-
-int
-main(int argc, char **argv)
-{
- int channel;
-
- for (--argc, ++argv; argc>0 && **argv=='-'; --argc, ++argv)
- if (! strcasecmp (*argv, "-a"))
- ++aflag;
- else if (! strcasecmp (*argv, "-s"))
- ++sflag;
- else
- usage ();
-
- if (argc <= 0) {
- if (sflag)
- printallstats ();
- else
- printall ();
- return (0);
- }
-
- if (argv[0][0]=='c' && argv[0][1]=='x')
- *argv += 2;
- if (**argv<'0' || **argv>'9')
- usage ();
- channel = atoi (*argv);
- --argc, ++argv;
-
- if (sflag) {
- if (printstats (channel, 1) < 0)
- printf ("channel cx%d not available\n", channel);
- return (0);
- }
-
- getchan (channel);
-
- if (argc <= 0) {
- printchan (channel);
- return (0);
- }
-
- for (; argc>0; --argc, ++argv)
- if (**argv == '(')
- continue;
- else if (! strncasecmp (*argv, "ispeed=", 7))
- o.rxbaud = atoi (*argv+7);
- else if (! strncasecmp (*argv, "ospeed=", 7))
- o.txbaud = atoi (*argv+7);
- else if (! strcasecmp (*argv, "async"))
- o.mode = M_ASYNC;
- else if (! strcasecmp (*argv, "hdlc"))
- o.mode = M_HDLC;
- else if (! strcasecmp (*argv, "bisync") ||
- ! strcasecmp (*argv, "bsc"))
- o.mode = M_BISYNC;
- else if (! strcasecmp (*argv, "x.21") ||
- ! strcasecmp (*argv, "x21"))
- o.mode = M_X21;
- else if (**argv>='0' && **argv<='9')
- o.txbaud = o.rxbaud = atoi (*argv);
- else if (! strcasecmp (*argv, "cisco")) {
- o.sopt.cisco = 1;
- o.sopt.ext = 0;
- } else if (! strcasecmp (*argv, "ppp")) {
- o.sopt.cisco = 0;
- o.sopt.ext = 0;
- } else if (! strcasecmp (*argv, "ext"))
- o.sopt.ext = 1;
- else if (! strcasecmp (*argv, "+keepalive"))
- o.sopt.keepalive = 1;
- else if (! strcasecmp (*argv, "-keepalive"))
- o.sopt.keepalive = 0;
- else if (! strcasecmp (*argv, "+autorts"))
- o.sopt.norts = 0;
- else if (! strcasecmp (*argv, "-autorts"))
- o.sopt.norts = 1;
- else if (! strcasecmp (*argv, "port=rs232") ||
- ! strcasecmp (*argv, "port=rs449") ||
- ! strcasecmp (*argv, "port=v35"))
- set_interface_type (*argv);
- else if (! strncasecmp (*argv, "master=",7))
- set_master (*argv+7);
-
- /*
- * Common channel options
- */
- /* channel option register 4 */
- else if (! strcasecmp (*argv, "-ctsdown"))
- o.opt.cor4.cts_zd = 0;
- else if (! strcasecmp (*argv, "+ctsdown"))
- o.opt.cor4.cts_zd = 1;
- else if (! strcasecmp (*argv, "-cddown"))
- o.opt.cor4.cd_zd = 0;
- else if (! strcasecmp (*argv, "+cddown"))
- o.opt.cor4.cd_zd = 1;
- else if (! strcasecmp (*argv, "-dsrdown"))
- o.opt.cor4.dsr_zd = 0;
- else if (! strcasecmp (*argv, "+dsrdown"))
- o.opt.cor4.dsr_zd = 1;
- else if (! strncasecmp (*argv, "fifo=", 5))
- o.opt.cor4.thr = atoi (*argv + 5);
-
- /* channel option register 5 */
- else if (! strcasecmp (*argv, "-ctsup"))
- o.opt.cor5.cts_od = 0;
- else if (! strcasecmp (*argv, "+ctsup"))
- o.opt.cor5.cts_od = 1;
- else if (! strcasecmp (*argv, "-cdup"))
- o.opt.cor5.cd_od = 0;
- else if (! strcasecmp (*argv, "+cdup"))
- o.opt.cor5.cd_od = 1;
- else if (! strcasecmp (*argv, "-dsrup"))
- o.opt.cor5.dsr_od = 0;
- else if (! strcasecmp (*argv, "+dsrup"))
- o.opt.cor5.dsr_od = 1;
- else if (! strncasecmp (*argv, "rfifo=", 6))
- o.opt.cor5.rx_thr = atoi (*argv + 6);
-
- /* receive clock option register */
- else if (! strcasecmp (*argv, "nrz"))
- o.opt.rcor.encod = ENCOD_NRZ;
- else if (! strcasecmp (*argv, "nrzi"))
- o.opt.rcor.encod = ENCOD_NRZI;
- else if (! strcasecmp (*argv, "manchester"))
- o.opt.rcor.encod = ENCOD_MANCHESTER;
- else if (! strcasecmp (*argv, "-dpll"))
- o.opt.rcor.dpll = 0;
- else if (! strcasecmp (*argv, "+dpll"))
- o.opt.rcor.dpll = 1;
-
- /* transmit clock option register */
- else if (! strcasecmp (*argv, "-lloop"))
- o.opt.tcor.llm = 0;
- else if (! strcasecmp (*argv, "+lloop"))
- o.opt.tcor.llm = 1;
- else if (! strcasecmp (*argv, "-extclock"))
- o.opt.tcor.ext1x = 0;
- else if (! strcasecmp (*argv, "+extclock"))
- o.opt.tcor.ext1x = 1;
-
- /*
- * Mode dependent channel options
- */
- else switch (o.mode) {
- case M_ASYNC: set_async_opt (*argv); break;
- case M_HDLC: set_hdlc_opt (*argv); break;
- case M_BISYNC: set_bisync_opt (*argv); break;
- case M_X21: set_x21_opt (*argv); break;
- }
-
- setchan (channel);
- return (0);
-}
OpenPOWER on IntegriCloud