aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/timed/timedc
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/timed/timedc')
-rw-r--r--usr.sbin/timed/timedc/Makefile15
-rw-r--r--usr.sbin/timed/timedc/Makefile.depend19
-rw-r--r--usr.sbin/timed/timedc/cmds.c544
-rw-r--r--usr.sbin/timed/timedc/cmdtab.c59
-rw-r--r--usr.sbin/timed/timedc/extern.h52
-rw-r--r--usr.sbin/timed/timedc/timedc.8141
-rw-r--r--usr.sbin/timed/timedc/timedc.c254
-rw-r--r--usr.sbin/timed/timedc/timedc.h61
8 files changed, 0 insertions, 1145 deletions
diff --git a/usr.sbin/timed/timedc/Makefile b/usr.sbin/timed/timedc/Makefile
deleted file mode 100644
index d836912d915b..000000000000
--- a/usr.sbin/timed/timedc/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-# @(#)Makefile 8.1 (Berkeley) 6/6/93
-# $FreeBSD$
-
-.PATH: ${.CURDIR:H}/timed
-
-PROG= timedc
-MAN= timedc.8
-SRCS= cmds.c cmdtab.c timedc.c byteorder.c measure.c cksum.c
-BINOWN= root
-BINMODE= 4555
-
-WARNS?= 1
-
-.include "../../Makefile.inc"
-.include <bsd.prog.mk>
diff --git a/usr.sbin/timed/timedc/Makefile.depend b/usr.sbin/timed/timedc/Makefile.depend
deleted file mode 100644
index 782b0d5c171e..000000000000
--- a/usr.sbin/timed/timedc/Makefile.depend
+++ /dev/null
@@ -1,19 +0,0 @@
-# $FreeBSD$
-# Autogenerated - do NOT edit!
-
-DIRDEPS = \
- gnu/lib/csu \
- include \
- include/arpa \
- include/protocols \
- include/xlocale \
- lib/${CSU_DIR} \
- lib/libc \
- lib/libcompiler_rt \
-
-
-.include <dirdeps.mk>
-
-.if ${DEP_RELDIR} == ${_DEP_RELDIR}
-# local dependencies - needed for -jN in clean tree
-.endif
diff --git a/usr.sbin/timed/timedc/cmds.c b/usr.sbin/timed/timedc/cmds.c
deleted file mode 100644
index 835246271cb2..000000000000
--- a/usr.sbin/timed/timedc/cmds.c
+++ /dev/null
@@ -1,544 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-3-Clause
- *
- * Copyright (c) 1985, 1993
- * 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. 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.
- */
-
-#if 0
-#ifndef lint
-static char sccsid[] = "@(#)cmds.c 8.1 (Berkeley) 6/6/93";
-#endif /* not lint */
-#endif
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include "timedc.h"
-#include <sys/file.h>
-
-#include <arpa/inet.h>
-
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <netinet/ip_icmp.h>
-
-#include <err.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#define TSPTYPES
-#include <protocols/timed.h>
-
-#define SECHR (60*60)
-#define SECDAY (24*SECHR)
-
-# define DATE_PROTO "udp"
-# define DATE_PORT "time"
-
-
-int sock;
-int sock_raw;
-char myname[MAXHOSTNAMELEN];
-struct hostent *hp;
-struct sockaddr_in server;
-struct sockaddr_in dayaddr;
-extern int measure_delta;
-
-void bytenetorder(struct tsp *);
-void bytehostorder(struct tsp *);
-
-
-#define BU (2208988800UL) /* seconds before UNIX epoch */
-
-
-/* compute the difference between our date and another machine
- */
-static int /* difference in days from our time */
-daydiff(char *hostname)
-{
- int i;
- int trials;
- struct timeval tout, now;
- fd_set ready;
- struct sockaddr from;
- int fromlen;
- unsigned long sec;
-
-
- /* wait 2 seconds between 10 tries */
- tout.tv_sec = 2;
- tout.tv_usec = 0;
- for (trials = 0; trials < 10; trials++) {
- /* ask for the time */
- sec = 0;
- if (sendto(sock, &sec, sizeof(sec), 0,
- (struct sockaddr*)&dayaddr, sizeof(dayaddr)) < 0) {
- warn("sendto(sock)");
- return 0;
- }
-
- for (;;) {
- FD_ZERO(&ready);
- FD_SET(sock, &ready);
- i = select(sock+1, &ready, (fd_set *)0,
- (fd_set *)0, &tout);
- if (i < 0) {
- if (errno == EINTR)
- continue;
- warn("select(date read)");
- return 0;
- }
- if (0 == i)
- break;
-
- fromlen = sizeof(from);
- if (recvfrom(sock,&sec,sizeof(sec),0,
- &from,&fromlen) < 0) {
- warn("recvfrom(date read)");
- return 0;
- }
-
- sec = ntohl(sec);
- if (sec < BU) {
- warnx("%s says it is before 1970: %lu",
- hostname, sec);
- return 0;
- }
- sec -= BU;
-
- (void)gettimeofday(&now, NULL);
- return (sec - now.tv_sec);
- }
- }
-
- /* if we get here, we tried too many times */
- warnx("%s will not tell us the date", hostname);
- return 0;
-}
-
-
-/*
- * Clockdiff computes the difference between the time of the machine on
- * which it is called and the time of the machines given as argument.
- * The time differences measured by clockdiff are obtained using a sequence
- * of ICMP TSTAMP messages which are returned to the sender by the IP module
- * in the remote machine.
- * In order to compare clocks of machines in different time zones, the time
- * is transmitted (as a 32-bit value) in milliseconds since midnight UT.
- * If a hosts uses a different time format, it should set the high order
- * bit of the 32-bit quantity it transmits.
- * However, VMS apparently transmits the time in milliseconds since midnight
- * local time (rather than GMT) without setting the high order bit.
- * Furthermore, it does not understand daylight-saving time. This makes
- * clockdiff behaving inconsistently with hosts running VMS.
- *
- * In order to reduce the sensitivity to the variance of message transmission
- * time, clockdiff sends a sequence of messages. Yet, measures between
- * two `distant' hosts can be affected by a small error. The error can,
- * however, be reduced by increasing the number of messages sent in each
- * measurement.
- */
-void
-clockdiff(int argc, char *argv[])
-{
- int measure_status;
- extern int measure(u_long, u_long, char *, struct sockaddr_in*, int);
- register int avg_cnt;
- register long avg;
- struct servent *sp;
-
- if (argc < 2) {
- printf("usage: timedc clockdiff host ...\n");
- return;
- }
-
- if (gethostname(myname, sizeof(myname) - 1) < 0)
- err(1, "gethostname");
-
- /* get the address for the date ready */
- sp = getservbyname(DATE_PORT, DATE_PROTO);
- if (!sp) {
- warnx("%s/%s: unknown service", DATE_PORT, DATE_PROTO);
- dayaddr.sin_port = 0;
- } else {
- dayaddr.sin_port = sp->s_port;
- }
-
- while (argc > 1) {
- argc--; argv++;
- hp = gethostbyname(*argv);
- if (hp == NULL) {
- warnx("%s: %s", *argv, hstrerror(h_errno));
- continue;
- }
-
- server.sin_family = hp->h_addrtype;
- bcopy(hp->h_addr, &server.sin_addr.s_addr, hp->h_length);
- for (avg_cnt = 0, avg = 0; avg_cnt < 16; avg_cnt++) {
- measure_status = measure(10000,100, *argv, &server, 1);
- if (measure_status != GOOD)
- break;
- avg += measure_delta;
- }
- if (measure_status == GOOD)
- measure_delta = avg/avg_cnt;
-
- switch (measure_status) {
- case HOSTDOWN:
- printf("%s is down\n", hp->h_name);
- continue;
- case NONSTDTIME:
- printf("%s transmits a non-standard time format\n",
- hp->h_name);
- continue;
- case UNREACHABLE:
- printf("%s is unreachable\n", hp->h_name);
- continue;
- }
-
- /*
- * Try to get the date only after using ICMP timestamps to
- * get the time. This is because the date protocol
- * is optional.
- */
- if (dayaddr.sin_port != 0) {
- dayaddr.sin_family = hp->h_addrtype;
- bcopy(hp->h_addr, &dayaddr.sin_addr.s_addr,
- hp->h_length);
- avg = daydiff(*argv);
- if (avg > SECDAY) {
- printf("time on %s is %ld days ahead %s\n",
- hp->h_name, avg/SECDAY, myname);
- continue;
- } else if (avg < -SECDAY) {
- printf("time on %s is %ld days behind %s\n",
- hp->h_name, -avg/SECDAY, myname);
- continue;
- }
- }
-
- if (measure_delta > 0) {
- printf("time on %s is %d ms. ahead of time on %s\n",
- hp->h_name, measure_delta, myname);
- } else if (measure_delta == 0) {
- printf("%s and %s have the same time\n",
- hp->h_name, myname);
- } else {
- printf("time on %s is %d ms. behind time on %s\n",
- hp->h_name, -measure_delta, myname);
- }
- }
- return;
-}
-
-
-/*
- * finds location of master timedaemon
- */
-void
-msite(int argc, char *argv[])
-{
- ssize_t cc;
- fd_set ready;
- struct sockaddr_in dest;
- int i, length;
- struct sockaddr_in from;
- struct timeval tout;
- struct tsp msg;
- struct servent *srvp;
- char *tgtname;
-
- if (argc < 1) {
- printf("usage: timedc msite [host ...]\n");
- return;
- }
-
- srvp = getservbyname("timed", "udp");
- if (srvp == NULL) {
- warnx("timed/udp: unknown service");
- return;
- }
- dest.sin_port = srvp->s_port;
- dest.sin_family = AF_INET;
-
- if (gethostname(myname, sizeof(myname) - 1) < 0)
- err(1, "gethostname");
- i = 1;
- do {
- tgtname = (i >= argc) ? myname : argv[i];
- hp = gethostbyname(tgtname);
- if (hp == NULL) {
- warnx("%s: %s", tgtname, hstrerror(h_errno));
- continue;
- }
- bcopy(hp->h_addr, &dest.sin_addr.s_addr, hp->h_length);
-
- (void)strlcpy(msg.tsp_name, myname, sizeof(msg.tsp_name));
- msg.tsp_type = TSP_MSITE;
- msg.tsp_vers = TSPVERSION;
- bytenetorder(&msg);
- if (sendto(sock, &msg, sizeof(struct tsp), 0,
- (struct sockaddr*)&dest,
- sizeof(struct sockaddr)) < 0) {
- warn("sendto");
- continue;
- }
-
- tout.tv_sec = 15;
- tout.tv_usec = 0;
- FD_ZERO(&ready);
- FD_SET(sock, &ready);
- if (select(FD_SETSIZE, &ready, (fd_set *)0, (fd_set *)0,
- &tout)) {
- length = sizeof(from);
- cc = recvfrom(sock, &msg, sizeof(struct tsp), 0,
- (struct sockaddr *)&from, &length);
- if (cc < 0) {
- warn("recvfrom");
- continue;
- }
- /*
- * The 4.3BSD protocol spec had a 32-byte tsp_name field, and
- * this is still OS-dependent. Demand that the packet is at
- * least long enough to hold a 4.3BSD packet.
- */
- if (cc < (sizeof(struct tsp) - MAXHOSTNAMELEN + 32)) {
- fprintf(stderr,
- "short packet (%zd/%zu bytes) from %s\n",
- cc, sizeof(struct tsp) - MAXHOSTNAMELEN + 32,
- inet_ntoa(from.sin_addr));
- continue;
- }
- bytehostorder(&msg);
- if (msg.tsp_type == TSP_ACK) {
- printf("master timedaemon at %s is %s\n",
- tgtname, msg.tsp_name);
- } else {
- if (msg.tsp_type >= TSPTYPENUMBER)
- printf("unknown ack received: %u\n",
- msg.tsp_type);
- else
- printf("wrong ack received: %s\n",
- tsptype[msg.tsp_type]);
- }
- } else {
- printf("communication error with %s\n", tgtname);
- }
- } while (++i < argc);
-}
-
-/*
- * quits timedc
- */
-void
-quit(void)
-{
- exit(0);
-}
-
-
-/*
- * Causes the election timer to expire on the selected hosts
- * It sends just one udp message per machine, relying on
- * reliability of communication channel.
- */
-void
-testing(int argc, char *argv[])
-{
- struct servent *srvp;
- struct sockaddr_in sin;
- struct tsp msg;
-
- if (argc < 2) {
- printf("usage: timedc election host1 [host2 ...]\n");
- return;
- }
-
- srvp = getservbyname("timed", "udp");
- if (srvp == NULL) {
- warnx("timed/udp: unknown service");
- return;
- }
-
- while (argc > 1) {
- argc--; argv++;
- hp = gethostbyname(*argv);
- if (hp == NULL) {
- warnx("%s: %s", *argv, hstrerror(h_errno));
- argc--; argv++;
- continue;
- }
- sin.sin_port = srvp->s_port;
- sin.sin_family = hp->h_addrtype;
- bcopy(hp->h_addr, &sin.sin_addr.s_addr, hp->h_length);
-
- msg.tsp_type = TSP_TEST;
- msg.tsp_vers = TSPVERSION;
- if (gethostname(myname, sizeof(myname) - 1) < 0)
- err(1, "gethostname");
- (void)strlcpy(msg.tsp_name, myname, sizeof(msg.tsp_name));
- bytenetorder(&msg);
- if (sendto(sock, &msg, sizeof(struct tsp), 0,
- (struct sockaddr*)&sin,
- sizeof(struct sockaddr)) < 0) {
- warn("sendto");
- }
- }
-}
-
-
-/*
- * Enables or disables tracing on local timedaemon
- */
-void
-tracing(int argc, char *argv[])
-{
- int onflag;
- int length;
- ssize_t cc;
- fd_set ready;
- struct sockaddr_in dest;
- struct sockaddr_in from;
- struct timeval tout;
- struct tsp msg;
- struct servent *srvp;
-
- if (argc != 2) {
- printf("usage: timedc trace { on | off }\n");
- return;
- }
-
- srvp = getservbyname("timed", "udp");
- if (srvp == NULL) {
- warnx("timed/udp: unknown service");
- return;
- }
- dest.sin_port = srvp->s_port;
- dest.sin_family = AF_INET;
-
- if (gethostname(myname, sizeof(myname) - 1) < 0)
- err(1, "gethostname");
- hp = gethostbyname(myname);
- bcopy(hp->h_addr, &dest.sin_addr.s_addr, hp->h_length);
-
- if (strcmp(argv[1], "on") == 0) {
- msg.tsp_type = TSP_TRACEON;
- onflag = ON;
- } else {
- msg.tsp_type = TSP_TRACEOFF;
- onflag = OFF;
- }
-
- (void)strcpy(msg.tsp_name, myname);
- msg.tsp_vers = TSPVERSION;
- bytenetorder(&msg);
- if (sendto(sock, &msg, sizeof(struct tsp), 0,
- (struct sockaddr*)&dest, sizeof(struct sockaddr)) < 0) {
- warn("sendto");
- return;
- }
-
- tout.tv_sec = 5;
- tout.tv_usec = 0;
- FD_ZERO(&ready);
- FD_SET(sock, &ready);
- if (select(FD_SETSIZE, &ready, (fd_set *)0, (fd_set *)0, &tout)) {
- length = sizeof(from);
- cc = recvfrom(sock, &msg, sizeof(struct tsp), 0,
- (struct sockaddr *)&from, &length);
- if (cc < 0) {
- warn("recvfrom");
- return;
- }
- /*
- * The 4.3BSD protocol spec had a 32-byte tsp_name field, and
- * this is still OS-dependent. Demand that the packet is at
- * least long enough to hold a 4.3BSD packet.
- */
- if (cc < (sizeof(struct tsp) - MAXHOSTNAMELEN + 32)) {
- fprintf(stderr, "short packet (%zd/%zu bytes) from %s\n",
- cc, sizeof(struct tsp) - MAXHOSTNAMELEN + 32,
- inet_ntoa(from.sin_addr));
- return;
- }
- bytehostorder(&msg);
- if (msg.tsp_type == TSP_ACK)
- if (onflag)
- printf("timed tracing enabled\n");
- else
- printf("timed tracing disabled\n");
- else {
- if (msg.tsp_type >= TSPTYPENUMBER)
- printf("unknown ack received: %u\n",
- msg.tsp_type);
- else
- printf("wrong ack received: %s\n",
- tsptype[msg.tsp_type]);
- }
- } else
- printf("communication error\n");
-}
-
-int
-priv_resources(void)
-{
- int port;
- struct sockaddr_in sin;
-
- sock = socket(AF_INET, SOCK_DGRAM, 0);
- if (sock < 0) {
- warn("opening socket");
- return(-1);
- }
-
- sin.sin_family = AF_INET;
- sin.sin_addr.s_addr = 0;
- for (port = IPPORT_RESERVED - 1; port > IPPORT_RESERVED / 2; port--) {
- sin.sin_port = htons((u_short)port);
- if (bind(sock, (struct sockaddr*)&sin, sizeof (sin)) >= 0)
- break;
- if (errno != EADDRINUSE && errno != EADDRNOTAVAIL) {
- warn("bind");
- (void) close(sock);
- return(-1);
- }
- }
- if (port == IPPORT_RESERVED / 2) {
- warnx("all reserved ports in use");
- (void) close(sock);
- return(-1);
- }
-
- sock_raw = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
- if (sock_raw < 0) {
- warn("opening raw socket");
- (void) close(sock);
- return(-1);
- }
- return(1);
-}
diff --git a/usr.sbin/timed/timedc/cmdtab.c b/usr.sbin/timed/timedc/cmdtab.c
deleted file mode 100644
index 044061b91a90..000000000000
--- a/usr.sbin/timed/timedc/cmdtab.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-3-Clause
- *
- * Copyright (c) 1983, 1993
- * 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. 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
-#if 0
-static char sccsid[] = "@(#)cmdtab.c 8.1 (Berkeley) 6/6/93";
-#endif
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "timedc.h"
-
-char clockdiffhelp[] = "measures clock differences between machines";
-char helphelp[] = "gets help on commands";
-char msitehelp[] = "finds location of master";
-char quithelp[] = "exits timedc";
-char testinghelp[] = "causes election timers to expire";
-char tracinghelp[] = "turns tracing on or off";
-
-struct cmd cmdtab[] = {
- { "clockdiff", clockdiffhelp, clockdiff, 0 },
- { "election", testinghelp, testing, 1 },
- { "help", helphelp, help, 0 },
- { "msite", msitehelp, msite, 0 },
- { "quit", quithelp, quit, 0 },
- { "trace", tracinghelp, tracing, 1 },
- { "?", helphelp, help, 0 },
-};
-
-int NCMDS = sizeof (cmdtab) / sizeof (cmdtab[0]);
diff --git a/usr.sbin/timed/timedc/extern.h b/usr.sbin/timed/timedc/extern.h
deleted file mode 100644
index 4afbaa7372c3..000000000000
--- a/usr.sbin/timed/timedc/extern.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* $FreeBSD$ */
-
-/*-
- * SPDX-License-Identifier: BSD-3-Clause
- *
- * Copyright (c) 1993
- * 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. 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.
- *
- * @(#)extern.h 8.1 (Berkeley) 6/6/93
- */
-
-#if __STDC__
-struct tsp;
-#endif
-
-extern struct cmd cmdtab[];
-
-void bytehostorder(struct tsp *);
-void bytenetorder(struct tsp *);
-void clockdiff(int, char *[]);
-void help(int, char *[]);
-void intr(int);
-void makeargv(void);
-void msite(int, char *[]);
-int priv_resources(void);
-void quit(void);
-void testing(int, char *[]);
-void tracing(int, char *[]);
diff --git a/usr.sbin/timed/timedc/timedc.8 b/usr.sbin/timed/timedc/timedc.8
deleted file mode 100644
index 8f5481ece27c..000000000000
--- a/usr.sbin/timed/timedc/timedc.8
+++ /dev/null
@@ -1,141 +0,0 @@
-.\" Copyright (c) 1980, 1991, 1993
-.\" 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. 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.
-.\"
-.\" @(#)timedc.8 8.1 (Berkeley) 6/6/93
-.\" $FreeBSD$
-.\"
-.Dd June 6, 1993
-.Dt TIMEDC 8
-.Os
-.Sh NAME
-.Nm timedc
-.Nd timed control program
-.Sh SYNOPSIS
-.Nm
-.Op Ar command Op Ar argument ...
-.Sh DESCRIPTION
-The
-.Nm
-utility is used to control the operation of the
-.Xr timed 8
-program.
-It may be used to:
-.Bl -bullet
-.It
-Measure the differences between machines' clocks,
-.It
-Find the location where the master time server is running,
-.It
-Enable or disable tracing of messages received by
-.Xr timed 8 ,
-and
-.It
-Perform various debugging actions.
-.El
-.Pp
-Without any arguments,
-.Nm
-will prompt for commands from the standard input.
-If arguments are supplied,
-.Nm
-interprets the first argument as a command and the remaining
-arguments as parameters to the command.
-The standard input
-may be redirected causing
-.Nm
-to read commands from a file.
-Commands may be abbreviated;
-recognized commands are:
-.Pp
-.Bl -tag -width Ds -compact
-.It Ic \&? Op Ar command ...
-.Pp
-.It Ic help Op Ar command ...
-Print a short description of each command specified in the argument list,
-or, if no arguments are given, a list of the recognized commands.
-.Pp
-.It Ic clockdiff Ar host ...
-Compute the differences between the clock of the host machine
-and the clocks of the machines given as arguments.
-.Pp
-.It Ic msite Op Ar host ...
-Show the master time server for specified host(s).
-.Pp
-.It Xo
-.Ic trace
-.Li \&{ Ar on Li \&|
-.Ar off \&}
-.Xc
-Enable or disable the tracing of incoming messages to
-.Xr timed 8
-in the file
-.Pa /var/log/timed.log .
-.Pp
-.It Ic election Ar host1 Op Ar host2 ...
-Asks the daemon
-on the target host to reset its "election" timers and to ensure that
-a time master has been elected.
-.Pp
-.It Ic quit
-Exit from timedc.
-.El
-.Pp
-Other commands may be included for use in testing and debugging
-.Xr timed 8 ;
-the help command and
-the program source may be consulted for details.
-.Sh FILES
-.Bl -tag -width /var/log/timed.masterlog -compact
-.It Pa /var/log/timed.log
-tracing file for timed
-.It Pa /var/log/timed.masterlog
-log file for master timed
-.El
-.Sh DIAGNOSTICS
-.Bl -diag
-.It ?Ambiguous command
-abbreviation matches more than one command
-.It ?Invalid command
-no match found
-.It ?Privileged command
-command can be executed by root only
-.El
-.Sh SEE ALSO
-.Xr date 1 ,
-.Xr adjtime 2 ,
-.Xr icmp 4 ,
-.Xr timed 8
-.Rs
-.%T "TSP: The Time Synchronization Protocol for UNIX 4.3BSD"
-.%A R. Gusella
-.%A S. Zatti
-.Re
-.Sh HISTORY
-The
-.Nm
-utility appeared in
-.Bx 4.3 .
diff --git a/usr.sbin/timed/timedc/timedc.c b/usr.sbin/timed/timedc/timedc.c
deleted file mode 100644
index 1512c130851f..000000000000
--- a/usr.sbin/timed/timedc/timedc.c
+++ /dev/null
@@ -1,254 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-3-Clause
- *
- * Copyright (c) 1985, 1993
- * 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. 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 const char copyright[] =
-"@(#) Copyright (c) 1985, 1993\n\
- The Regents of the University of California. All rights reserved.\n";
-#endif /* not lint */
-
-#ifndef lint
-#if 0
-static char sccsid[] = "@(#)timedc.c 8.1 (Berkeley) 6/6/93";
-#endif
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "timedc.h"
-#include <ctype.h>
-#include <err.h>
-#include <setjmp.h>
-#include <signal.h>
-#include <stdlib.h>
-#include <string.h>
-#include <syslog.h>
-#include <unistd.h>
-
-int trace = 0;
-FILE *fd = NULL;
-int margc;
-int fromatty;
-#define MAX_MARGV 20
-char *margv[MAX_MARGV];
-char cmdline[200];
-jmp_buf toplevel;
-static struct cmd *getcmd(char *);
-
-int
-main(int argc, char *argv[])
-{
- register struct cmd *c;
-
- openlog("timedc", 0, LOG_AUTH);
-
- /*
- * security dictates!
- */
- if (priv_resources() < 0)
- errx(1, "could not get privileged resources");
- if (setuid(getuid()) != 0)
- err(1, "setuid()");
-
- if (--argc > 0) {
- c = getcmd(*++argv);
- if (c == (struct cmd *)-1) {
- printf("?Ambiguous command\n");
- exit(1);
- }
- if (c == NULL) {
- printf("?Invalid command\n");
- exit(1);
- }
- if (c->c_priv && getuid()) {
- printf("?Privileged command\n");
- exit(1);
- }
- (*c->c_handler)(argc, argv);
- exit(0);
- }
-
- fromatty = isatty(fileno(stdin));
- if (setjmp(toplevel))
- putchar('\n');
- (void) signal(SIGINT, intr);
- for (;;) {
- if (fromatty) {
- printf("timedc> ");
- (void) fflush(stdout);
- }
- if (fgets(cmdline, sizeof(cmdline), stdin) == NULL)
- quit();
- if (cmdline[0] == 0)
- break;
- makeargv();
- if (margv[0] == NULL)
- continue;
- c = getcmd(margv[0]);
- if (c == (struct cmd *)-1) {
- printf("?Ambiguous command\n");
- continue;
- }
- if (c == NULL) {
- printf("?Invalid command\n");
- continue;
- }
- if (c->c_priv && getuid()) {
- printf("?Privileged command\n");
- continue;
- }
- (*c->c_handler)(margc, margv);
- }
- return 0;
-}
-
-void
-intr(int signo __unused)
-{
- if (!fromatty)
- exit(0);
- longjmp(toplevel, 1);
-}
-
-
-static struct cmd *
-getcmd(char *name)
-{
- register char *p, *q;
- register struct cmd *c, *found;
- register int nmatches, longest;
- extern int NCMDS;
-
- longest = 0;
- nmatches = 0;
- found = NULL;
- for (c = cmdtab; c < &cmdtab[NCMDS]; c++) {
- p = c->c_name;
- for (q = name; *q == *p++; q++)
- if (*q == 0) /* exact match? */
- return(c);
- if (!*q) { /* the name was a prefix */
- if (q - name > longest) {
- longest = q - name;
- nmatches = 1;
- found = c;
- } else if (q - name == longest)
- nmatches++;
- }
- }
- if (nmatches > 1)
- return((struct cmd *)-1);
- return(found);
-}
-
-/*
- * Slice a string up into argc/argv.
- */
-void
-makeargv(void)
-{
- register char *cp;
- register char **argp = margv;
-
- margc = 0;
- for (cp = cmdline; margc < MAX_MARGV - 1 && *cp; ) {
- while (isspace(*cp))
- cp++;
- if (*cp == '\0')
- break;
- *argp++ = cp;
- margc += 1;
- while (*cp != '\0' && !isspace(*cp))
- cp++;
- if (*cp == '\0')
- break;
- *cp++ = '\0';
- }
- *argp++ = NULL;
-}
-
-#define HELPINDENT (sizeof ("directory"))
-
-/*
- * Help command.
- */
-void
-help(int argc, char *argv[])
-{
- register struct cmd *c;
-
- if (argc == 1) {
- register int i, j, w;
- int columns, width = 0, lines;
- extern int NCMDS;
-
- printf("Commands may be abbreviated. Commands are:\n\n");
- for (c = cmdtab; c < &cmdtab[NCMDS]; c++) {
- int len = strlen(c->c_name);
-
- if (len > width)
- width = len;
- }
- width = (width + 8) &~ 7;
- columns = 80 / width;
- if (columns == 0)
- columns = 1;
- lines = (NCMDS + columns - 1) / columns;
- for (i = 0; i < lines; i++) {
- for (j = 0; j < columns; j++) {
- c = cmdtab + j * lines + i;
- printf("%s", c->c_name);
- if (c + lines >= &cmdtab[NCMDS]) {
- printf("\n");
- break;
- }
- w = strlen(c->c_name);
- while (w < width) {
- w = (w + 8) &~ 7;
- putchar('\t');
- }
- }
- }
- return;
- }
- while (--argc > 0) {
- register char *arg;
- arg = *++argv;
- c = getcmd(arg);
- if (c == (struct cmd *)-1)
- printf("?Ambiguous help command %s\n", arg);
- else if (c == (struct cmd *)0)
- printf("?Invalid help command %s\n", arg);
- else
- printf("%-*s\t%s\n", (int)HELPINDENT,
- c->c_name, c->c_help);
- }
-}
diff --git a/usr.sbin/timed/timedc/timedc.h b/usr.sbin/timed/timedc/timedc.h
deleted file mode 100644
index 8be16e201c39..000000000000
--- a/usr.sbin/timed/timedc/timedc.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-3-Clause
- *
- * Copyright (c) 1985, 1993
- * 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. 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.
- *
- * @(#)timedc.h 8.1 (Berkeley) 6/6/93
- *
- * $FreeBSD$
- */
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
-#include <errno.h>
-#include <netdb.h>
-#include <stdio.h>
-
-#define ON 1
-#define OFF 0
-
-#define GOOD 1
-#define UNREACHABLE 2
-#define NONSTDTIME 3
-#define HOSTDOWN 0x7fffffff
-
-struct cmd {
- char *c_name; /* command name */
- char *c_help; /* help message */
- void (*c_handler)(); /* routine to do the work */
- int c_priv; /* privileged command */
-};
-
-#include "extern.h"