diff options
author | Jason Downs <downsj@cvs.openbsd.org> | 1996-08-26 07:50:21 +0000 |
---|---|---|
committer | Jason Downs <downsj@cvs.openbsd.org> | 1996-08-26 07:50:21 +0000 |
commit | 7d3952b0f657ec0e520edf3b1632713773b35e2f (patch) | |
tree | 92caefcb70f2b69946d9fce2168e77946c406acd | |
parent | 7ca38c18a8f1c5e6ea6acf0759cac0330ea35b9f (diff) |
I'm told the Roman Empire fell a few years ago.
-rw-r--r-- | usr.sbin/Makefile | 4 | ||||
-rw-r--r-- | usr.sbin/htable/Makefile | 14 | ||||
-rw-r--r-- | usr.sbin/htable/htable.8 | 150 | ||||
-rw-r--r-- | usr.sbin/htable/htable.c | 621 | ||||
-rw-r--r-- | usr.sbin/htable/htable.h | 73 | ||||
-rw-r--r-- | usr.sbin/htable/parse.y | 166 | ||||
-rw-r--r-- | usr.sbin/htable/scan.l | 101 |
7 files changed, 2 insertions, 1127 deletions
diff --git a/usr.sbin/Makefile b/usr.sbin/Makefile index ffd8b0d57b0..46a0ccfb932 100644 --- a/usr.sbin/Makefile +++ b/usr.sbin/Makefile @@ -1,10 +1,10 @@ -# $OpenBSD: Makefile,v 1.16 1996/08/26 07:39:58 deraadt Exp $ +# $OpenBSD: Makefile,v 1.17 1996/08/26 07:50:12 downsj Exp $ # not yet done: catman SUBDIR= ac accton arp bootpd bootpgw bootpef bootptest \ chown chroot config cron dev_mkdb \ - diskpart edquota gspa htable inetd iostat \ + diskpart edquota gspa inetd iostat \ ipftest ipmon ipsend kgmon \ kvm_mkdb lpr map-mbone mrinfo mrouted mtrace mtree named \ netgroup_mkdb pkg_install portmap pppd pstat pwd_mkdb quot quotaon \ diff --git a/usr.sbin/htable/Makefile b/usr.sbin/htable/Makefile deleted file mode 100644 index 229f53be037..00000000000 --- a/usr.sbin/htable/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# from: @(#)Makefile 5.12 (Berkeley) 7/1/90 -# $Id: Makefile,v 1.1 1995/10/18 08:47:36 deraadt Exp $ - -PROG= htable -SRCS= htable.c parse.c scan.c -MAN= htable.8 -CFLAGS+=-I. -I${.CURDIR} -LDADD+= -ll -DPADD+= ${LIBL} -CLEANFILES+=parse.c scan.c y.tab.h - -.include <bsd.prog.mk> - -${OBJS}: scan.c parse.c diff --git a/usr.sbin/htable/htable.8 b/usr.sbin/htable/htable.8 deleted file mode 100644 index ed4d9d7f8e7..00000000000 --- a/usr.sbin/htable/htable.8 +++ /dev/null @@ -1,150 +0,0 @@ -.\" Copyright (c) 1983, 1991 The Regents of the University of California. -.\" All rights reserved. -.\" -.\" 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 advertising materials mentioning features or use of this software -.\" must display the following acknowledgement: -.\" This product includes software developed by the University of -.\" California, Berkeley and its contributors. -.\" 4. Neither the name of the University 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 THE REGENTS 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 REGENTS 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. -.\" -.\" from: @(#)htable.8 6.6 (Berkeley) 3/16/91 -.\" $Id: htable.8,v 1.1 1995/10/18 08:47:36 deraadt Exp $ -.\" -.Dd March 16, 1991 -.Dt HTABLE 8 -.Os BSD 4.2 -.Sh NAME -.Nm htable -.Nd convert -.Tn NIC -standard format host tables -.Sh SYNOPSIS -.Nm htable -.Op Fl c Ar connected-nets -.Op Fl l Ar local-nets -.Ar file -.Sh DESCRIPTION -.Nm Htable -is used to convert host files in the format specified -in Internet -.Tn RFC -810 to the format used by the network -library routines. Three files are created as a result -of running -.Nm htable : -.Pa hosts , -.Pa networks , -and -.Pa gateways . -The -.Xr hosts -file may be used by the -.Xr gethostbyname 3 -routines in mapping host names to addresses -if the nameserver, -.Xr named 8 , -is not used. -The -.Pa networks -file is used by the -.Xr getnetent 3 -routines in mapping network names to numbers. -The -.Pa gateways -file may be used by the routing daemon -in identifying -.Dq passive -Internet gateways; -see -.Xr routed 8 -for an explanation. -.Pp -Options available for -.Nm htable : -.Bl -tag -width Ds -.It Fl c Ar connected-nets -If the gateways file is to be used, -.Ar connected-nets -is a list of networks to which the host is directly connected. -The networks, separated by commas, -may be given by name or in Internet-standard dot notation, -for example: -.Bd -literal -offset indent -\-c arpanet,128.32,local-ether-net. -.Ed -.Pp -.Nm Htable -only includes gateways -which are directly connected to one of the networks specified, -or which can be reached from another gateway on a connected net. -.It Fl l Ar local-nets -If the -.Fl l -option is given with a list of networks (in the same format as for -.Fl c ) , -these networks will be treated as ``local,'' -and information about hosts on local networks is -taken only from the localhosts file. -Entries for local hosts from the main database will be omitted. -This allows the localhosts file to completely override -any entries in the input file. -.El -.Pp -If any of the files -.Pa localhosts , -.Pa localnetworks , -or -.Pa localgateways -are present in the current directory, -the file's contents is prepended to the -output file. -Of these, only the gateways file is interpreted. -This allows sites to maintain local aliases and -entries which are not normally present in the -master database. -Only one gateway to each network will be placed in the gateways file; -a gateway listed in the localgateways file will override any in the -input file. -.Pp -.Nm Htable -is best used in conjunction with the -.Xr gettable 8 -program which retrieves the -.Tn NIC -database from a host. -.Sh SEE ALSO -.Xr netintro 4 , -.Xr gettable 8 , -.Xr named 8 -.Sh BUGS -If the name-domain system provided network name mapping well as host -name mapping, -.Nm htable -would no longer be needed. -.Sh HISTORY -The -.Nm -command appeared in -.Bx 4.2 . diff --git a/usr.sbin/htable/htable.c b/usr.sbin/htable/htable.c deleted file mode 100644 index 68f78c128a7..00000000000 --- a/usr.sbin/htable/htable.c +++ /dev/null @@ -1,621 +0,0 @@ -/* - * Copyright (c) 1983 Regents of the University of California. - * All rights reserved. - * - * 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 advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University 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 THE REGENTS 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 REGENTS 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. - */ - -#ifndef lint -char copyright[] = -"@(#) Copyright (c) 1983 Regents of the University of California.\n\ - All rights reserved.\n"; -#endif /* not lint */ - -#ifndef lint -/*static char sccsid[] = "from: @(#)htable.c 5.10 (Berkeley) 2/6/91";*/ -static char rcsid[] = "$Id: htable.c,v 1.1 1995/10/18 08:47:36 deraadt Exp $"; -#endif /* not lint */ - -/* - * htable - convert NIC host table into a UNIX format. - * NIC format is described in RFC 810, 1 March 1982. - */ -#include <stdio.h> -#include <string.h> -#include <ctype.h> -#include <errno.h> -#include <netdb.h> - -#include "htable.h" /* includes <sys/types.h> */ - -#include <sys/socket.h> -#include <arpa/inet.h> -#include <stdlib.h> - -#define DATELINES 3 /* these lines usually contain the date */ -#define MAXNETS 30 /* array size for local, connected nets */ - -FILE *hf; /* hosts file */ -FILE *gf; /* gateways file */ -FILE *nf; /* networks file */ -struct gateway *savegateway(), *gatewayto(); - -int connected_nets[MAXNETS]; -int nconnected; -int local_nets[MAXNETS]; -int nlocal; -char *myname; - -main(argc, argv) - int argc; - char *argv[]; -{ - int errs; - - infile = "(stdin)"; - myname = argv[0]; - argc--; - argv++; - while (argc--) { - if (*argv[0] == '-') { - switch (argv[0][1]) { - case 'c': - nconnected = addlocal(argv[1], connected_nets); - argv++; - argc--; - break; - case 'l': - nlocal = addlocal(argv[1], local_nets); - argv++; - argc--; - break; - default: - usage(); - /*NOTREACHED*/ - } - } else { - infile = argv[0]; - if (freopen(infile, "r", stdin) == NULL) { - perror(infile); - exit(1); - } - } - argv++; - } - hf = fopen("hosts", "w"); - if (hf == NULL) { - perror("hosts"); - exit(1); - } - copylocal(hf, "localhosts"); - gf = fopen("gateways", "w"); - if (gf == NULL) { - perror("gateways"); - exit(1); - } - copygateways("localgateways"); - nf = fopen("networks", "w"); - if (nf == NULL) { - perror("networks"); - exit(1); - } - copylocal(nf, "localnetworks"); - copycomments(stdin, hf, DATELINES); - errs = yyparse(); - dogateways(); - exit(errs); -} - -usage() -{ - fprintf(stderr, - "usage: %s [ -c connected-nets ] [-l local-nets ] [ input-file ]\n", - myname); - exit(1); -} - -/* - * Turn a comma-separated list of network names or numbers in dot notation - * (e.g. "arpanet, 128.32") into an array of net numbers. - */ -addlocal(arg, nets) - char *arg; - int *nets; -{ - register char *p, c; - register int nfound = 0; - - do { - p = arg; - while (*p && *p != ',' && !isspace(*p)) - p++; - c = *p; - *p = 0; - while (*arg && isspace(*arg)) - arg++; - if (*arg == 0) - continue; - if (nfound == MAXNETS) { - fprintf(stderr, "%s: Too many networks in list\n", - myname); - return (nfound); - } - if (getnetaddr(arg, &nets[nfound])) - nfound++; - else { - fprintf(stderr, "%s: %s: unknown network\n", - myname, arg); - exit(1); - } - arg = p + 1; - } while (c); - return (nfound); -} - -struct name * -newname(str) - char *str; -{ - char *p; - struct name *nm; - - p = malloc(strlen(str) + 1); - strcpy(p, str); - nm = (struct name *)malloc(sizeof (struct name)); - nm->name_val = p; - nm->name_link = NONAME; - return (nm); -} - -char * -lower(str) - char *str; -{ - register char *cp = str; - - while (*cp) { - if (isupper(*cp)) - *cp = tolower(*cp); - cp++; - } - return (str); -} - -do_entry(keyword, addrlist, namelist, cputype, opsys, protos) - int keyword; - struct addr *addrlist; - struct name *namelist, *cputype, *opsys, *protos; -{ - register struct addr *al, *al2; - register struct name *nl; - struct addr *connect_addr; - char *cp; - - switch (keyword) { - - case KW_NET: - nl = namelist; - if (nl == NONAME) { - fprintf(stderr, "htable: net"); - putnet(stderr, inet_netof(addrlist->addr_val)); - fprintf(stderr, " missing names.\n"); - break; - } - fprintf(nf, "%-16.16s", lower(nl->name_val)); - al2 = addrlist; - while (al = al2) { - char *cp; - - putnet(nf, inet_netof(al->addr_val)); - cp = "\t%s"; - while (nl = nl->name_link) { - fprintf(nf, cp, lower(nl->name_val)); - cp = " %s"; - } - putc('\n', nf); - al2 = al->addr_link; - free((char *)al); - } - break; - - case KW_GATEWAY: - /* locate locally connected address, if one */ - for (al = addrlist; al; al = al->addr_link) - if (connectedto(inet_netof(al->addr_val))) - break; - if (al == NULL) { - /* - * Not connected to known networks. Save for later. - */ - struct gateway *gw, *firstgw = (struct gateway *) NULL; - - for (al = addrlist; al; al = al->addr_link) { - register int net; - - net = inet_netof(al->addr_val); - gw = savegateway(namelist, net, - al->addr_val, 0); - if (firstgw == (struct gateway *) NULL) - firstgw = gw; - gw->g_firstent = firstgw; - } - freeaddrs(addrlist); - goto dontfree; - } - /* - * Connected to a known network. - * Mark this as the gateway to all other networks - * that are on the addrlist (unless we already have - * gateways to them). - */ - connect_addr = al; - for (al = addrlist; al; al = al->addr_link) { - register int net; - - /* suppress duplicates -- not optimal */ - net = inet_netof(al->addr_val); - if (connectedto(net) || gatewayto(net)) - continue; - printgateway(net, namelist->name_val, 1); - (void) savegateway(namelist, net, al->addr_val, 1); - } - /* - * Put the gateway in the hosts file. - */ - putaddr(hf, connect_addr->addr_val); - cp = "%s"; - for (nl = namelist; nl; nl = nl->name_link) { - fprintf(hf, cp, lower(nl->name_val)); - cp = " %s"; - } - fprintf(hf, "\t# gateway\n"); - freeaddrs(addrlist); - goto dontfree; - - case KW_HOST: - al2 = addrlist; - while (al = al2) { - if (!local(inet_netof(al->addr_val))) { - char *cp; - - putaddr(hf, al->addr_val); - cp = "%s"; - for (nl = namelist; nl; nl = nl->name_link) { - fprintf(hf, cp, lower(nl->name_val)); - cp = " %s"; - } - putc('\n', hf); - } - al2 = al->addr_link; - free((char *)al); - } - break; - - default: - fprintf(stderr, "Unknown keyword: %d.\n", keyword); - } - freenames(namelist); -dontfree: - freenames(protos); -} - -printgateway(net, name, metric) - int net; - char *name; - int metric; -{ - struct netent *np; - - fprintf(gf, "net "); - np = getnetbyaddr(net, AF_INET); - if (np) - fprintf(gf, "%s", np->n_name); - else - putnet(gf, net); - fprintf(gf, " gateway %s metric %d passive\n", - lower(name), metric); -} - -copylocal(f, filename) - FILE *f; - char *filename; -{ - register FILE *lhf; - register cc; - char buf[BUFSIZ]; - extern int errno; - - lhf = fopen(filename, "r"); - if (lhf == NULL) { - if (errno != ENOENT) { - perror(filename); - exit(1); - } - fprintf(stderr, "Warning, no %s file.\n", filename); - return; - } - while (cc = fread(buf, 1, sizeof(buf), lhf)) - fwrite(buf, 1, cc, f); - fclose(lhf); -} - -copygateways(filename) - char *filename; -{ - register FILE *lhf; - struct name *nl; - char type[80]; - char dname[80]; - char gname[80]; - char junk[80]; - char buf[500]; - struct in_addr addr; - int net, metric; - extern int errno; - - lhf = fopen(filename, "r"); - if (lhf == NULL) { - if (errno != ENOENT) { - perror(filename); - exit(1); - } - fprintf(stderr, "Warning, no %s file.\n", filename); - return; - } - /* format: {net | host} XX gateway XX metric DD [passive]\n */ - for (;;) { - junk[0] = 0; - if (fgets(buf, sizeof(buf), lhf) == (char *)NULL) - break; - fputs(buf, gf); - if (buf[0] == '#' || - sscanf(buf, "%s %s gateway %s metric %d %s", - type, dname, gname, &metric, junk) < 5) - continue; - if (strcmp(type, "net")) - continue; - if (!getnetaddr(dname, &net)) - continue; - if (!gethostaddr(gname, &addr.s_addr)) - continue; - nl = newname(gname); - (void) savegateway(nl, net, addr, metric); - } - fclose(lhf); -} - -getnetaddr(name, addr) - char *name; - int *addr; -{ - struct netent *np = getnetbyname(name); - - if (np == 0) { - *addr = inet_network(name); - return (*addr != -1); - } else { - if (np->n_addrtype != AF_INET) - return (0); - *addr = np->n_net; - return (1); - } -} - -gethostaddr(name, addr) - char *name; - u_long *addr; -{ - struct hostent *hp; - - hp = gethostbyname(name); - if (hp) { - *addr = *(u_long *)(hp->h_addr); - return (1); - } - *addr = inet_addr(name); - return (*addr != -1); -} - -copycomments(in, out, ccount) - FILE *in, *out; - int ccount; -{ - int count; - char buf[BUFSIZ], *fgets(); - - for (count=0; count < ccount; count++) { - if ((fgets(buf, sizeof(buf), in) == NULL) || (buf[0] != ';')) - return; - buf[0] = '#'; - fputs(buf, out); - } - return; -} -#define UC(b) (((int)(b))&0xff) - -/* - * Print network number in internet-standard dot notation; - * v is in host byte order. - */ -putnet(f, v) - FILE *f; - register int v; -{ - if (v < 128) - fprintf(f, "%d", v); - else if (v < 65536) - fprintf(f, "%d.%d", UC(v >> 8), UC(v)); - else - fprintf(f, "%d.%d.%d", UC(v >> 16), UC(v >> 8), UC(v)); -} - -putaddr(f, v) - FILE *f; - struct in_addr v; -{ - fprintf(f, "%-16.16s", inet_ntoa(v)); -} - -freenames(list) - struct name *list; -{ - register struct name *nl, *nl2; - - nl2 = list; - while (nl = nl2) { - nl2 = nl->name_link; - free(nl->name_val); - free((char *)nl); - } -} - -freeaddrs(list) - struct addr *list; -{ - register struct addr *al, *al2; - - al2 = list; - while (al = al2) - al2 = al->addr_link, free((char *)al); -} - -struct gateway *gateways = 0; -struct gateway *lastgateway = 0; - -struct gateway * -gatewayto(net) - register int net; -{ - register struct gateway *gp; - - for (gp = gateways; gp; gp = gp->g_link) - if ((gp->g_net == net) && (gp->g_metric > 0)) - return (gp); - return ((struct gateway *) NULL); -} - -struct gateway * -savegateway(namelist, net, addr, metric) - struct name *namelist; - struct in_addr addr; - int net, metric; -{ - register struct gateway *gp; - - gp = (struct gateway *)malloc(sizeof (struct gateway)); - if (gp == 0) { - fprintf(stderr, "htable: out of memory\n"); - exit(1); - } - gp->g_link = (struct gateway *) NULL; - if (lastgateway) - lastgateway->g_link = gp; - else - gateways = gp; - lastgateway = gp; - gp->g_name = namelist; - gp->g_net = net; - gp->g_addr = addr; - gp->g_metric = metric; - if (metric == 1) - gp->g_dst = gp; - return (gp); -} - -connectedto(net) - u_long net; -{ - register i; - - for (i = 0; i < nconnected; i++) - if (connected_nets[i] == net) - return(1); - return(0); -} - -local(net) - u_long net; -{ - register i; - - for (i = 0; i < nlocal; i++) - if (local_nets[i] == net) - return(1); - return(0); -} - -#define MAXHOPS 10 - -/* - * Go through list of gateways, finding connections for gateways - * that are not yet connected. - */ -dogateways() -{ - register struct gateway *gp, *gw, *ggp; - register int hops, changed = 1; - struct name *nl; - char *cp; - - for (hops = 0; hops < MAXHOPS && changed; hops++, changed = 0) { - for (gp = gateways; gp; gp = gp->g_link) - if ((gp->g_metric == 0) && (gw = gatewayto(gp->g_net))) { - /* - * Found a new connection. - * For each other network that this gateway is on, - * add a new gateway to that network. - */ - changed = 1; - gp->g_dst = gw->g_dst; - gp->g_metric = gw->g_metric + 1; - for (ggp = gp->g_firstent; ggp->g_name == gp->g_name; - ggp = ggp->g_link) { - if (ggp == gp) - continue; - if (gatewayto(ggp->g_net)) - continue; - ggp->g_dst = gp->g_dst; - ggp->g_metric = gp->g_metric; - printgateway(ggp->g_net, - gw->g_dst->g_name->name_val, gp->g_metric); - } - /* - * Put the gateway in the hosts file, - * using the address for the connected net. - */ - putaddr(hf, gp->g_addr); - cp = "%s"; - for (nl = gp->g_name; nl; nl = nl->name_link) { - fprintf(hf, cp, lower(nl->name_val)); - cp = " %s"; - } - fprintf(hf, "\t# gateway\n"); - } - } -} diff --git a/usr.sbin/htable/htable.h b/usr.sbin/htable/htable.h deleted file mode 100644 index ac90abbf05e..00000000000 --- a/usr.sbin/htable/htable.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 1983 Regents of the University of California. - * All rights reserved. - * - * 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 advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University 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 THE REGENTS 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 REGENTS 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. - * - * from: @(#)htable.h 5.5 (Berkeley) 2/6/91 - * $Id: htable.h,v 1.1 1995/10/18 08:47:36 deraadt Exp $ - */ - -#include <sys/types.h> -#include <netinet/in.h> - -/* - * common definitions for htable - */ - -struct addr { - struct in_addr addr_val; - struct addr *addr_link; -}; - -struct name { - char *name_val; - struct name *name_link; -}; - -struct gateway { - struct gateway *g_link; - struct gateway *g_dst; /* connected gateway if metric > 0 */ - struct gateway *g_firstent; /* first entry for this gateway */ - struct name *g_name; - int g_net; - struct in_addr g_addr; /* address on g_net */ - int g_metric; /* hops to this net */ -}; - -#define NOADDR ((struct addr *)0) -#define NONAME ((struct name *)0) - -#define KW_NET 1 -#define KW_GATEWAY 2 -#define KW_HOST 3 - -struct name *newname(); - -char *infile; /* Input file name */ diff --git a/usr.sbin/htable/parse.y b/usr.sbin/htable/parse.y deleted file mode 100644 index dc0847b7076..00000000000 --- a/usr.sbin/htable/parse.y +++ /dev/null @@ -1,166 +0,0 @@ -%{ - -/* - * Copyright (c) 1983 Regents of the University of California. - * All rights reserved. - * - * 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 advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University 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 THE REGENTS 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 REGENTS 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. - */ - -#ifndef lint -/*static char sccsid[] = "from: @(#)parse.y 5.5 (Berkeley) 6/1/90";*/ -static char rcsid[] = "$Id: parse.y,v 1.1 1995/10/18 08:47:36 deraadt Exp $"; -#endif /* not lint */ - -#include <stdlib.h> -#include "htable.h" -%} - -%union { - int number; - struct addr *addrlist; - struct name *namelist; -} -%start Table - -%token END -%token <number> NUMBER KEYWORD -%token <namelist> NAME - -%type <namelist> Names Cputype Opsys Protos Proto -%type <addrlist> Addresses Address -%% -Table : Entry - | Table Entry - ; - -Entry : KEYWORD ':' Addresses ':' Names ':' END - = { - do_entry($1, $3, $5, NONAME, NONAME, NONAME); - } - | KEYWORD ':' Addresses ':' Names ':' Cputype ':' END - = { - do_entry($1, $3, $5, $7, NONAME, NONAME); - } - | KEYWORD ':' Addresses ':' Names ':' Cputype ':' Opsys ':' END - = { - do_entry($1, $3, $5, $7, $9, NONAME); - } - | KEYWORD ':' Addresses ':' Names ':' Cputype ':' Opsys ':' ':' END - = { - do_entry($1, $3, $5, $7, $9, NONAME); - } - | KEYWORD ':' Addresses ':' Names ':' Cputype ':' Opsys ':' Protos ':' END - = { - do_entry($1, $3, $5, $7, $9, $11); - } - | error END - | END /* blank line */ - ; - -Addresses: Address - = { - $$ = $1; - } - | Address ',' Addresses - = { - $1->addr_link = $3; - $$ = $1; - } - ; - -Address : NUMBER '.' NUMBER '.' NUMBER '.' NUMBER - = { - char *a; - - $$ = (struct addr *)malloc(sizeof (struct addr)); - a = (char *)&($$->addr_val); - a[0] = $1; a[1] = $3; a[2] = $5; a[3] = $7; - $$->addr_link = NOADDR; - } - ; - -Names : NAME - = { - $$ = $1; - } - | NAME ',' Names - = { - $1->name_link = $3; - $$ = $1; - } - ; - -Cputype : /* empty */ - = { - $$ = NONAME; - } - | NAME - = { - $$ = $1; - } - ; - -Opsys : /* empty */ - = { - $$ = NONAME; - } - | NAME - = { - $$ = $1; - } - ; - -Protos : Proto - = { - $$ = $1; - } - | Proto ',' Protos - = { - $1->name_link = $3; - $$ = $1; - } - ; - -Proto : NAME - = { - $$ = $1; - } - ; -%% - -#include <stdio.h> - -extern int yylineno; - -yyerror(msg) - char *msg; -{ - fprintf(stderr, "\"%s\", line %d: %s\n", infile, yylineno, msg); -} diff --git a/usr.sbin/htable/scan.l b/usr.sbin/htable/scan.l deleted file mode 100644 index 418286c9415..00000000000 --- a/usr.sbin/htable/scan.l +++ /dev/null @@ -1,101 +0,0 @@ -%{ -/*- - * Copyright (c) 1983 The Regents of the University of California. - * All rights reserved. - * - * 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 advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University 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 THE REGENTS 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 REGENTS 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. - */ - -#ifndef lint -/*static char sccsid[] = "from: @(#)scan.l 5.8 (Berkeley) 4/19/91";*/ -static char rcsid[] = "$Id: scan.l,v 1.1 1995/10/18 08:47:36 deraadt Exp $"; -#endif /* not lint */ - -extern int yylineno; -int yylineno = 1; - -#include "y.tab.h" -#include "htable.h" -%} - -BLANK [ \t] -DIGIT [0-9] -ALPHA [A-Za-z] -ANUM [0-9A-Za-z] -NAMECHR [0-9A-Za-z./-] - -%% -"NET" { - yylval.number = KW_NET; - return (KEYWORD); - } - -"GATEWAY" { - yylval.number = KW_GATEWAY; - return (KEYWORD); - } - -"HOST" { - yylval.number = KW_HOST; - return (KEYWORD); - } - -{ALPHA}{NAMECHR}*{ANUM} { - yylval.namelist = newname(yytext); - return (NAME); - } - -{ALPHA} { - yylval.namelist = newname(yytext); - return (NAME); - } - -{DIGIT}+{ALPHA}{NAMECHR}* { - fprintf(stderr, "Warning: nonstandard name \"%s\"\n", - yytext); - yylval.namelist = newname(yytext); - return (NAME); - } - -{DIGIT}+ { - yylval.number = atoi(yytext); - return (NUMBER); - } - -"." return ('.'); -":" return (':'); -"," return (','); -"/" return ('/'); -";".* ; -"\n"{BLANK}+ ++yylineno; -{BLANK}+ ; -"\n" ++yylineno; return (END); -. fprintf(stderr, "Illegal char: '%s'\n", yytext); - -%% |