diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 2015-04-04 15:46:50 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 2015-04-04 15:46:50 +0000 |
commit | 5ba807db1c142052f16f49e7a1630da8b68c7a29 (patch) | |
tree | 56fcdc39184f6b8562575d6693938d57afbae6cd | |
parent | 199b8d04391a85ada25d77f1e65de032def39c85 (diff) |
banished the attic
-rw-r--r-- | sbin/lmccontrol/Makefile | 10 | ||||
-rw-r--r-- | sbin/lmccontrol/clockgen.c | 123 | ||||
-rw-r--r-- | sbin/lmccontrol/lmccontrol.8 | 131 | ||||
-rw-r--r-- | sbin/lmccontrol/lmccontrol.c | 388 |
4 files changed, 0 insertions, 652 deletions
diff --git a/sbin/lmccontrol/Makefile b/sbin/lmccontrol/Makefile deleted file mode 100644 index b7f69e4fccb..00000000000 --- a/sbin/lmccontrol/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -# $OpenBSD: Makefile,v 1.1 2000/10/13 16:22:07 chris Exp $ - -PROG= lmccontrol -SRCS= lmccontrol.c clockgen.c - -CFLAGS+= -Wall - -MAN= lmccontrol.8 - -.include <bsd.prog.mk> diff --git a/sbin/lmccontrol/clockgen.c b/sbin/lmccontrol/clockgen.c deleted file mode 100644 index e583d936105..00000000000 --- a/sbin/lmccontrol/clockgen.c +++ /dev/null @@ -1,123 +0,0 @@ -/* $OpenBSD: clockgen.c,v 1.4 2013/11/12 04:59:02 deraadt Exp $ */ -/* $Id: clockgen.c,v 1.4 2013/11/12 04:59:02 deraadt Exp $ */ - -/*- - * Copyright (c) 1997-1999 LAN Media Corporation (LMC) - * All rights reserved. www.lanmedia.com - * - * This code is written by Michael Graff (explorer@vix.com) for LMC. - * The code is derived from permitted modifications to software created - * by Matt Thomas (matt@3am-software.com). - * - * 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. - * 3. All marketing or advertising materials mentioning features or use of this - * software must display the following acknowledgement: - * This product includes software developed by LAN Media Corporation - * and its contributors. - * 4. Neither the name of LAN Media Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY LAN MEDIA CORPORATION 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 CORPORATION 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. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <errno.h> - -#include <sys/types.h> -#include <sys/ioctl.h> -#include <sys/socket.h> - -#include <net/if.h> - -#include <netinet/in.h> - -typedef struct lmc___ctl lmc_ctl_t; -#include <dev/pci/if_lmcioctl.h> - -void lmc_av9110_freq(u_int32_t target, lmc_av9110_t *av); - -#define T1_FREF 20000000 -#define T1_FMIN 30000000 -#define T1_FMAX 330000000 - -void -lmc_av9110_freq(u_int32_t target, lmc_av9110_t *av) -{ - unsigned int n, m, v, x, r; - unsigned long f; - unsigned long iFvco; - - av->n = 0; - av->m = 0; - av->v = 0; - av->x = 0; - av->r = 0; - av->f = 0; - av->exact = 0; - - target *= 16; - - for (n = 3 ; n <= 127 ; n++) - for (m = 3 ; m <= 127 ; m++) - for (v = 1 ; v <= 8 ; v *= 8) - for (x = 1 ; x <= 8 ; x <<= 1) - for (r = 1 ; r <= 8 ; r <<= 1) { - iFvco = (T1_FREF / m) * n * v; - if (iFvco < T1_FMIN || iFvco > T1_FMAX) - continue; - f = iFvco / (x * r); - if (f >= target) - if ((av->f == 0) || (f - target < av->f - target)) { - - av->n = n; - av->m = m; - if (v == 1) - av->v = 0; - else - av->v = 1; - if (x == 1) - av->x = 0; - else if (x == 2) - av->x = 1; - else if (x == 4) - av->x = 2; - else if (x == 8) - av->x = 3; - if (r == 1) - av->r = 0; - else if (r == 2) - av->r = 1; - else if (r == 4) - av->r = 2; - else if (r == 8) - av->r = 3; - av->f = f; - if (f == target) { - av->exact = 1; - av->f /= 16; - return; - } - } - } - av->f /= 16; -} - diff --git a/sbin/lmccontrol/lmccontrol.8 b/sbin/lmccontrol/lmccontrol.8 deleted file mode 100644 index d1b48e4eeea..00000000000 --- a/sbin/lmccontrol/lmccontrol.8 +++ /dev/null @@ -1,131 +0,0 @@ -.\" $OpenBSD: lmccontrol.8,v 1.22 2013/07/16 09:45:28 schwarze Exp $ -.\" -.\" Copyright (c) 1997-1999 LAN Media Corporation (LMC) -.\" All rights reserved. www.lanmedia.com -.\" -.\" This code is written by Michael Graff <graff@vix.com> for LMC. -.\" -.\" 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. -.\" 3. All marketing or advertising materials mentioning features or -.\" use of this software must display the following acknowledgement: -.\" This product includes software developed by LAN Media Corporation -.\" and its contributors. -.\" 4. Neither the name of LAN Media Corporation nor the names of its -.\" contributors may be used to endorse or promote products derived -.\" from this software without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY LAN MEDIA CORPORATION 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 FOUNDATION 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. -.\" -.Dd $Mdocdate: July 16 2013 $ -.Dt LMCCONTROL 8 -.Os -.Sh NAME -.Nm lmccontrol -.Nd configure Lan Media Corporation SSI/HSSI/T1/T3 devices -.Sh SYNOPSIS -.Nm lmccontrol -.Op Fl CcEeKkOoSs -.Op Fl l Ar speed -.Op Ar interface -.Sh DESCRIPTION -The -.Nm -command controls the operation of the Lan Media devices via the -.Xr lmc 4 -driver. -Most of the parameters that can be changed relate to the -line characteristics or layer 2 protocol options. -You can adjust layer 2 protocol keepalives, and line speed. -Line characteristics which can be adjusted include CRC length, -internal or external clock source, DS3 scrambler, and DS3 cable length. -.Pp -This program controls the Lan Media SSI, HSSI, T1, and DS3 network interfaces. -The SSI is the LMC1000, and runs at various speeds up to 10Mbps. -It requires an external CSU/DSU for operation on T1/E1 lines. -The HSSI card is the LMC5000, and runs at various speeds up to 52Mbps. -It requires an external DSU for operation on DS3 lines. -The DS3 is the LMC5245 and runs at a speed of 45Mbps. -It has no internal clock generator, and does not require external -DSU for DS3 operation. -The T1 card is the LMC1200 and runs at a speed of 1.544Mbps or -2Mbps for E1 operation, without CSU/DSU. -.Pp -The -.Nm -command given without any additional flags retrieves the current card -settings from the driver and prints them out. -.Pp -The options are as follows: -.Bl -tag -width Ds -.It Fl C -Set the interface to use internal clocking. -On the SSI card this uses the internal baud rate generator. -On the HSSI card it uses the PCI bus clock. -This is only valid for SSI/HSSI cards. -.It Fl c -Sets the interface to use an external clock source. -This is only valid for SSI/HSSI cards. -.It Fl E -Sets 32-bit CRC. -.It Fl e -Sets 16-bit CRC. -.It Fl K -Disables layer 2 keepalive. -.It Fl k -Enables layer 2 keepalive. -.It Fl l Ar speed -To manually specify line speed, in bits per second (for devices without -built-in CSU/DSU). -.It Fl O -Program the DS3 card for cable length for over 100 feet in length (higher -power). -.It Fl o -Program the DS3 card for cable lengths of less than 100 feet. -In this mode, the card uses lower power to transmit data for short cable runs, -which might otherwise overdrive a receiver. -This is the default, and will work in most situations even with runs -more than 100 feet. -.It Fl S -Turn DS3 scrambler on. -.It Fl s -Turn DS3 scrambler off. -.It Ar interface -The interface name of the Lan Media card (default is lmc0). -.El -.Sh EXAMPLES -Set an SSI card for a speed of 2048000 bits/sec with HDLC keepalive off: -.Pp -.Dl # lmccontrol lmc0 -l 2048000 -K -.Sh SEE ALSO -.Xr lmc 4 , -.Xr sppp 4 , -.Xr hostname.if 5 , -.Xr ifconfig 8 -.Sh HISTORY -The -.Nm -utility first appeared in -.Ox 2.8 . -.Sh AUTHORS -The -.Nm -utility was written by -.An Michael Graff Aq Mt explorer@vix.com . diff --git a/sbin/lmccontrol/lmccontrol.c b/sbin/lmccontrol/lmccontrol.c deleted file mode 100644 index c5bc3b04786..00000000000 --- a/sbin/lmccontrol/lmccontrol.c +++ /dev/null @@ -1,388 +0,0 @@ -/* $OpenBSD: lmccontrol.c,v 1.11 2015/01/16 06:39:59 deraadt Exp $ */ - -/*- - * Copyright (c) 1997-1999 LAN Media Corporation (LMC) - * All rights reserved. www.lanmedia.com - * - * This code is written by Michael Graff (explorer@vix.com) and - * Rob Braun (bbraun@vix.com) for LMC. - * The code is derived from permitted modifications to software created - * by Matt Thomas (matt@3am-software.com). - * - * 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. - * 3. All marketing or advertising materials mentioning features or use of this - * software must display the following acknowledgement: - * This product includes software developed by LAN Media Corporation - * and its contributors. - * 4. Neither the name of LAN Media Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY LAN MEDIA CORPORATION 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 CORPORATION 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. - */ - -#include <sys/types.h> -#include <sys/ioctl.h> -#include <sys/socket.h> - -#include <net/if.h> -#include <netinet/in.h> - -#include <stdio.h> -#include <stdlib.h> -#include <err.h> -#include <errno.h> -#include <string.h> -#include <unistd.h> -#include <limits.h> - -typedef struct lmc___ctl lmc_ctl_t; -#include <dev/pci/if_lmcioctl.h> - -extern char *optarg; - -void lmc_av9110_freq(u_int32_t, lmc_av9110_t *); -static void dumpdata(char *, lmc_ctl_t *); -void usage(void); - -#define DEFAULT_INTERFACE "lmc0" - -void -usage(void) -{ - extern char *__progname; - - fprintf(stderr, - "usage: %s [-CcEeKkOoSs] [-l speed] [interface]\n", - __progname); -} - -int -main(int argc, char **argv) -{ - lmc_ctl_t ctl, wanted; - int fd, ch; - struct ifreq ifr; - int flag_c = 0; /* clock source external, internal */ - int flag_l = 0; /* line speed */ - int flag_s = 0; /* Scrambler on, off */ - int flag_o = 0; /* cable length < 100, > 100 */ - int flag_e = 0; /* crc 16, 32 */ - int flag_k = 0; /* HDLC keepalive */ - int just_print = 1, ifspecified = 0; - char *ifname; - const char *errmsg; - - ifname = DEFAULT_INTERFACE; - if (argc > 1 && argv[1][0] != '-') { - ifname = argv[1]; - ifspecified = 1; - optind = 2; - } - - while ((ch = getopt(argc, argv, "hi:l:cCsSoOeEkKpP")) != -1) { - switch (ch) { - case 'i': - if (!ifspecified) - ifname = optarg; - break; - case 'l': - flag_l = 1; - just_print = 0; - wanted.clock_rate = (u_int)strtonum(optarg, 0, - UINT_MAX, &errmsg); - if (errmsg) - errx(1, "speed %s: %s", errmsg, optarg); - break; - case 's': - flag_s = 1; - just_print = 0; - wanted.scrambler_onoff = LMC_CTL_OFF; - break; - case 'S': - flag_s = 1; - just_print = 0; - wanted.scrambler_onoff = LMC_CTL_ON; - break; - case 'c': - flag_c = 1; - just_print = 0; - wanted.clock_source = LMC_CTL_CLOCK_SOURCE_EXT; - break; - case 'C': - flag_c = 1; - just_print = 0; - wanted.clock_source = LMC_CTL_CLOCK_SOURCE_INT; - break; - case 'o': - flag_o = 1; - just_print = 0; - wanted.cable_length = LMC_CTL_CABLE_LENGTH_LT_100FT; - break; - case 'O': - flag_o = 1; - just_print = 0; - wanted.cable_length = LMC_CTL_CABLE_LENGTH_GT_100FT; - break; - case 'e': - flag_e = 1; - just_print = 0; - wanted.crc_length = LMC_CTL_CRC_LENGTH_16; - break; - case 'E': - flag_e = 1; - just_print = 0; - wanted.crc_length = LMC_CTL_CRC_LENGTH_32; - break; - case 'k': - flag_k = 1; - just_print = 0; - wanted.keepalive_onoff = LMC_CTL_ON; - break; - case 'K': - flag_k = 1; - just_print = 0; - wanted.keepalive_onoff = LMC_CTL_OFF; - break; - case 'p': -#if defined(linux) - fd = socket(AF_INET, SOCK_DGRAM, 0); - if (fd < 0) { - fprintf(stderr, "socket: %s\n", strerror(errno)); - exit(1); - } - - strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)); - ifr.ifr_data = (caddr_t)&ctl; - if (ioctl(fd, SPPPIOCCISCO, &ifr) < 0) { - fprintf(stderr, "ioctl %s SPPPIOCCISCO: %s\n", - ifr.ifr_name, strerror(errno)); - return (1); - } - return (0); -#else - fprintf (stderr, "This option is not yet supported\n"); -#endif - break; - case 'P': - fd = socket(AF_INET, SOCK_DGRAM, 0); - if (fd < 0) { - fprintf(stderr, "socket: %s\n", strerror(errno)); - return (1); - } - - strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)); - ifr.ifr_data = (caddr_t)&ctl; -#if defined(linux) /* Linux IOCTL */ - if (ioctl(fd, SPPPIOCPPP, &ifr) < 0) { - fprintf(stderr, "ioctl %s SPPPIOCPPP: %s\n", - ifr.ifr_name, strerror(errno)); - return (1); - } - return (0); -#else - fprintf(stderr, "This option is not yet supported\n"); -#endif - break; - case 'h': - default: - usage(); - return (0); - } - } - - fd = socket(AF_INET, SOCK_DGRAM, 0); - if (fd < 0) { - fprintf(stderr, "socket: %s\n", strerror(errno)); - return (1); - } - - strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)); - ifr.ifr_data = (caddr_t)&ctl; - - /* - * Fetch current settings - */ - if (ioctl(fd, LMCIOCGINFO, &ifr) < 0) { - fprintf(stderr, "ioctl %s LMCIOCGINFO: %s\n", - ifr.ifr_name, strerror(errno)); - return (1); - } - - /* - * If none of the flags are set, print status - */ - if (just_print) { - dumpdata(ifname, &ctl); - return (0); - } - - if (flag_c) - ctl.clock_source = wanted.clock_source; - if (flag_l) { - lmc_av9110_freq(wanted.clock_rate, &wanted.cardspec.ssi); - if (wanted.cardspec.ssi.f == 0) { - printf("Unable to calculate requested rate.\n"); - return (1); - } - if (wanted.cardspec.ssi.exact == 0) - printf("Unable to calculate exact frequency," - " using approximation %u\n", - wanted.cardspec.ssi.f); - ctl.clock_rate = wanted.clock_rate; - ctl.cardspec.ssi = wanted.cardspec.ssi; - printf("rate: %u\n", ctl.cardspec.ssi.f); -#if 0 - { - u_int32_t f; - lmc_av9110_t *av; - - av = &wanted.cardspec.ssi; - - printf("m == %u, v == %u, n == %u, r == %u, x == %u\n", - av->m, av->v, av->n, av->r, av->x); - - f = (20000000 / av->m) * (av->v ? 8 : 1) * av->n; - printf("fvco == %u\n", f); - if (av->r == 1) - f /= 2; - else if (av->r == 2) - f /= 4; - else if (av->r == 3) - f /= 8; - printf("fclk == %u (%u)\n", f, f/16); - if (av->x == 1) - f /= 2; - else if (av->x == 2) - f /= 4; - else if (av->x == 3) - f /= 8; - printf("fclkx == %u (%u)\n", f, f/16); - } -#endif - } - if (flag_s) - ctl.scrambler_onoff = wanted.scrambler_onoff; - if (flag_o) - ctl.cable_length = wanted.cable_length; - if (flag_e) - ctl.crc_length = wanted.crc_length; - if (flag_k) - ctl.keepalive_onoff = wanted.keepalive_onoff; - - if (ioctl(fd, LMCIOCSINFO, &ifr) < 0) { - fprintf(stderr, "ioctl %s LMCIOCSINFO: %s\n", - ifr.ifr_name, strerror(errno)); - return (1); - } - - return (0); -} - -char *clock_sources[] = { - "External/Line", - "Internal" -}; - -static void -print_clocking(lmc_ctl_t *ctl) -{ - char *source; - - if (ctl->clock_source > 1) - source = "Unknown Value"; - else - source = clock_sources[ctl->clock_source]; - - printf("\tClock source: %s\n", source); - - if (ctl->cardtype == LMC_CTL_CARDTYPE_LMC1000) - printf("\tClock rate: %u\n", ctl->clock_rate); - - printf("\tApproximate detected rate: %u\n", ctl->ticks * 4096); -} - -char *lmc_t1_cables[] = { - "V.10/RS423", "EIA530A", "reserved", "X.21", "V.35", - "EIA449/EIA530/V.36", "V.28/EIA232", "none", NULL -}; - -static void -print_t1_cable(lmc_ctl_t *ctl) -{ - char *type; - - if (ctl->cable_type > 7) - type = "Invalid cable type"; - else - type = lmc_t1_cables[ctl->cable_type]; - - printf("\tCable type: %s\n", type); -} - -static void -print_protocol(lmc_ctl_t *ctl) -{ - printf("\tHDLC Keepalive: "); - if (ctl->keepalive_onoff) - printf("on\n"); - else - printf("off\n"); -} - -static void -dumpdata(char *name, lmc_ctl_t *ctl) -{ - /* - * Dump the data - */ - switch(ctl->cardtype) { - case LMC_CTL_CARDTYPE_LMC5200: - printf("%s: Lan Media Corporation LMC5200 (HSSI)\n", name); - print_clocking(ctl); - print_protocol(ctl); - break; - case LMC_CTL_CARDTYPE_LMC5245: - printf("%s: Lan Media Corporation LMC5245 (DS3)\n", name); - print_clocking(ctl); - printf("\tCable length: %s than 100 feet\n", - (ctl->cable_length == LMC_CTL_CABLE_LENGTH_LT_100FT - ? "less" : "more")); - printf("\tScrambler: %s\n", - (ctl->scrambler_onoff ? "on" : "off")); - print_protocol(ctl); - break; - case LMC_CTL_CARDTYPE_LMC1000: - printf("%s: Lan Media Corporation LMC1000 (T1/E1)\n", name); - print_clocking(ctl); - print_t1_cable(ctl); - print_protocol(ctl); - break; - case LMC_CTL_CARDTYPE_LMC1200: - printf("%s: Lan Media Corporation LMC1200 (T1)\n", name); - print_clocking(ctl); - print_protocol(ctl); - break; - default: - printf("%s: Unknown card type: %d\n", name, ctl->cardtype); - } - - printf("\tCRC length: %d\n", ctl->crc_length); -} |