[ntp:bk-ntp-dev-send] BitKeeper patch
stenn at whimsy.udel.edu
stenn at whimsy.udel.edu
Tue Jun 24 00:43:43 PDT 2003
This BitKeeper patch contains the following changesets:
stenn at whimsy.udel.edu|ChangeSet|20030624073813|58596
stenn at whimsy.udel.edu|ChangeSet|20030624074209|41286
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# ID: stenn at whimsy.udel.edu|ChangeSet|19990526004811|57482|8983e65c737bb465
# User: stenn
# Host: whimsy.udel.edu
# Root: /backroom/ntp-dev
#
#--- 1.50.4.4/ntpd/ntp_config.c Tue Jun 24 03:29:58 2003
#+++ 1.92/ntpd/ntp_config.c Tue Jun 24 03:41:36 2003
#@@ -18,10 +18,6 @@
# #include "ntp_config.h"
# #include "ntp_cmdargs.h"
#
#-#ifdef PUBKEY
#-# include "ntp_crypto.h"
#-#endif /* PUBKEY */
#-
# #include <stdio.h>
# #include <ctype.h>
# #ifdef HAVE_SYS_PARAM_H
#@@ -42,6 +38,8 @@
# extern HANDLE ResolverThreadHandle;
# #endif /* SYS_WINNT */
#
#+#include <netdb.h>
#+
# extern int priority_done;
#
# /*
#@@ -51,43 +49,6 @@
# * Lines are considered terminated when a '#' is encountered. Blank
# * lines are ignored.
# */
#-
#-/*
#- * We understand the following configuration entries and defaults.
#- *
#- * peer [ addr ] [ version 3 ] [ key 0 ] [ minpoll 6 ] [ maxpoll 10 ]
#- * server [ addr ] [ version 3 ] [ key 0 ] [ minpoll 6 ] [ maxpoll 10 ]
#- * broadcast [ addr ] [ version 3 ] [ key 0 ] [ ttl 1 ]
#- * broadcastclient
#- * multicastclient [ 224.0.1.1 ]
#- * manycastclient [ addr ] [ version 3 ] [ key 0 ] [ minpoll 6 ] [ maxpoll 10 ]
#- * manycastserver [ 224.0.1.1 ]
#- * broadcastdelay 0.0102
#- * restrict [ addr ] [ mask 255.255.255.0 ] ignore|noserve|notrust|noquery
#- * driftfile file_name
#- * keys file_name
#- * publickey file_name
#- * privatekey file_name
#- * statsdir /var/NTP/
#- * filegen peerstats [ file peerstats ] [ type day ] [ link ]
#- * clientlimit [ n ]
#- * clientperiod [ 3600 ]
#- * trustedkey [ key ]
#- * requestkey [ key]
#- * controlkey [ key ]
#- * trap [ addr ]
#- * fudge [ addr ] [ stratum ] [ refid ] ...
#- * pidfile [ ]
#- * setvar [ ]
#- * logfile logfile
#- * logconfig [+|-|=][{sync|sys|peer|clock}{{,all}{info|statistics|events|status}}]...
#- * enable auth|bclient|pll|kernel|monitor|stats|calibrate
#- * disable auth|bclient|pll|kernel|monitor|stats|calibrate
#- * phone ...
#- * pps device [assert|clear] [hardpps]
#- * priority high|normal
#- */
#-
# /*
# * Translation table - keywords to function index
# */
#@@ -100,16 +61,14 @@
# * Command keywords
# */
# static struct keyword keywords[] = {
#- { "authenticate", CONFIG_AUTHENTICATE },
# { "automax", CONFIG_AUTOMAX },
# { "broadcast", CONFIG_BROADCAST },
# { "broadcastclient", CONFIG_BROADCASTCLIENT },
# { "broadcastdelay", CONFIG_BDELAY },
#- { "clientlimit", CONFIG_CLIENTLIMIT },
#- { "clientperiod", CONFIG_CLIENTPERIOD },
#-#ifdef PUBKEY
#+ { "calldelay", CONFIG_CDELAY},
#+#ifdef OPENSSL
# { "crypto", CONFIG_CRYPTO },
#-#endif /* PUBKEY */
#+#endif /* OPENSSL */
# { "controlkey", CONFIG_CONTROLKEY },
# { "disable", CONFIG_DISABLE },
# { "driftfile", CONFIG_DRIFTFILE },
#@@ -118,9 +77,7 @@
# { "fudge", CONFIG_FUDGE },
# { "includefile", CONFIG_INCLUDEFILE },
# { "keys", CONFIG_KEYS },
#-#ifdef PUBKEY
# { "keysdir", CONFIG_KEYSDIR },
#-#endif /* PUBKEY */
# { "logconfig", CONFIG_LOGCONFIG },
# { "logfile", CONFIG_LOGFILE },
# { "manycastclient", CONFIG_MANYCASTCLIENT },
#@@ -129,7 +86,7 @@
# { "peer", CONFIG_PEER },
# { "phone", CONFIG_PHONE },
# { "pidfile", CONFIG_PIDFILE },
#- { "pps", CONFIG_PPS },
#+ { "discard", CONFIG_DISCARD },
# { "requestkey", CONFIG_REQUESTKEY },
# { "restrict", CONFIG_RESTRICT },
# { "revoke", CONFIG_REVOKE },
#@@ -137,9 +94,12 @@
# { "setvar", CONFIG_SETVAR },
# { "statistics", CONFIG_STATISTICS },
# { "statsdir", CONFIG_STATSDIR },
#+ { "tick", CONFIG_ADJ },
# { "tinker", CONFIG_TINKER },
#+ { "tos", CONFIG_TOS },
# { "trap", CONFIG_TRAP },
# { "trustedkey", CONFIG_TRUSTEDKEY },
#+ { "ttl", CONFIG_TTL },
# { "", CONFIG_UNKNOWN }
# };
#
#@@ -156,9 +116,6 @@
# { "mode", CONF_MOD_MODE }, /* refclocks */
# { "noselect", CONF_MOD_NOSELECT },
# { "prefer", CONF_MOD_PREFER },
#-#ifdef PUBKEY
#- { "publickey", CONF_MOD_PUBLICKEY },
#-#endif /* PUBKEY */
# { "ttl", CONF_MOD_TTL }, /* NTP peers */
# { "version", CONF_MOD_VERSION },
# { "", CONFIG_UNKNOWN }
#@@ -208,7 +165,6 @@
# { "", CONFIG_UNKNOWN }
# };
#
#-
# /*
# * "filegen" modifier keywords
# */
#@@ -252,12 +208,11 @@
# };
#
# /*
#- * "pps" modifier keywords
#+ * "discard" modifier keywords
# */
#-static struct keyword pps_keywords[] = {
#- { "assert", CONF_PPS_ASSERT },
#- { "clear", CONF_PPS_CLEAR },
#- { "hardpps", CONF_PPS_HARDPPS },
#+static struct keyword discard_keywords[] = {
#+ { "average", CONF_DISCARD_AVERAGE },
#+ { "minimum", CONF_DISCARD_MINIMUM },
# { "", CONFIG_UNKNOWN }
# };
#
#@@ -269,25 +224,51 @@
# { "panic", CONF_CLOCK_PANIC },
# { "dispersion", CONF_CLOCK_PHI },
# { "stepout", CONF_CLOCK_MINSTEP },
#- { "minpoll", CONF_CLOCK_MINPOLL },
# { "allan", CONF_CLOCK_ALLAN },
# { "huffpuff", CONF_CLOCK_HUFFPUFF },
#+ { "freq", CONF_CLOCK_FREQ },
# { "", CONFIG_UNKNOWN }
# };
#
#-#ifdef PUBKEY
#+/*
#+ * "tos" modifier keywords
#+ */
#+static struct keyword tos_keywords[] = {
#+ { "minclock", CONF_TOS_MINCLOCK },
#+ { "minsane", CONF_TOS_MINSANE },
#+ { "floor", CONF_TOS_FLOOR },
#+ { "ceiling", CONF_TOS_CEILING },
#+ { "cohort", CONF_TOS_COHORT },
#+ { "", CONFIG_UNKNOWN }
#+};
#+
#+#ifdef OPENSSL
# /*
# * "crypto" modifier keywords
# */
# static struct keyword crypto_keywords[] = {
#- { "dh", CONF_CRYPTO_DH },
#- { "flags", CONF_CRYPTO_FLAGS },
#+ { "cert", CONF_CRYPTO_CERT },
#+ { "gqpar", CONF_CRYPTO_GQPAR },
#+ { "host", CONF_CRYPTO_RSA },
#+ { "iffpar", CONF_CRYPTO_IFFPAR },
# { "leap", CONF_CRYPTO_LEAP },
#- { "privatekey", CONF_CRYPTO_PRIVATEKEY },
#- { "publickey", CONF_CRYPTO_PUBLICKEY },
#+ { "mvpar", CONF_CRYPTO_MVPAR },
#+ { "pw", CONF_CRYPTO_PW },
#+ { "randfile", CONF_CRYPTO_RAND },
#+ { "sign", CONF_CRYPTO_SIGN },
#+ { "", CONFIG_UNKNOWN }
#+};
#+#endif /* OPENSSL */
#+
#+/*
#+ * Address type selection, IPv4 or IPv4.
#+ * Used on various lines.
#+ */
#+static struct keyword addr_type[] = {
#+ { "-4", CONF_ADDR_IPV4 },
#+ { "-6", CONF_ADDR_IPV6 },
# { "", CONFIG_UNKNOWN }
# };
#-#endif /* PUBKEY */
#
# /*
# * "logconfig" building blocks
#@@ -345,6 +326,7 @@
# * File descriptor used by the resolver save routines, and temporary file
# * name.
# */
#+int call_resolver = 1; /* ntp-genkeys sets this to 0, for example */
# static FILE *res_fp;
# #ifndef SYS_WINNT
# static char res_file[20]; /* enough for /tmp/ntpXXXXXX\0 */
#@@ -358,9 +340,8 @@
# */
# char const *progname;
# char sys_phone[MAXPHONE][MAXDIAL]; /* ACTS phone numbers */
#+char *keysdir = NTP_KEYSDIR; /* crypto keys directory */
# char pps_device[MAXPPS + 1]; /* PPS device name */
#-int pps_assert;
#-int pps_hardpps;
# #if defined(HAVE_SCHED_SETSCHEDULER)
# int config_priority_override = 0;
# int config_priority;
#@@ -403,13 +384,13 @@
# static int gettokens_netinfo P((struct netinfo_config_state *, char **, int *));
# #endif
# static int gettokens P((FILE *, char *, char **, int *));
#-static int matchkey P((char *, struct keyword *));
#-static int getnetnum P((const char *, struct sockaddr_in *, int));
#+static int matchkey P((char *, struct keyword *, int));
#+static int getnetnum P((const char *, struct sockaddr_storage *, int));
# static void save_resolve P((char *, int, int, int, int, u_int, int,
# keyid_t, u_char *));
# static void do_resolve_internal P((void));
# static void abort_resolve P((void));
#-#if !defined(VMS)
#+#if !defined(VMS) && !defined(SYS_WINNT)
# static RETSIGTYPE catchchild P((int));
# #endif /* VMS */
#
#@@ -490,6 +471,7 @@
# register int i;
# int c;
# int errflg;
#+ int istart;
# int peerversion;
# int minpoll;
# int maxpoll;
#@@ -501,14 +483,14 @@
# u_long fudgeflag;
# u_int peerflags;
# int hmode;
#- struct sockaddr_in peeraddr;
#- struct sockaddr_in maskaddr;
#+ struct sockaddr_storage peeraddr;
#+ struct sockaddr_storage maskaddr;
# FILE *fp[MAXINCLUDELEVEL+1];
# FILE *includefile;
# int includelevel = 0;
# char line[MAXLINE];
# char *(tokens[MAXTOKENS]);
#- int ntokens;
#+ int ntokens = 0;
# int tok = CONFIG_UNKNOWN;
# struct interface *localaddr;
# struct refclockstat clock_stat;
#@@ -627,7 +609,20 @@
# break;
# }
#
#- if (!getnetnum(tokens[1], &peeraddr, 0)) {
#+ istart = 1;
#+ memset((char *)&peeraddr, 0, sizeof(peeraddr));
#+ switch (matchkey(tokens[istart], addr_type, 0)) {
#+ case CONF_ADDR_IPV4:
#+ peeraddr.ss_family = AF_INET;
#+ istart++;
#+ break;
#+ case CONF_ADDR_IPV6:
#+ peeraddr.ss_family = AF_INET6;
#+ istart++;
#+ break;
#+ }
#+
#+ if (!getnetnum(tokens[istart], &peeraddr, 0)) {
# errflg = -1;
# } else {
# errflg = 0;
#@@ -639,7 +634,7 @@
# ISBADADR(&peeraddr)) {
# msyslog(LOG_ERR,
# "attempt to configure invalid address %s",
#- ntoa(&peeraddr));
#+ stoa(&peeraddr));
# break;
# }
# /*
#@@ -647,23 +642,45 @@
# * address for server/peer!
# * and unicast address for manycastclient!
# */
#- if (((tok == CONFIG_SERVER) ||
#- (tok == CONFIG_PEER)) &&
#+ if (peeraddr.ss_family == AF_INET) {
#+ if (((tok == CONFIG_SERVER) ||
#+ (tok == CONFIG_PEER)) &&
# #ifdef REFCLOCK
#- !ISREFCLOCKADR(&peeraddr) &&
#+ !ISREFCLOCKADR(&peeraddr) &&
# #endif
#- IN_CLASSD(ntohl(peeraddr.sin_addr.s_addr))) {
#- msyslog(LOG_ERR,
#- "attempt to configure invalid address %s",
#- ntoa(&peeraddr));
#- break;
#+ IN_CLASSD(ntohl(((struct sockaddr_in*)&peeraddr)->sin_addr.s_addr))) {
#+ msyslog(LOG_ERR,
#+ "attempt to configure invalid address %s",
#+ stoa(&peeraddr));
#+ break;
#+ }
#+ if ((tok == CONFIG_MANYCASTCLIENT) &&
#+ !IN_CLASSD(ntohl(((struct sockaddr_in*)&peeraddr)->sin_addr.s_addr))) {
#+ msyslog(LOG_ERR,
#+ "attempt to configure invalid address %s",
#+ stoa(&peeraddr));
#+ break;
#+ }
# }
#- if ((tok == CONFIG_MANYCASTCLIENT) &&
#- !IN_CLASSD(ntohl(peeraddr.sin_addr.s_addr))) {
#- msyslog(LOG_ERR,
#- "attempt to configure invalid address %s",
#- ntoa(&peeraddr));
#- break;
#+ else if(peeraddr.ss_family == AF_INET6) {
#+ if (((tok == CONFIG_SERVER) ||
#+ (tok == CONFIG_PEER)) &&
#+#ifdef REFCLOCK
#+ !ISREFCLOCKADR(&peeraddr) &&
#+#endif
#+ IN6_IS_ADDR_MULTICAST(&((struct sockaddr_in6*)&peeraddr)->sin6_addr)) {
#+ msyslog(LOG_ERR,
#+ "attempt to configure in valid address %s",
#+ stoa(&peeraddr));
#+ break;
#+ }
#+ if ((tok == CONFIG_MANYCASTCLIENT) &&
#+ !IN6_IS_ADDR_MULTICAST(&((struct sockaddr_in6*)&peeraddr)->sin6_addr)) {
#+ msyslog(LOG_ERR,
#+ "attempt to configure in valid address %s",
#+ stoa(&peeraddr));
#+ break;
#+ }
# }
# }
#
#@@ -674,8 +691,9 @@
# peerkeystr = (u_char *)"*";
# peerflags = 0;
# ttl = 0;
#- for (i = 2; i < ntokens; i++)
#- switch (matchkey(tokens[i], mod_keywords)) {
#+ istart++;
#+ for (i = istart; i < ntokens; i++)
#+ switch (matchkey(tokens[i], mod_keywords, 1)) {
# case CONF_MOD_VERSION:
# if (i >= ntokens-1) {
# msyslog(LOG_ERR,
#@@ -752,43 +770,34 @@
# case CONF_MOD_IBURST:
# peerflags |= FLAG_IBURST;
# break;
#-#ifdef AUTOKEY
#+#ifdef OPENSSL
# case CONF_MOD_SKEY:
# peerflags |= FLAG_SKEY |
# FLAG_AUTHENABLE;
# break;
#-
#-#ifdef PUBKEY
#- case CONF_MOD_PUBLICKEY:
#- if (i >= ntokens - 1) {
#- msyslog(LOG_ERR,
#- "Public key file name required");
#- errflg = 1;
#- break;
#- }
#- peerflags |= FLAG_SKEY |
#- FLAG_AUTHENABLE;
#- peerkeystr = tokens[++i];
#- break;
#-#endif /* PUBKEY */
#-#endif /* AUTOKEY */
#+#endif /* OPENSSL */
#
# case CONF_MOD_TTL:
# if (i >= ntokens-1) {
#- msyslog(LOG_ERR,
#- "ttl: argument required");
#- errflg = 1;
#- break;
#+ msyslog(LOG_ERR,
#+ "ttl: argument required");
#+ errflg = 1;
#+ break;
# }
# ttl = atoi(tokens[++i]);
#+ if (ttl >= MAX_TTL) {
#+ msyslog(LOG_ERR,
#+ "ttl: invalid argument");
#+ errflg = 1;
#+ }
# break;
#
# case CONF_MOD_MODE:
# if (i >= ntokens-1) {
#- msyslog(LOG_ERR,
#- "mode: argument required");
#- errflg = 1;
#- break;
#+ msyslog(LOG_ERR,
#+ "mode: argument required");
#+ errflg = 1;
#+ break;
# }
# ttl = atoi(tokens[++i]);
# break;
#@@ -798,17 +807,22 @@
# break;
# }
# if (minpoll > maxpoll) {
#- msyslog(LOG_ERR, "config error: minpoll > maxpoll");
#+ msyslog(LOG_ERR,
#+ "config error: minpoll > maxpoll");
# errflg = 1;
# }
# if (errflg == 0) {
#- if (peer_config(&peeraddr, any_interface, hmode,
#- peerversion, minpoll, maxpoll, peerflags,
#- ttl, peerkey, peerkeystr) == 0) {
#+ if (peer_config(&peeraddr,
#+ ANY_INTERFACE_CHOOSE(&peeraddr), hmode,
#+ peerversion, minpoll, maxpoll, peerflags,
#+ ttl, peerkey, peerkeystr) == 0) {
# msyslog(LOG_ERR,
# "configuration of %s failed",
#- ntoa(&peeraddr));
#+ stoa(&peeraddr));
# }
#+ if (tok == CONFIG_MANYCASTCLIENT)
#+ proto_config(PROTO_MULTICAST_ADD,
#+ 0, 0., &peeraddr);
#
# } else if (errflg == -1) {
# save_resolve(tokens[1], hmode, peerversion,
#@@ -910,48 +924,63 @@
# break;
#
# case CONFIG_BROADCASTCLIENT:
#- proto_config(PROTO_BROADCLIENT, 1, 0.);
#+ proto_config(PROTO_BROADCLIENT, 1, 0., NULL);
# break;
#-
#+
# case CONFIG_MULTICASTCLIENT:
# case CONFIG_MANYCASTSERVER:
# if (ntokens > 1) {
#- for (i = 1; i < ntokens; i++) {
#+ istart = 1;
#+ memset((char *)&peeraddr, 0, sizeof(peeraddr));
#+ switch (matchkey(tokens[istart],
#+ addr_type, 0)) {
#+ case CONF_ADDR_IPV4:
#+ peeraddr.ss_family = AF_INET;
#+ istart++;
#+ break;
#+ case CONF_ADDR_IPV6:
#+ peeraddr.ss_family = AF_INET6;
#+ istart++;
#+ break;
#+ }
#+ /*
#+ * Abuse maskaddr to store the prefered ip
#+ * version.
#+ */
#+ memset((char *)&maskaddr, 0, sizeof(maskaddr));
#+ maskaddr.ss_family = peeraddr.ss_family;
#+
#+ for (i = istart; i < ntokens; i++) {
#+ memset((char *)&peeraddr, 0,
#+ sizeof(peeraddr));
#+ peeraddr.ss_family = maskaddr.ss_family;
# if (getnetnum(tokens[i], &peeraddr, 1))
# proto_config(PROTO_MULTICAST_ADD,
#- peeraddr.sin_addr.s_addr, 0.);
#+ 0, 0., &peeraddr);
# }
# } else
# proto_config(PROTO_MULTICAST_ADD,
#- htonl(INADDR_NTP), 0.);
#+ 0, 0., NULL);
# if (tok == CONFIG_MULTICASTCLIENT)
# sys_bclient = 1;
# else if (tok == CONFIG_MANYCASTSERVER)
# sys_manycastserver = 1;
# break;
#
#- case CONFIG_AUTHENTICATE:
#- errflg = 0;
#+ case CONFIG_KEYS:
# if (ntokens >= 2) {
#- if (STREQ(tokens[1], "yes"))
#- proto_config(PROTO_AUTHENTICATE, 1, 0.);
#- else if (STREQ(tokens[1], "no"))
#- proto_config(PROTO_AUTHENTICATE, 0, 0.);
#- else
#- errflg++;
#- } else {
#- errflg++;
#+ getauthkeys(tokens[1]);
# }
#-
#- if (errflg)
#- msyslog(LOG_ERR,
#- "should be `authenticate yes|no'");
# break;
#
#- case CONFIG_KEYS:
#- if (ntokens >= 2) {
#- getauthkeys(tokens[1]);
#+ case CONFIG_KEYSDIR:
#+ if (ntokens < 2) {
#+ msyslog(LOG_ERR,
#+ "Keys directory name required");
#+ break;
# }
#+ keysdir = emalloc(strlen(tokens[1]) + 1);
#+ strcpy(keysdir, tokens[1]);
# break;
#
# case CONFIG_TINKER:
#@@ -959,8 +988,7 @@
# int temp;
# double ftemp;
#
#- temp = matchkey(tokens[i++],
#- tinker_keywords);
#+ temp = matchkey(tokens[i++], tinker_keywords, 1);
# if (i > ntokens - 1) {
# msyslog(LOG_ERR,
# "tinker: missing argument");
#@@ -969,6 +997,7 @@
# }
# sscanf(tokens[i], "%lf", &ftemp);
# switch(temp) {
#+
# case CONF_CLOCK_MAX:
# loop_config(LOOP_MAX, ftemp);
# break;
#@@ -985,10 +1014,6 @@
# loop_config(LOOP_MINSTEP, ftemp);
# break;
#
#- case CONF_CLOCK_MINPOLL:
#- loop_config(LOOP_MINPOLL, ftemp);
#- break;
#-
# case CONF_CLOCK_ALLAN:
# loop_config(LOOP_ALLAN, ftemp);
# break;
#@@ -996,14 +1021,63 @@
# case CONF_CLOCK_HUFFPUFF:
# loop_config(LOOP_HUFFPUFF, ftemp);
# break;
#+
#+ case CONF_CLOCK_FREQ:
#+ loop_config(LOOP_FREQ, ftemp);
#+ break;
# }
# }
# break;
#
#-#ifdef AUTOKEY
#+ case CONFIG_TOS:
#+ for (i = 1; i < ntokens; i++) {
#+ int temp;
#+ double ftemp;
#+
#+ temp = matchkey(tokens[i++], tos_keywords, 1);
#+ if (i > ntokens - 1) {
#+ msyslog(LOG_ERR,
#+ "tinker: missing argument");
#+ errflg++;
#+ break;
#+ }
#+ sscanf(tokens[i], "%lf", &ftemp);
#+ switch(temp) {
#+
#+ case CONF_TOS_MINCLOCK:
#+ proto_config(PROTO_MINCLOCK, 0, ftemp, NULL);
#+ break;
#+
#+ case CONF_TOS_MINSANE:
#+ proto_config(PROTO_MINSANE, 0, ftemp, NULL);
#+ break;
#+
#+ case CONF_TOS_FLOOR:
#+ proto_config(PROTO_FLOOR, 0, ftemp, NULL);
#+ break;
#+
#+ case CONF_TOS_CEILING:
#+ proto_config(PROTO_CEILING, 0, ftemp, NULL);
#+ break;
#+
#+ case CONF_TOS_COHORT:
#+ proto_config(PROTO_COHORT, 0, ftemp, NULL);
#+ break;
#+ }
#+ }
#+ break;
#+
#+ case CONFIG_TTL:
#+ for (i = 1; i < ntokens && i < MAX_TTL; i++) {
#+ sys_ttl[i - 1] = (u_char) atoi(tokens[i]);
#+ sys_ttlmax = i - 1;
#+ }
#+ break;
#+
#+#ifdef OPENSSL
# case CONFIG_REVOKE:
# if (ntokens >= 2)
#- sys_revoke = 1 << max(atoi(tokens[1]), 10);
#+ sys_revoke = (u_char) max(atoi(tokens[1]), KEY_REVOKE);
# break;
#
# case CONFIG_AUTOMAX:
#@@ -1011,25 +1085,44 @@
# sys_automax = 1 << max(atoi(tokens[1]), 10);
# break;
#
#-#ifdef PUBKEY
#- case CONFIG_KEYSDIR:
#- if (ntokens < 2) {
#- msyslog(LOG_ERR,
#- "Keys directory name required");
#- break;
#+ case CONFIG_DISCARD:
#+ for (i = 1; i < ntokens; i++) {
#+ int temp;
#+
#+ temp = matchkey(tokens[i++],
#+ discard_keywords, 1);
#+ if (i > ntokens - 1) {
#+ msyslog(LOG_ERR,
#+ "discard: missing argument");
#+ errflg++;
#+ break;
#+ }
#+ switch(temp) {
#+ case CONF_DISCARD_AVERAGE:
#+ res_avg_interval = atoi(tokens[i++]);
#+ break;
#+
#+ case CONF_DISCARD_MINIMUM:
#+ res_min_interval = atoi(tokens[i++]);
#+ break;
#+ default:
#+ msyslog(LOG_ERR,
#+ "discard: unknown keyword");
#+ break;
#+ }
# }
#- crypto_config(CRYPTO_CONF_KEYS, tokens[1]);
# break;
#-
#+
# case CONFIG_CRYPTO:
# if (ntokens == 1) {
#- crypto_config(CRYPTO_CONF_FLAGS , "0");
#+ crypto_config(CRYPTO_CONF_NONE, NULL);
# break;
# }
# for (i = 1; i < ntokens; i++) {
# int temp;
#
#- temp = matchkey(tokens[i++], crypto_keywords);
#+ temp = matchkey(tokens[i++],
#+ crypto_keywords, 1);
# if (i > ntokens - 1) {
# msyslog(LOG_ERR,
# "crypto: missing argument");
#@@ -1037,48 +1130,88 @@
# break;
# }
# switch(temp) {
#- case CONF_CRYPTO_FLAGS:
#- crypto_config(CRYPTO_CONF_FLAGS, tokens[i]);
#+
#+ case CONF_CRYPTO_CERT:
#+ crypto_config(CRYPTO_CONF_CERT,
#+ tokens[i]);
# break;
#
#- case CONF_CRYPTO_LEAP:
#- crypto_config(CRYPTO_CONF_LEAP, tokens[i]);
#+ case CONF_CRYPTO_RSA:
#+ crypto_config(CRYPTO_CONF_PRIV,
#+ tokens[i]);
# break;
#
#- case CONF_CRYPTO_DH:
#- crypto_config(CRYPTO_CONF_DH, tokens[i]);
#+ case CONF_CRYPTO_IFFPAR:
#+ crypto_config(CRYPTO_CONF_IFFPAR,
#+ tokens[i]);
# break;
#
#- case CONF_CRYPTO_PRIVATEKEY:
#- crypto_config(CRYPTO_CONF_PRIV, tokens[i]);
#+ case CONF_CRYPTO_GQPAR:
#+ crypto_config(CRYPTO_CONF_GQPAR,
#+ tokens[i]);
# break;
#
#- case CONF_CRYPTO_PUBLICKEY:
#- crypto_config(CRYPTO_CONF_PUBL, tokens[i]);
#+ case CONF_CRYPTO_MVPAR:
#+ crypto_config(CRYPTO_CONF_MVPAR,
#+ tokens[i]);
# break;
#
#- case CONF_CRYPTO_CERT:
#- crypto_config(CRYPTO_CONF_CERT, tokens[i]);
#+ case CONF_CRYPTO_LEAP:
#+ crypto_config(CRYPTO_CONF_LEAP,
#+ tokens[i]);
#+ break;
#+
#+ case CONF_CRYPTO_PW:
#+ crypto_config(CRYPTO_CONF_PW,
#+ tokens[i]);
#+ break;
#+
#+ case CONF_CRYPTO_RAND:
#+ crypto_config(CRYPTO_CONF_RAND,
#+ tokens[i]);
#+ break;
#+
#+ case CONF_CRYPTO_SIGN:
#+ crypto_config(CRYPTO_CONF_SIGN,
#+ tokens[i]);
# break;
#
# default:
#- msyslog(LOG_ERR, "crypto: unknown keyword");
#+ msyslog(LOG_ERR,
#+ "crypto: unknown keyword");
# break;
# }
# }
# break;
#-#endif /* PUBKEY */
#-#endif /* AUTOKEY */
#+#endif /* OPENSSL */
#
# case CONFIG_RESTRICT:
# if (ntokens < 2) {
# msyslog(LOG_ERR, "restrict requires an address");
# break;
# }
#- if (STREQ(tokens[1], "default"))
#- peeraddr.sin_addr.s_addr = htonl(INADDR_ANY);
#- else if (!getnetnum(tokens[1], &peeraddr, 1))
#- break;
#+ istart = 1;
#+ memset((char *)&peeraddr, 0, sizeof(peeraddr));
#+ switch (matchkey(tokens[istart], addr_type, 0)) {
#+ case CONF_ADDR_IPV4:
#+ peeraddr.ss_family = AF_INET;
#+ istart++;
#+ break;
#+ case CONF_ADDR_IPV6:
#+ peeraddr.ss_family = AF_INET6;
#+ istart++;
#+ break;
#+ }
#+
#+ /*
#+ * Assume default means an IPv4 address, except
#+ * if forced by a -4 or -6.
#+ */
#+ if (STREQ(tokens[istart], "default")) {
#+ if (peeraddr.ss_family == 0)
#+ peeraddr.ss_family = AF_INET;
#+ } else if (!getnetnum(tokens[istart], &peeraddr, 1))
#+ break;
#
# /*
# * Use peerversion as flags, peerkey as mflags. Ick.
#@@ -1086,9 +1219,10 @@
# peerversion = 0;
# peerkey = 0;
# errflg = 0;
#- maskaddr.sin_addr.s_addr = ~(u_int32)0;
#- for (i = 2; i < ntokens; i++) {
#- switch (matchkey(tokens[i], res_keywords)) {
#+ SET_HOSTMASK(&maskaddr, peeraddr.ss_family);
#+ istart++;
#+ for (i = istart; i < ntokens; i++) {
#+ switch (matchkey(tokens[i], res_keywords, 1)) {
# case CONF_RES_MASK:
# if (i >= ntokens-1) {
# msyslog(LOG_ERR,
#@@ -1154,8 +1288,8 @@
# break;
# }
# }
#- if (SRCADR(&peeraddr) == htonl(INADDR_ANY))
#- maskaddr.sin_addr.s_addr = 0;
#+ if (SOCKNUL(&peeraddr))
#+ ANYSOCK(&maskaddr);
# if (!errflg)
# hack_restrict(RESTRICT_FLAGS, &peeraddr, &maskaddr,
# (int)peerkey, peerversion);
#@@ -1170,11 +1304,23 @@
# "broadcastdelay value %s undecodable",
# tokens[1]);
# } else {
#- proto_config(PROTO_BROADDELAY, 0, tmp);
#+ proto_config(PROTO_BROADDELAY, 0, tmp, NULL);
# }
# }
# break;
#
#+ case CONFIG_CDELAY:
#+ if (ntokens >= 2) {
#+ u_long ui;
#+
#+ if (sscanf(tokens[1], "%ld", &ui) != 1)
#+ msyslog(LOG_ERR,
#+ "illegal value - line ignored");
#+ else
#+ proto_config(PROTO_CALLDELAY, ui, 0, NULL);
#+ }
#+ break;
#+
# case CONFIG_TRUSTEDKEY:
# for (i = 1; i < ntokens; i++) {
# keyid_t tkey;
#@@ -1232,7 +1378,20 @@
# "no address for trap command, line ignored");
# break;
# }
#- if (!getnetnum(tokens[1], &peeraddr, 1))
#+ istart = 1;
#+ memset((char *)&peeraddr, 0, sizeof(peeraddr));
#+ switch (matchkey(tokens[istart], addr_type, 0)) {
#+ case CONF_ADDR_IPV4:
#+ peeraddr.ss_family = AF_INET;
#+ istart++;
#+ break;
#+ case CONF_ADDR_IPV6:
#+ peeraddr.ss_family = AF_INET6;
#+ istart++;
#+ break;
#+ }
#+
#+ if (!getnetnum(tokens[istart], &peeraddr, 1))
# break;
#
# /*
#@@ -1241,8 +1400,9 @@
# errflg = 0;
# peerversion = 0;
# localaddr = 0;
#- for (i = 2; i < ntokens-1; i++)
#- switch (matchkey(tokens[i], trap_keywords)) {
#+ istart++;
#+ for (i = istart; i < ntokens-1; i++)
#+ switch (matchkey(tokens[i], trap_keywords, 1)) {
# case CONF_TRAP_PORT:
# if (i >= ntokens-1) {
# msyslog(LOG_ERR,
#@@ -1268,6 +1428,9 @@
# break;
# }
#
#+ memset((char *)&maskaddr, 0,
#+ sizeof(maskaddr));
#+ maskaddr.ss_family = peeraddr.ss_family;
# if (!getnetnum(tokens[++i],
# &maskaddr, 1)) {
# errflg = 1;
#@@ -1278,7 +1441,7 @@
# if (localaddr == NULL) {
# msyslog(LOG_ERR,
# "can't find interface with address %s",
#- ntoa(&maskaddr));
#+ stoa(&maskaddr));
# errflg = 1;
# }
# break;
#@@ -1290,16 +1453,16 @@
#
# if (!errflg) {
# if (peerversion != 0)
#- peeraddr.sin_port = htons( (u_short) peerversion);
#+ ((struct sockaddr_in6*)&peeraddr)->sin6_port = htons( (u_short) peerversion);
# else
#- peeraddr.sin_port = htons(TRAPPORT);
#+ ((struct sockaddr_in6*)&peeraddr)->sin6_port = htons(TRAPPORT);
# if (localaddr == NULL)
#- localaddr = any_interface;
#+ localaddr = ANY_INTERFACE_CHOOSE(&peeraddr);
# if (!ctlsettrap(&peeraddr, localaddr, 0,
# NTP_VERSION))
# msyslog(LOG_ERR,
# "can't set trap for %s, no resources",
#- ntoa(&peeraddr));
#+ stoa(&peeraddr));
# }
# break;
#
#@@ -1309,13 +1472,14 @@
# "no address for fudge command, line ignored");
# break;
# }
#+ memset((char *)&peeraddr, 0, sizeof(peeraddr));
# if (!getnetnum(tokens[1], &peeraddr, 1))
# break;
#
# if (!ISREFCLOCKADR(&peeraddr)) {
# msyslog(LOG_ERR,
# "%s is inappropriate address for the fudge command, line ignored",
#- ntoa(&peeraddr));
#+ stoa(&peeraddr));
# break;
# }
#
#@@ -1324,13 +1488,13 @@
# errflg = 0;
# for (i = 2; i < ntokens-1; i++) {
# switch (c = matchkey(tokens[i],
#- fudge_keywords)) {
#+ fudge_keywords, 1)) {
# case CONF_FDG_TIME1:
# if (sscanf(tokens[++i], "%lf",
# &clock_stat.fudgetime1) != 1) {
# msyslog(LOG_ERR,
# "fudge %s time1 value in error",
#- ntoa(&peeraddr));
#+ stoa(&peeraddr));
# errflg = i;
# break;
# }
#@@ -1342,7 +1506,7 @@
# &clock_stat.fudgetime2) != 1) {
# msyslog(LOG_ERR,
# "fudge %s time2 value in error",
#- ntoa(&peeraddr));
#+ stoa(&peeraddr));
# errflg = i;
# break;
# }
#@@ -1355,7 +1519,7 @@
# {
# msyslog(LOG_ERR,
# "fudge %s stratum value in error",
#- ntoa(&peeraddr));
#+ stoa(&peeraddr));
# errflg = i;
# break;
# }
#@@ -1379,7 +1543,7 @@
# || fudgeflag > 1) {
# msyslog(LOG_ERR,
# "fudge %s flag value in error",
#- ntoa(&peeraddr));
#+ stoa(&peeraddr));
# errflg = i;
# break;
# }
#@@ -1475,7 +1639,8 @@
# errflg = 0;
#
# for (i = 2; i < ntokens; i++) {
#- switch (matchkey(tokens[i], filegen_keywords)) {
#+ switch (matchkey(tokens[i],
#+ filegen_keywords, 1)) {
# case CONF_FGEN_FILE:
# if (i >= ntokens - 1) {
# msyslog(LOG_ERR,
#@@ -1494,7 +1659,8 @@
# errflg = i;
# break;
# }
#- peerkey = matchkey(tokens[++i], fgen_types);
#+ peerkey = matchkey(tokens[++i],
#+ fgen_types, 1);
# if (peerkey == CONFIG_UNKNOWN) {
# msyslog(LOG_ERR,
# "filegen %s unknown type \"%s\"",
#@@ -1532,55 +1698,12 @@
# "no value for setvar command - line ignored");
# } else {
# set_sys_var(tokens[1], strlen(tokens[1])+1,
#- RW |
#+ (u_short) (RW |
# ((((ntokens > 2)
# && !strcmp(tokens[2],
# "default")))
# ? DEF
#- : 0));
#- }
#- break;
#-
#- case CONFIG_CLIENTLIMIT:
#- if (ntokens < 2) {
#- msyslog(LOG_ERR,
#- "no value for clientlimit command - line ignored");
#- } else {
#- u_long ui;
#-
#- if (!atouint(tokens[1], &ui) || !ui) {
#- msyslog(LOG_ERR,
#- "illegal value for clientlimit command - line ignored");
#- } else {
#- char bp[80];
#-
#-#ifdef DEBUG
#- if (debug)
#- sprintf(bp, "client_limit=%lu", ui);
#-#endif
#- set_sys_var(bp, strlen(bp)+1, RO);
#- client_limit = ui;
#- }
#- }
#- break;
#-
#- case CONFIG_CLIENTPERIOD:
#- if (ntokens < 2) {
#- msyslog(LOG_ERR,
#- "no value for clientperiod command - line ignored");
#- } else {
#- u_long ui;
#-
#- if (!atouint(tokens[1], &ui) || ui < 64) {
#- msyslog(LOG_ERR,
#- "illegal value for clientperiod command - line ignored");
#- } else {
#- char bp[80];
#-
#- sprintf(bp, "client_limit_period=%ld", ui);
#- set_sys_var(bp, strlen(bp)+1, RO);
#- client_limit_period = ui;
#- }
#+ : 0)));
# }
# break;
#
#@@ -1588,7 +1711,7 @@
# for (i = 1; i < ntokens; i++) {
# int flag;
#
#- flag = matchkey(tokens[i], flags_keywords);
#+ flag = matchkey(tokens[i], flags_keywords, 1);
# if (flag == CONFIG_UNKNOWN) {
# msyslog(LOG_ERR,
# "enable unknown flag %s",
#@@ -1596,7 +1719,7 @@
# errflg = 1;
# break;
# }
#- proto_config(flag, 1, 0.);
#+ proto_config(flag, 1, 0., NULL);
# }
# break;
#
#@@ -1604,7 +1727,7 @@
# for (i = 1; i < ntokens; i++) {
# int flag;
#
#- flag = matchkey(tokens[i], flags_keywords);
#+ flag = matchkey(tokens[i], flags_keywords, 1);
# if (flag == CONFIG_UNKNOWN) {
# msyslog(LOG_ERR,
# "disable unknown flag %s",
#@@ -1612,7 +1735,7 @@
# errflg = 1;
# break;
# }
#- proto_config(flag, 0, 0.);
#+ proto_config(flag, 0, 0., NULL);
# }
# break;
#
#@@ -1624,38 +1747,14 @@
# sys_phone[i - 1][0] = '\0';
# break;
#
#- case CONFIG_PPS:
#- if (ntokens < 2) {
#- msyslog(LOG_ERR,
#- "pps missing device name");
#- break;
#- }
#- (void)strncpy(pps_device, tokens[1], MAXPPS);
#- for (i = 2; i < ntokens; i++) {
#- int flag;
#+ case CONFIG_ADJ: {
#+ double ftemp;
#
#- flag = matchkey(tokens[i], pps_keywords);
#- switch(flag) {
#- case CONF_PPS_ASSERT:
#- pps_assert = 0;
#- break;
#- case CONF_PPS_CLEAR:
#- pps_assert = 1;
#- break;
#- case CONF_PPS_HARDPPS:
#- pps_hardpps = 1;
#- break;
#- default:
#- msyslog(LOG_ERR,
#- "pps unknown flag %s",
#- tokens[i]);
#- errflg = 1;
#- break;
#- }
#- if(errflg)
#- break;
#+ sscanf(tokens[1], "%lf", &ftemp);
#+ proto_config(PROTO_ADJ, 0, ftemp, NULL);
# }
# break;
#+
# }
# }
# if (fp[0])
#@@ -1680,7 +1779,7 @@
#
# for (i = 0; i < 8; i++)
# for (j = 1; j < 100; ++j) {
#- rankey[i] = RANDOM & 0xff;
#+ rankey[i] = (char) (RANDOM & 0xff);
# if (rankey[i] != 0) break;
# }
# rankey[8] = 0;
#@@ -1697,10 +1796,12 @@
# #endif /* !defined(VMS) && !defined(SYS_VXWORKS) */
#
# if (res_fp != NULL) {
#- /*
#- * Need name resolution
#- */
#- do_resolve_internal();
#+ if (call_resolver) {
#+ /*
#+ * Need name resolution
#+ */
#+ do_resolve_internal();
#+ }
# }
# }
#
#@@ -1921,7 +2022,7 @@
# * Return the match
# */
# *ntokens = ntok + 1;
#- ntok = matchkey(tokenlist[0], keywords);
#+ ntok = matchkey(tokenlist[0], keywords, 1);
# if (ntok == CONFIG_UNKNOWN)
# goto again;
# return ntok;
#@@ -1935,14 +2036,16 @@
# static int
# matchkey(
# register char *word,
#- register struct keyword *keys
#+ register struct keyword *keys,
#+ int complain
# )
# {
# for (;;) {
# if (keys->keytype == CONFIG_UNKNOWN) {
#- msyslog(LOG_ERR,
#- "configure: keyword \"%s\" unknown, line ignored",
#- word);
#+ if (complain)
#+ msyslog(LOG_ERR,
#+ "configure: keyword \"%s\" unknown, line ignored",
#+ word);
# return CONFIG_UNKNOWN;
# }
# if (STRSAME(word, keys->text))
#@@ -1958,80 +2061,50 @@
# static int
# getnetnum(
# const char *num,
#- struct sockaddr_in *addr,
#+ struct sockaddr_storage *addr,
# int complain
# )
# {
#- register const char *cp;
#- register char *bp;
#- register int i;
#- register int temp;
#- char buf[80]; /* will core dump on really stupid stuff */
#- u_int32 netnum;
#+ struct addrinfo hints;
#+ struct addrinfo *ptr;
#
#- /* XXX ELIMINATE replace with decodenetnum */
#- cp = num;
#- netnum = 0;
#- for (i = 0; i < 4; i++) {
#- bp = buf;
#- while (isdigit((int)*cp))
#- *bp++ = *cp++;
#- if (bp == buf)
#- break;
#-
#- if (i < 3) {
#- if (*cp++ != '.')
#- break;
#- } else if (*cp != '\0')
#- break;
#+ /* Get host address. Looking for UDP datagram connection */
#+ memset(&hints, 0, sizeof (hints));
#+ hints.ai_socktype = SOCK_DGRAM;
#+ hints.ai_family = addr->ss_family;
#
#- *bp = '\0';
#- temp = atoi(buf);
#- if (temp > 255)
#- break;
#- netnum <<= 8;
#- netnum += temp;
# #ifdef DEBUG
# if (debug > 3)
#- printf("getnetnum %s step %d buf %s temp %d netnum %lu\n",
#- num, i, buf, temp, (u_long)netnum);
#+ printf("getaddrinfo %s\n", num);
# #endif
#- }
#-
#- if (i < 4) {
#+ if (getaddrinfo(num, "ntp", &hints, &ptr)!=0) {
# if (complain)
# msyslog(LOG_ERR,
#- "getnetnum: \"%s\" invalid host number, line ignored",
#+ "getaddrinfo: \"%s\" invalid host address, line ignored",
# num);
# #ifdef DEBUG
# if (debug > 3)
# printf(
#- "getnetnum: \"%s\" invalid host number%s.",
#+ "getaddrinfo: \"%s\" invalid host address%s.\n",
# (complain)
#- ? ", line ignored\n"
#+ ? ", line ignored"
# : "",
# num);
# #endif
# return 0;
# }
#
#- /*
#- * make up socket address. Clear it out for neatness.
#- */
#- memset((void *)addr, 0, sizeof(struct sockaddr_in));
#- addr->sin_family = AF_INET;
#- addr->sin_port = htons(NTP_PORT);
#- addr->sin_addr.s_addr = htonl(netnum);
#+ memcpy(addr, ptr->ai_addr, ptr->ai_addrlen);
# #ifdef DEBUG
# if (debug > 1)
#- printf("getnetnum given %s, got %s (%lx)\n",
#- num, ntoa(addr), (u_long)netnum);
#+ printf("getnetnum given %s, got %s \n",
#+ num, stoa(addr));
# #endif
# return 1;
# }
#
#
#-#if !defined(VMS)
#+#if !defined(VMS) && !defined(SYS_WINNT)
# /*
# * catchchild - receive the resolver's exit status
# */
#@@ -2075,8 +2148,7 @@
# #else
# /* no /tmp directory under NT */
# {
#- DWORD len;
#- if(!(len = GetTempPath((DWORD)MAX_PATH, (LPTSTR)res_file))) {
#+ if(!(GetTempPath((DWORD)MAX_PATH, (LPTSTR)res_file))) {
# msyslog(LOG_ERR, "cannot get pathname for temporary directory: %m");
# return;
# }
#@@ -2269,13 +2341,14 @@
# */
# DWORD dwThreadId;
# fflush(stdout);
#- if (!(ResolverThreadHandle = CreateThread(
#- NULL, /* no security attributes */
#- 0, /* use default stack size */
#+ ResolverThreadHandle = CreateThread(
#+ NULL, /* no security attributes */
#+ 0, /* use default stack size */
# (LPTHREAD_START_ROUTINE) ntp_intres, /* thread function */
#- NULL, /* argument to thread function */
#- 0, /* use default creation flags */
#- &dwThreadId))) { /* returns the thread identifier */
#+ NULL, /* argument to thread function */
#+ 0, /* use default creation flags */
#+ &dwThreadId); /* returns the thread identifier */
#+ if (ResolverThreadHandle == NULL) {
# msyslog(LOG_ERR, "CreateThread() failed, can't start ntp_intres");
# abort_resolve();
# }
#
# Diff checksum=f16f669c
# Patch vers: 1.3
# Patch type: REGULAR
== ChangeSet ==
stenn at whimsy.udel.edu|ChangeSet|19990526004811|57482|8983e65c737bb465
stenn at whimsy.udel.edu|ChangeSet|20030624073008|58596
D 1.683.14.29 03/06/24 03:38:13-04:00 stenn at whimsy.udel.edu +1 -0
B stenn at whimsy.udel.edu|ChangeSet|19990526004811|57482|8983e65c737bb465
C
c Typo.
K 58596
P ChangeSet
------------------------------------------------
0a0
> stenn at whimsy.udel.edu|ntpd/ntp_config.c|19990526004817|01635|3aed0663 stenn at whimsy.udel.edu|ntpd/ntp_config.c|20030624073759|10155
stenn at whimsy.udel.edu|ChangeSet|20030624073502|41285
D 1.1084 03/06/24 03:42:09-04:00 stenn at whimsy.udel.edu +1 -0
B stenn at whimsy.udel.edu|ChangeSet|19990526004811|57482|8983e65c737bb465
C
c Merge
i stenn at whimsy.udel.edu|ChangeSet|20030624073813|58596
K 41286
M stenn at whimsy.udel.edu|ChangeSet|20030624073813|58596
P ChangeSet
------------------------------------------------
0a0
> stenn at whimsy.udel.edu|ntpd/ntp_config.c|19990526004817|01635|3aed0663 stenn at whimsy.udel.edu|ntpd/ntp_config.c|20030624074136|13466
== ntpd/ntp_config.c ==
stenn at whimsy.udel.edu|ntpd/ntp_config.c|19990526004817|01635|3aed0663
stenn at whimsy.udel.edu|ntpd/ntp_config.c|20030624072958|10155
D 1.50.4.5 03/06/24 03:37:59-04:00 stenn at whimsy.udel.edu +2 -2
B stenn at whimsy.udel.edu|ChangeSet|19990526004811|57482|8983e65c737bb465
C
c Typo.
K 10155
O -rw-rw-r--
P ntpd/ntp_config.c
------------------------------------------------
D2009 1
I2009 1
"getnetnum: \"%s\" invalid host number%s.\n",
D2011 1
I2011 1
? ", line ignored"
stenn at whimsy.udel.edu|ntpd/ntp_config.c|20030624073433|13466
D 1.92 03/06/24 03:41:36-04:00 stenn at whimsy.udel.edu +0 -2
B stenn at whimsy.udel.edu|ChangeSet|19990526004811|57482|8983e65c737bb465
C
i stenn at whimsy.udel.edu|ntpd/ntp_config.c|20030624073759|10155
K 13466
M stenn at whimsy.udel.edu|ntpd/ntp_config.c|20030624073759|10155
O -rw-rw-r--
P ntpd/ntp_config.c
------------------------------------------------
D2088 1
D2091 1
# Patch checksum=efd237d1
More information about the bk-ntp-dev-send
mailing list