OK florian On 2026-03-25 19:13 -06, "Theo de Raadt" <[email protected]> wrote: > Theo de Raadt <[email protected]> wrote: > >> It might be time to remove the -o support entirely. >> ntp servers are everywhere, and inetd has gone away. > > Which looks like this. > > The -o option goes away. The -n option must remain as a no-op, > probably forever because people have gotten used to using it. > > Index: Makefile > =================================================================== > RCS file: /cvs/src/usr.sbin/rdate/Makefile,v > diff -u -p -u -r1.7 Makefile > --- Makefile 20 Nov 2003 23:23:09 -0000 1.7 > +++ Makefile 26 Mar 2026 01:08:31 -0000 > @@ -1,7 +1,7 @@ > # $OpenBSD: Makefile,v 1.7 2003/11/20 23:23:09 avsm Exp $ > > PROG= rdate > -SRCS= rdate.c rfc868time.c ntp.c ntpleaps.c > +SRCS= rdate.c ntp.c ntpleaps.c > CFLAGS+=-Wall > DPADD+= ${LIBUTIL} > LDADD+= -lutil > Index: rdate.8 > =================================================================== > RCS file: /cvs/src/usr.sbin/rdate/rdate.8,v > diff -u -p -u -r1.40 rdate.8 > --- rdate.8 12 Nov 2023 18:53:22 -0000 1.40 > +++ rdate.8 26 Mar 2026 01:10:44 -0000 > @@ -32,19 +32,13 @@ > .Nd set the system's date from a remote host > .Sh SYNOPSIS > .Nm rdate > -.Op Fl 46acnopsv > +.Op Fl 46acnpsv > .Ar host > .Sh DESCRIPTION > .Nm > displays and sets the local date and time from the > host name or address given as the argument. > -The time source may be an RFC 5905 protocol SNTP/NTP server > -or an RFC 868 TCP protocol server, > -which is usually implemented as a built-in service of > -.Xr inetd 8 . > -By default, > -.Nm > -uses the RFC 5905 SNTP/NTP protocol. > +The time source is an RFC 5905 protocol SNTP/NTP server. > .Pp > The options are as follows: > .Bl -tag -width Ds > @@ -66,14 +60,10 @@ Correct leap seconds. > This should be used only when synchronizing to a server > which does not correctly account for leap seconds. > .It Fl n > -Use SNTP (RFC 5905) instead of the RFC 868 time protocol. > +Use SNTP (RFC 5905). > This is the default. > This protocol counts 32 bits of seconds from January 1, 1900 > and will handle rollover to a new NTP era in February 2036. > -.It Fl o > -Use an RFC 868 TCP protocol server instead of SNTP. > -This protocol is obsolete as it is not capable of representing > -dates past January 19, 2038 03:14:07 GMT. > .It Fl p > Do not set, just print the remote time. > .It Fl s > Index: rdate.c > =================================================================== > RCS file: /cvs/src/usr.sbin/rdate/rdate.c,v > diff -u -p -u -r1.37 rdate.c > --- rdate.c 4 Jan 2023 13:00:11 -0000 1.37 > +++ rdate.c 26 Mar 2026 01:11:39 -0000 > @@ -52,7 +52,6 @@ > #define logwtmp(a,b,c) > #endif > > -void rfc868time_client(const char *, int, struct timeval *, struct timeval > *, int); > void ntp_client(const char *, int, struct timeval *, struct timeval *, int); > > extern char *__progname; > @@ -67,14 +66,14 @@ struct { > __dead void > usage(void) > { > - (void) fprintf(stderr, "usage: %s [-46acnopsv] host\n", __progname); > + (void) fprintf(stderr, "usage: %s [-46acnpsv] host\n", __progname); > exit(1); > } > > int > main(int argc, char **argv) > { > - int pr = 0, silent = 0, ntp = 1, verbose = 0; > + int pr = 0, silent = 0, verbose = 0; > int slidetime = 0, corrleaps = 0; > char *hname; > int c, p[2], pid; > @@ -103,11 +102,7 @@ main(int argc, char **argv) > break; > > case 'n': > - ntp = 1; > - break; > - > - case 'o': > - ntp = 0; > + /* noop */ > break; > > case 'c': > @@ -149,12 +144,8 @@ main(int argc, char **argv) > setvbuf(stdout, NULL, _IOFBF, 0); > setvbuf(stderr, NULL, _IOFBF, 0); > > - if (ntp) > - ntp_client(hname, family, &pdata.new, > - &pdata.adjust, corrleaps); > - else > - rfc868time_client(hname, family, &pdata.new, > - &pdata.adjust, corrleaps); > + ntp_client(hname, family, &pdata.new, > + &pdata.adjust, corrleaps); > > if (write(STDOUT_FILENO, &pdata, sizeof pdata) != sizeof pdata) > exit(1); > @@ -207,14 +198,9 @@ main(int argc, char **argv) > adjsec = pdata.adjust.tv_sec + pdata.adjust.tv_usec / 1.0e6; > > if (slidetime || verbose) { > - if (ntp) > - (void) fprintf(stdout, > - "%s: adjust local clock by %.6f seconds\n", > - __progname, adjsec); > - else > - (void) fprintf(stdout, > - "%s: adjust local clock by %lld seconds\n", > - __progname, (long long)pdata.adjust.tv_sec); > + (void) fprintf(stdout, > + "%s: adjust local clock by %.6f seconds\n", > + __progname, adjsec); > } > } > > Index: rfc868time.c > =================================================================== > RCS file: rfc868time.c > diff -N rfc868time.c > --- rfc868time.c 4 Jan 2023 13:00:11 -0000 1.13 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,119 +0,0 @@ > -/* $OpenBSD: rfc868time.c,v 1.13 2023/01/04 13:00:11 jsg Exp $ */ > -/* $NetBSD: rdate.c,v 1.4 1996/03/16 12:37:45 pk Exp $ */ > - > -/* > - * Copyright (c) 1994 Christos Zoulas > - * 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. > - * > - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR > - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES > - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. > - * IN NO EVENT SHALL THE AUTHOR 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. > - */ > - > -/* > - * rdate.c: Set the date from the specified host > - * > - * Uses the rfc868 time protocol at socket 37 (tcp). > - * Time is returned as the number of seconds since > - * midnight January 1st 1900. > - */ > - > -#include <sys/socket.h> > -#include <sys/time.h> > -#include <netinet/in.h> > - > -#include <stdio.h> > -#include <ctype.h> > -#include <err.h> > -#include <string.h> > -#include <netdb.h> > -#include <unistd.h> > -#include <time.h> > - > -/* Obviously it is not just for SNTP clients... */ > -#include "ntpleaps.h" > - > -/* seconds from midnight Jan 1900 - 1970 */ > -#define DIFFERENCE 2208988800UL > - > -void > -rfc868time_client(const char *hostname, int family, struct timeval *new, > - struct timeval *adjust, int leapflag); > - > - > -void > -rfc868time_client(const char *hostname, int family, struct timeval *new, > - struct timeval *adjust, int leapflag) > -{ > - struct addrinfo hints, *res0, *res; > - struct timeval old; > - u_int32_t tim; /* RFC 868 states clearly this is an uint32 */ > - int s; > - int error; > - u_int64_t td; > - > - memset(&hints, 0, sizeof(hints)); > - hints.ai_family = family; > - hints.ai_socktype = SOCK_STREAM; > - error = getaddrinfo(hostname, "time", &hints, &res0); > - if (error) { > - errx(1, "%s: %s", hostname, gai_strerror(error)); > - /*NOTREACHED*/ > - } > - > - if (pledge("stdio inet", NULL) == -1) > - err(1, "pledge"); > - > - s = -1; > - for (res = res0; res; res = res->ai_next) { > - s = socket(res->ai_family, res->ai_socktype, res->ai_protocol); > - if (s == -1) > - continue; > - > - if (connect(s, res->ai_addr, res->ai_addrlen) == -1) { > - close(s); > - s = -1; > - continue; > - } > - > - break; > - } > - if (s == -1) > - err(1, "Could not connect socket"); > - freeaddrinfo(res0); > - > - if (read(s, &tim, sizeof(tim)) != sizeof(tim)) > - err(1, "Could not read data"); > - > - (void) close(s); > - tim = ntohl(tim) - DIFFERENCE; > - > - if (gettimeofday(&old, NULL) == -1) > - err(1, "Could not get local time of day"); > - > - td = SEC_TO_TAI64(old.tv_sec); > - if (leapflag) > - ntpleaps_sub(&td); > - > - adjust->tv_sec = tim - TAI64_TO_SEC(td); > - adjust->tv_usec = 0; > - > - new->tv_sec = old.tv_sec + adjust->tv_sec; > - new->tv_usec = 0; > -} >
-- In my defence, I have been left unsupervised.
