rpms/ntp/devel ntp-4.2.4p4-bcast.patch, NONE, 1.1 ntp-4.2.4p4-bsdadv.patch, NONE, 1.1 ntp-4.2.4p4-mlock.patch, NONE, 1.1 ntp-4.2.4p4-multilisten.patch, NONE, 1.1 .cvsignore, 1.25, 1.26 ntp-4.2.4-htmldoc.patch, 1.3, 1.4 ntp.spec, 1.73, 1.74 sources, 1.26, 1.27 ntp-4.2.4p0-bcast.patch, 1.1, NONE ntp-4.2.4p2-loopback.patch, 1.1, NONE ntp-4.2.4p2-mlock.patch, 1.1, NONE ntp-4.2.4p2-multilisten.patch, 1.1, NONE
Miroslav Lichvar (mlichvar)
fedora-extras-commits at redhat.com
Fri Oct 26 13:28:28 UTC 2007
Author: mlichvar
Update of /cvs/pkgs/rpms/ntp/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv2658
Modified Files:
.cvsignore ntp-4.2.4-htmldoc.patch ntp.spec sources
Added Files:
ntp-4.2.4p4-bcast.patch ntp-4.2.4p4-bsdadv.patch
ntp-4.2.4p4-mlock.patch ntp-4.2.4p4-multilisten.patch
Removed Files:
ntp-4.2.4p0-bcast.patch ntp-4.2.4p2-loopback.patch
ntp-4.2.4p2-mlock.patch ntp-4.2.4p2-multilisten.patch
Log Message:
- update to 4.2.4p4
- fix default NTP version for outgoing packets in ntpdate man page
(#245408)
- replace BSD with advertising code in ntpdc and ntpq
ntp-4.2.4p4-bcast.patch:
--- NEW FILE ntp-4.2.4p4-bcast.patch ---
https://ntp.isc.org/bugs/show_bug.cgi?id=779
https://ntp.isc.org/bugs/show_bug.cgi?id=823
diff -up ntp-4.2.4p4/ntpd/ntp_peer.c.bcast ntp-4.2.4p4/ntpd/ntp_peer.c
--- ntp-4.2.4p4/ntpd/ntp_peer.c.bcast 2007-05-27 13:02:49.000000000 +0200
+++ ntp-4.2.4p4/ntpd/ntp_peer.c 2007-10-25 15:08:01.000000000 +0200
@@ -705,7 +705,8 @@ select_peerinterface(struct peer *peer,
* as our (network) source address would be undefined and
* crypto will not work without knowing the own transmit address
*/
- if (interface != NULL && interface->flags & INT_WILDCARD)
+ if (interface != NULL && interface->flags & INT_WILDCARD &&
+ !(cast_flags & MDF_BCAST))
interface = NULL;
return interface;
diff -up ntp-4.2.4p4/ntpd/ntp_io.c.bcast ntp-4.2.4p4/ntpd/ntp_io.c
--- ntp-4.2.4p4/ntpd/ntp_io.c.bcast 2007-10-25 15:08:01.000000000 +0200
+++ ntp-4.2.4p4/ntpd/ntp_io.c 2007-10-25 15:20:58.000000000 +0200
@@ -145,6 +145,8 @@ int ninterfaces; /* Total number of in
volatile int disable_dynamic_updates; /* when set to != 0 dynamic updates won't happen */
+static int pktinfo_status = 0; /* is IP_PKTINFO on wildipv4 iface enabled? */
+
#ifdef REFCLOCK
/*
* Refclock stuff. We keep a chain of structures with data concerning
@@ -1538,6 +1540,18 @@ set_reuseaddr(int flag) {
}
}
+static void
+set_pktinfo(int flag)
+{
+ if (wildipv4 == NULL)
+ return;
+ if (setsockopt(wildipv4->fd, SOL_IP, IP_PKTINFO, &flag, sizeof (flag))) {
+ if (debug > 1)
+ printf("setsockopt(IP_PKTINFO) failed: %s\n", strerror(errno));
+ } else
+ pktinfo_status = flag;
+}
+
/*
* This is just a wrapper around an internal function so we can
* make other changes as necessary later on
@@ -1954,6 +1968,7 @@ io_setbclient(void)
#else
netsyslog(LOG_ERR, "io_setbclient: Broadcast Client disabled by build");
#endif
+ set_pktinfo(1);
}
/*
@@ -1976,6 +1991,7 @@ io_unsetbclient(void)
continue;
lstatus = socket_broadcast_disable(interf, &interf->sin);
}
+ set_pktinfo(0);
}
/*
@@ -2868,7 +2884,8 @@ read_network_packet(SOCKET fd, struct in
#ifdef HAVE_TIMESTAMP
struct msghdr msghdr;
struct iovec iovec;
- char control[TIMESTAMP_CTLMSGBUF_SIZE]; /* pick up control messages */
+ char control[sizeof (struct cmsghdr) +
+ sizeof (struct in_pktinfo) + 8]; /* pick up control messages */
#endif
/*
@@ -2880,7 +2897,7 @@ read_network_packet(SOCKET fd, struct in
rb = get_free_recv_buffer();
- if (rb == NULL || itf->ignore_packets == ISC_TRUE)
+ if (rb == NULL || (itf->ignore_packets == ISC_TRUE && !(pktinfo_status && itf == wildipv4)))
{
char buf[RX_BUFF_SIZE];
struct sockaddr_storage from;
@@ -2942,6 +2959,34 @@ read_network_packet(SOCKET fd, struct in
return (buflen);
}
+ if (pktinfo_status && itf->ignore_packets == ISC_TRUE && itf == wildipv4) {
+ /* check for broadcast on 255.255.255.255, exception allowed on wildipv4 */
+ struct cmsghdr *cmsg;
+ struct in_pktinfo *pktinfo = NULL;
+
+ if ((cmsg = CMSG_FIRSTHDR(&msghdr)))
+ do {
+ if (cmsg->cmsg_level == SOL_IP && cmsg->cmsg_type == IP_PKTINFO)
+ pktinfo = (struct in_pktinfo *) CMSG_DATA(cmsg);
+ } while ((cmsg = CMSG_NXTHDR(&msghdr, cmsg)));
+ if (pktinfo && pktinfo->ipi_addr.s_addr == INADDR_BROADCAST) {
+#ifdef DEBUG
+ if (debug > 3) {
+ printf("INADDR_BROADCAST\n");
+ }
+#endif
+ } else {
+#ifdef DEBUG
+ if (debug > 3)
+ printf("%s on (%lu) fd=%d from %s\n", "ignore",
+ free_recvbuffs(), fd, stoa(&rb->recv_srcadr));
+#endif
+ packets_ignored++;
+ freerecvbuf(rb);
+ return (buflen);
+ }
+ }
+
#ifdef DEBUG
if (debug > 2) {
if(rb->recv_srcadr.ss_family == AF_INET)
ntp-4.2.4p4-bsdadv.patch:
--- NEW FILE ntp-4.2.4p4-bsdadv.patch ---
diff -up ntp-4.2.4p4/include/ntp_random.h.bsdadv ntp-4.2.4p4/include/ntp_random.h
--- ntp-4.2.4p4/include/ntp_random.h.bsdadv 2006-06-06 22:16:18.000000000 +0200
+++ ntp-4.2.4p4/include/ntp_random.h 2007-10-26 13:57:38.000000000 +0200
@@ -1,14 +1,12 @@
+#include <stdlib.h>
-#include <ntp_types.h>
-
-long ntp_random P((void));
-void ntp_srandom P((unsigned long));
-void ntp_srandomdev P((void));
-char * ntp_initstate P((unsigned long, /* seed for R.N.G. */
- char *, /* pointer to state array */
- long /* # bytes of state info */
- ));
-char * ntp_setstate P((char *)); /* pointer to state array */
-
-
+#if RAND_MAX < 2147483647
+#error RAND_MAX < 2147483647
+#endif
+#if RAND_MAX == 2147483647
+#define ntp_random random
+#else
+#define ntp_random() (random() & 0x7fffffff)
+#endif
+#define ntp_srandom srandom
diff -up /dev/null ntp-4.2.4p4/include/md5.h
--- /dev/null 2007-08-14 18:13:05.327268775 +0200
+++ ntp-4.2.4p4/include/md5.h 2007-10-26 14:11:38.000000000 +0200
@@ -0,0 +1,23 @@
+#ifndef MD5_H
+#define MD5_H
+
+#include <inttypes.h>
+typedef uint32_t uint32;
+
+struct MD5Context {
+ uint32 buf[4];
+ uint32 bits[2];
+ unsigned char in[64];
+};
+
+extern void MD5Init(struct MD5Context *ctx);
+extern void MD5Update(struct MD5Context *ctx, unsigned char *buf, unsigned len);
+extern void MD5Final(unsigned char digest[16], struct MD5Context *ctx);
+extern void MD5Transform(uint32 buf[4], uint32 in[16]);
+
+/*
+ * This is needed to make RSAREF happy on some MS-DOS compilers.
+ */
+typedef struct MD5Context MD5_CTX;
+
+#endif /* !MD5_H */
diff -up ntp-4.2.4p4/include/ntp_rfc2553.h.bsdadv ntp-4.2.4p4/include/ntp_rfc2553.h
--- ntp-4.2.4p4/include/ntp_rfc2553.h.bsdadv 2007-10-26 13:43:07.000000000 +0200
+++ ntp-4.2.4p4/include/ntp_rfc2553.h 2007-10-26 13:43:07.000000000 +0200
@@ -0,0 +1 @@
+#include <netdb.h>
diff -up /dev/null ntp-4.2.4p4/libntp/md5.c
--- /dev/null 2007-08-14 18:13:05.327268775 +0200
+++ ntp-4.2.4p4/libntp/md5.c 2007-10-26 14:11:09.000000000 +0200
@@ -0,0 +1,256 @@
+/*
+ * This code implements the MD5 message-digest algorithm.
+ * The algorithm is due to Ron Rivest. This code was
+ * written by Colin Plumb in 1993, no copyright is claimed.
+ * This code is in the public domain; do with it what you wish.
+ *
+ * Equivalent code is available from RSA Data Security, Inc.
+ * This code has been tested against that, and is equivalent,
+ * except that you don't need to include two pages of legalese
+ * with every copy.
+ *
+ * To compute the message digest of a chunk of bytes, declare an
+ * MD5Context structure, pass it to MD5Init, call MD5Update as
+ * needed on buffers full of bytes, and then call MD5Final, which
+ * will fill a supplied 16-byte array with the digest.
+ */
+
+/* Brutally hacked by John Walker back from ANSI C to K&R (no
+ prototypes) to maintain the tradition that Netfone will compile
+ with Sun's original "cc". */
+
+#include <memory.h> /* for memcpy() */
+#include "md5.h"
+#include "config.h"
+
+#ifndef WORDS_BIGENDIAN
+#define byteReverse(buf, len) /* Nothing */
+#else
+/*
+ * Note: this code is harmless on little-endian machines.
+ */
+static void byteReverse(buf, longs)
+ unsigned char *buf; unsigned longs;
+{
+ uint32 t;
+ do {
+ t = (uint32) ((unsigned) buf[3] << 8 | buf[2]) << 16 |
+ ((unsigned) buf[1] << 8 | buf[0]);
+ *(uint32 *) buf = t;
+ buf += 4;
+ } while (--longs);
+}
+#endif
+
+/*
+ * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious
+ * initialization constants.
+ */
+void MD5Init(ctx)
+ struct MD5Context *ctx;
+{
+ ctx->buf[0] = 0x67452301;
+ ctx->buf[1] = 0xefcdab89;
+ ctx->buf[2] = 0x98badcfe;
+ ctx->buf[3] = 0x10325476;
+
+ ctx->bits[0] = 0;
+ ctx->bits[1] = 0;
+}
+
+/*
+ * Update context to reflect the concatenation of another buffer full
+ * of bytes.
+ */
+void MD5Update(ctx, buf, len)
+ struct MD5Context *ctx; unsigned char *buf; unsigned len;
+{
+ uint32 t;
+
+ /* Update bitcount */
+
+ t = ctx->bits[0];
+ if ((ctx->bits[0] = t + ((uint32) len << 3)) < t)
+ ctx->bits[1]++; /* Carry from low to high */
+ ctx->bits[1] += len >> 29;
+
+ t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */
+
+ /* Handle any leading odd-sized chunks */
+
+ if (t) {
+ unsigned char *p = (unsigned char *) ctx->in + t;
+
+ t = 64 - t;
+ if (len < t) {
+ memcpy(p, buf, len);
+ return;
+ }
+ memcpy(p, buf, t);
+ byteReverse(ctx->in, 16);
+ MD5Transform(ctx->buf, (uint32 *) ctx->in);
+ buf += t;
+ len -= t;
+ }
+ /* Process data in 64-byte chunks */
+
+ while (len >= 64) {
+ memcpy(ctx->in, buf, 64);
+ byteReverse(ctx->in, 16);
+ MD5Transform(ctx->buf, (uint32 *) ctx->in);
+ buf += 64;
+ len -= 64;
+ }
+
+ /* Handle any remaining bytes of data. */
+
+ memcpy(ctx->in, buf, len);
+}
+
+/*
+ * Final wrapup - pad to 64-byte boundary with the bit pattern
+ * 1 0* (64-bit count of bits processed, MSB-first)
+ */
+void MD5Final(digest, ctx)
+ unsigned char digest[16]; struct MD5Context *ctx;
+{
+ unsigned count;
+ unsigned char *p;
+
+ /* Compute number of bytes mod 64 */
+ count = (ctx->bits[0] >> 3) & 0x3F;
+
+ /* Set the first char of padding to 0x80. This is safe since there is
+ always at least one byte free */
+ p = ctx->in + count;
+ *p++ = 0x80;
+
+ /* Bytes of padding needed to make 64 bytes */
+ count = 64 - 1 - count;
+
+ /* Pad out to 56 mod 64 */
+ if (count < 8) {
+ /* Two lots of padding: Pad the first block to 64 bytes */
+ memset(p, 0, count);
+ byteReverse(ctx->in, 16);
+ MD5Transform(ctx->buf, (uint32 *) ctx->in);
+
+ /* Now fill the next block with 56 bytes */
+ memset(ctx->in, 0, 56);
+ } else {
+ /* Pad block to 56 bytes */
+ memset(p, 0, count - 8);
+ }
+ byteReverse(ctx->in, 14);
+
+ /* Append length in bits and transform */
+ ((uint32 *) ctx->in)[14] = ctx->bits[0];
+ ((uint32 *) ctx->in)[15] = ctx->bits[1];
+
+ MD5Transform(ctx->buf, (uint32 *) ctx->in);
+ byteReverse((unsigned char *) ctx->buf, 4);
+ memcpy(digest, ctx->buf, 16);
+ memset(ctx, 0, sizeof(ctx)); /* In case it's sensitive */
+}
+
+
+/* The four core functions - F1 is optimized somewhat */
+
+/* #define F1(x, y, z) (x & y | ~x & z) */
+#define F1(x, y, z) (z ^ (x & (y ^ z)))
+#define F2(x, y, z) F1(z, x, y)
+#define F3(x, y, z) (x ^ y ^ z)
+#define F4(x, y, z) (y ^ (x | ~z))
+
+/* This is the central step in the MD5 algorithm. */
+#define MD5STEP(f, w, x, y, z, data, s) \
+ ( w += f(x, y, z) + data, w = w<<s | w>>(32-s), w += x )
+
+/*
+ * The core of the MD5 algorithm, this alters an existing MD5 hash to
+ * reflect the addition of 16 longwords of new data. MD5Update blocks
+ * the data and converts bytes into longwords for this routine.
+ */
+void MD5Transform(buf, in)
+ uint32 buf[4]; uint32 in[16];
+{
+ register uint32 a, b, c, d;
+
+ a = buf[0];
+ b = buf[1];
+ c = buf[2];
+ d = buf[3];
+
+ MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);
+ MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
+ MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);
+ MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
+ MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
+ MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);
+ MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);
+ MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);
+ MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);
+ MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
+ MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
+ MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);
+ MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);
+ MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);
+ MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);
+ MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);
+
+ MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);
+ MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);
+ MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);
+ MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
+ MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);
+ MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);
+ MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
+ MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
+ MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
+ MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);
+ MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
+ MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);
+ MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
+ MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
+ MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);
+ MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
+
+ MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);
+ MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);
+ MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
+ MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);
+ MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);
+ MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
+ MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
+ MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
+ MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
+ MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
+ MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
+ MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);
+ MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
+ MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
+ MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
+ MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
+
+ MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);
+ MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);
+ MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);
+ MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);
+ MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
+ MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
+ MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
+ MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
+ MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
+ MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
+ MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
+ MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
+ MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
+ MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
+ MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
+ MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);
+
+ buf[0] += a;
+ buf[1] += b;
+ buf[2] += c;
+ buf[3] += d;
+}
ntp-4.2.4p4-mlock.patch:
--- NEW FILE ntp-4.2.4p4-mlock.patch ---
diff -up ntp-4.2.4p4/html/ntpd.html.mlock ntp-4.2.4p4/html/ntpd.html
--- ntp-4.2.4p4/html/ntpd.html.mlock 2007-10-25 14:55:05.000000000 +0200
+++ ntp-4.2.4p4/html/ntpd.html 2007-10-25 14:55:05.000000000 +0200
@@ -34,7 +34,7 @@
</ul>
<hr>
<h4 id="synop">Synopsis</h4>
- <tt>ntpd [ -46aAbdDgLnNqx ] [ -c <i>conffile</i> ] [ -f <i>driftfile</i> ] [ -i <i>jaildir</i> ] [ -I <i>iface</i> ] [ -k <i>keyfile</i> ] [ -l <i>logfile</i> ] [ -p <i>pidfile</i> ] [ -P <i>priority</i> ] [ -r <i>broadcastdelay</i> ] [ -s <i>statsdir</i> ] [ -t <i>key</i> ] [ -u <i>user</i>[:<i>group</i>] ] [ -U <i>interface_update_interval</i> ] [ -v <i>variable</i> ] [ -V <i>variable</i> ]</tt>
+ <tt>ntpd [ -46aAbdDgLmnNqx ] [ -c <i>conffile</i> ] [ -f <i>driftfile</i> ] [ -i <i>jaildir</i> ] [ -I <i>iface</i> ] [ -k <i>keyfile</i> ] [ -l <i>logfile</i> ] [ -p <i>pidfile</i> ] [ -P <i>priority</i> ] [ -r <i>broadcastdelay</i> ] [ -s <i>statsdir</i> ] [ -t <i>key</i> ] [ -u <i>user</i>[:<i>group</i>] ] [ -U <i>interface_update_interval</i> ] [ -v <i>variable</i> ] [ -V <i>variable</i> ]</tt>
<h4 id="descr">Description</h4>
<p>The <tt>ntpd</tt> program is an operating system daemon which sets and maintains the system time of day in synchronism with Internet standard time servers. It is a complete implementation of the Network Time Protocol (NTP) version 4, but also retains compatibility with version 3, as defined by RFC-1305, and version 1 and 2, as defined by RFC-1059 and RFC-1119, respectively. <tt>ntpd</tt> does most computations in 64-bit floating point arithmetic and does relatively clumsy 64-bit fixed point operations only when necessary to preserve the ultimate precision, about 232 picoseconds. While the ultimate precision is not achievable with ordinary workstations and networks of today, it may be required with future gigahertz CPU clocks and gigabit LANs.</p>
<h4 id="op">How NTP Operates</h4>
@@ -95,6 +95,8 @@
<dd>Specify the name and path of the log file. The default is the system log file. This is the same operation as the <tt>logfile <i>logfile</i></tt> configuration command.
<dt><tt>-L</tt>
<dd>Do not listen to virtual IPs. The default is to listen.
+ <dt><tt>-m</tt>
+ <dd>Lock memory.
<dt><tt>-n</tt>
<dd>Don't fork.
<dt><tt>-N</tt>
diff -up ntp-4.2.4p4/ntpd/ntpd.c.mlock ntp-4.2.4p4/ntpd/ntpd.c
--- ntp-4.2.4p4/ntpd/ntpd.c.mlock 2007-10-25 14:55:05.000000000 +0200
+++ ntp-4.2.4p4/ntpd/ntpd.c 2007-10-25 14:55:05.000000000 +0200
@@ -699,7 +699,8 @@ ntpdmain(
}
#endif
-#if defined(HAVE_MLOCKALL) && defined(MCL_CURRENT) && defined(MCL_FUTURE)
+#if defined(MCL_CURRENT) && defined(MCL_FUTURE)
+ if (HAVE_OPT( MLOCK )) {
# ifdef HAVE_SETRLIMIT
/*
* Set the stack limit to something smaller, so that we don't lock a lot
@@ -737,6 +738,7 @@ ntpdmain(
*/
if (mlockall(MCL_CURRENT|MCL_FUTURE) < 0)
msyslog(LOG_ERR, "mlockall(): %m");
+ }
#else /* not (HAVE_MLOCKALL && MCL_CURRENT && MCL_FUTURE) */
# ifdef HAVE_PLOCK
# ifdef PROCLOCK
diff -up ntp-4.2.4p4/ntpd/ntpd-opts.c.mlock ntp-4.2.4p4/ntpd/ntpd-opts.c
--- ntp-4.2.4p4/ntpd/ntpd-opts.c.mlock 2007-09-11 02:31:15.000000000 +0200
+++ ntp-4.2.4p4/ntpd/ntpd-opts.c 2007-10-25 14:55:05.000000000 +0200
@@ -265,6 +265,15 @@ tSCC zNice_Name[] = "ni
#define NICE_FLAGS (OPTST_DISABLED)
/*
+ * Mlock option description:
+ */
+tSCC zMlockText[] =
+ "Lock memory";
+tSCC zMlock_NAME[] = "MLOCK";
+tSCC zMlock_Name[] = "mlock";
+#define MLOCK_FLAGS (OPTST_DISABLED)
+
+/*
* Pidfile option description:
*/
tSCC zPidfileText[] =
@@ -790,6 +799,18 @@ static tOptDesc optDesc[ OPTION_CT ] = {
OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT
#endif
+ { /* entry idx, value */ 29, VALUE_OPT_MLOCK,
+ /* equiv idx, value */ 29, VALUE_OPT_MLOCK,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ MLOCK_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zMlockText, zMlock_NAME, zMlock_Name,
+ /* disablement strs */ NULL, NULL },
+
{ /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
/* equiv idx value */ NO_EQUIVALENT, 0,
/* equivalenced to */ NO_EQUIVALENT,
@@ -882,7 +903,7 @@ tOptions ntpdOptions = {
NO_EQUIVALENT /* index of '-#' option */,
NO_EQUIVALENT /* index of default opt */
},
- 32 /* full option count */, 29 /* user option count */
+ 33 /* full option count */, 30 /* user option count */
};
/*
diff -up ntp-4.2.4p4/ntpd/ntpd-opts.h.mlock ntp-4.2.4p4/ntpd/ntpd-opts.h
--- ntp-4.2.4p4/ntpd/ntpd-opts.h.mlock 2007-09-11 02:31:15.000000000 +0200
+++ ntp-4.2.4p4/ntpd/ntpd-opts.h 2007-10-25 14:58:10.000000000 +0200
@@ -82,12 +82,13 @@ typedef enum {
INDEX_OPT_VAR = 26,
INDEX_OPT_DVAR = 27,
INDEX_OPT_SLEW = 28,
- INDEX_OPT_VERSION = 29,
- INDEX_OPT_HELP = 30,
- INDEX_OPT_MORE_HELP = 31
+ INDEX_OPT_MLOCK = 29,
+ INDEX_OPT_VERSION = 30,
+ INDEX_OPT_HELP = 31,
+ INDEX_OPT_MORE_HELP = 32
} teOptIndex;
-#define OPTION_CT 32
+#define OPTION_CT 33
#define NTPD_VERSION "4.2.4p4"
#define NTPD_FULL_VERSION "ntpd - NTP daemon program - Ver. 4.2.4p4"
@@ -180,6 +181,10 @@ typedef enum {
# warning undefining MODIFYMMTIMER due to option name conflict
# undef MODIFYMMTIMER
# endif
+# ifdef MLOCK
+# warning undefining MLOCK due to option name conflict
+# undef MLOCK
+# endif
# ifdef NOFORK
# warning undefining NOFORK due to option name conflict
# undef NOFORK
@@ -249,6 +254,7 @@ typedef enum {
# undef LOGFILE
# undef NOVIRTUALIPS
# undef MODIFYMMTIMER
+# undef MLOCK
# undef NOFORK
# undef NICE
# undef PIDFILE
@@ -291,6 +297,7 @@ typedef enum {
#ifdef SYS_WINNT
#define VALUE_OPT_MODIFYMMTIMER 'M'
#endif /* SYS_WINNT */
+#define VALUE_OPT_MLOCK 'm'
#define VALUE_OPT_NOFORK 'n'
#define VALUE_OPT_NICE 'N'
#define VALUE_OPT_PIDFILE 'p'
ntp-4.2.4p4-multilisten.patch:
--- NEW FILE ntp-4.2.4p4-multilisten.patch ---
diff -up ntp-4.2.4p4/include/ntpd.h.multilisten ntp-4.2.4p4/include/ntpd.h
--- ntp-4.2.4p4/include/ntpd.h.multilisten 2006-12-28 13:03:06.000000000 +0100
+++ ntp-4.2.4p4/include/ntpd.h 2007-10-25 14:48:46.000000000 +0200
@@ -79,6 +79,8 @@ extern void enable_broadcast P((struct
extern void enable_multicast_if P((struct interface *, struct sockaddr_storage *));
extern void interface_dump P((struct interface *));
+extern void add_specific_interface P((const char *));
+extern void init_specific_interface P((void));
extern void interface_update P((interface_receiver_t, void *));
extern void init_io P((void));
extern void input_handler P((l_fp *));
diff -up ntp-4.2.4p4/ntpd/ntp_io.c.multilisten ntp-4.2.4p4/ntpd/ntp_io.c
--- ntp-4.2.4p4/ntpd/ntp_io.c.multilisten 2007-08-18 22:24:44.000000000 +0200
+++ ntp-4.2.4p4/ntpd/ntp_io.c 2007-10-25 14:48:46.000000000 +0200
@@ -66,7 +66,15 @@
#endif /* IPv6 Support */
extern int listen_to_virtual_ips;
-extern const char *specific_interface;
+
+/* interface names to listen on */
+struct specific_interface {
+ const char *name;
+ ISC_LINK(struct specific_interface) link;
+};
+
+ISC_LIST(struct specific_interface) specific_interface_list;
+
#if defined(SO_TIMESTAMP) && defined(SCM_TIMESTAMP)
#if defined(CMSG_FIRSTHDR)
@@ -924,14 +932,15 @@ address_okay(struct interface *iface) {
/*
* Check if the interface is specified
*/
- if (specific_interface != NULL) {
- if (strcasecmp(iface->name, specific_interface) == 0) {
- DPRINTF(4, ("address_okay: specific interface name matched - OK\n"));
- return (ISC_TRUE);
- } else {
- DPRINTF(4, ("address_okay: specific interface name NOT matched - FAIL\n"));
- return (ISC_FALSE);
- }
+ if (ISC_LIST_HEAD(specific_interface_list)) {
+ struct specific_interface *iface_;
+ for (iface_ = ISC_LIST_HEAD(specific_interface_list); iface_ != NULL; iface_ = ISC_LIST_NEXT(iface_, link))
+ if (strcasecmp(iface->name, iface_->name) == 0) {
+ DPRINTF(4, ("address_okay: specific interface name matched - OK\n"));
+ return (ISC_TRUE);
+ }
+ DPRINTF(4, ("address_okay: specific interface name NOT matched - FAIL\n"));
+ return (ISC_FALSE);
}
else {
if (listen_to_virtual_ips == 0 &&
@@ -1044,6 +1053,23 @@ refresh_interface(struct interface * int
#endif /* !OS_MISSES_SPECIFIC_ROUTE_UPDATES */
}
+void
+add_specific_interface (const char *if_name)
+{
+ struct specific_interface *iface;
+
+ iface = (struct specific_interface *)emalloc(sizeof(struct specific_interface));
+ iface->name = if_name;
+ ISC_LINK_INIT(iface, link);
+ ISC_LIST_APPEND(specific_interface_list, iface, link);
+}
+
+void
+init_specific_interface (void)
+{
+ ISC_LIST_INIT(specific_interface_list);
+}
+
/*
* interface_update - externally callable update function
*/
diff -up ntp-4.2.4p4/ntpd/cmd_args.c.multilisten ntp-4.2.4p4/ntpd/cmd_args.c
--- ntp-4.2.4p4/ntpd/cmd_args.c.multilisten 2007-08-18 22:24:43.000000000 +0200
+++ ntp-4.2.4p4/ntpd/cmd_args.c 2007-10-25 14:50:44.000000000 +0200
@@ -22,7 +22,6 @@
* Definitions of things either imported from or exported to outside
*/
extern char const *progname;
-extern const char *specific_interface;
extern short default_ai_family;
#ifdef HAVE_NETINFO
diff -up ntp-4.2.4p4/ntpd/ntpd.c.multilisten ntp-4.2.4p4/ntpd/ntpd.c
--- ntp-4.2.4p4/ntpd/ntpd.c.multilisten 2007-10-25 14:48:46.000000000 +0200
+++ ntp-4.2.4p4/ntpd/ntpd.c 2007-10-25 14:48:46.000000000 +0200
@@ -156,7 +156,6 @@ volatile int debug = 0; /* No debugging
#endif
int listen_to_virtual_ips = 1;
-const char *specific_interface = NULL; /* interface name or IP address to bind to */
/*
* No-fork flag. If set, we do not become a background daemon.
@@ -537,18 +536,14 @@ ntpdmain(
if (HAVE_OPT( NOVIRTUALIPS ))
listen_to_virtual_ips = 0;
+ init_specific_interface();
+
if (HAVE_OPT( INTERFACE )) {
-#if 0
int ifacect = STACKCT_OPT( INTERFACE );
- char** ifaces = STACKLST_OPT( INTERFACE );
+ const char** ifaces = STACKLST_OPT( INTERFACE );
- /* malloc space for the array of names */
- while (ifacect-- > 0) {
- next_iface = *ifaces++;
- }
-#else
- specific_interface = OPT_ARG( INTERFACE );
-#endif
+ while (ifacect-- > 0)
+ add_specific_interface(*ifaces++);
}
if (HAVE_OPT( NICE ))
Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/ntp/devel/.cvsignore,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- .cvsignore 21 Jun 2007 10:29:24 -0000 1.25
+++ .cvsignore 26 Oct 2007 13:27:54 -0000 1.26
@@ -1,2 +1,2 @@
ntpstat-0.2.tgz
-ntp-4.2.4p2.tar.gz
+ntp-4.2.4p4.tar.gz
ntp-4.2.4-htmldoc.patch:
Index: ntp-4.2.4-htmldoc.patch
===================================================================
RCS file: /cvs/pkgs/rpms/ntp/devel/ntp-4.2.4-htmldoc.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ntp-4.2.4-htmldoc.patch 24 Jul 2007 12:08:12 -0000 1.3
+++ ntp-4.2.4-htmldoc.patch 26 Oct 2007 13:27:54 -0000 1.4
@@ -91,15 +91,18 @@
<dt><tt>-b</tt>
<dd>Force the time to be stepped using the settimeofday() system call, rather than slewed (default) using the adjtime() system call. This option should be used when called from a startup file at boot time.
<dt><tt>-d</tt>
-@@ -43,7 +43,7 @@
+@@ -43,9 +43,9 @@
<dt><tt>-e <i>authdelay</i></tt>
<dd>Specify the processing delay to perform an authentication function as the value <i>authdelay</i>, in seconds and fraction (see <tt>ntpd</tt> for details). This number is usually small enough to be negligible for most purposes, though specifying a value may improve timekeeping on very slow CPU's.
<dt><tt>-k <i>keyfile</i></tt>
- <dd>Specify the path for the authentication key file as the string <i>keyfile</i>. The default is <tt>/etc/ntp.keys</tt>. This file should be in the format described in <tt>ntpd</tt>.
+ <dd>Specify the path for the authentication key file as the string <i>keyfile</i>. The default is <tt>/etc/ntp/keys</tt>. This file should be in the format described in <tt>ntpd</tt>.
<dt><tt>-o <i>version</i></tt>
- <dd>Specify the NTP version for outgoing packets as the integer <i>version</i>, which can be 1 or 2. The default is 3. This allows <tt>ntpdate</tt> to be used with older NTP versions.
+- <dd>Specify the NTP version for outgoing packets as the integer <i>version</i>, which can be 1 or 2. The default is 3. This allows <tt>ntpdate</tt> to be used with older NTP versions.
++ <dd>Specify the NTP version for outgoing packets as the integer <i>version</i>, which can be 1 or 2. The default is 4. This allows <tt>ntpdate</tt> to be used with older NTP versions.
<dt><tt>-p <i>samples</i></tt>
+ <dd>Specify the number of samples to be acquired from each server as the integer <i>samples</i>, with values from 1 to 8 inclusive. The default is 4.
+ <dt><i><tt>-q</tt></i>
@@ -55,7 +55,7 @@
<dt><tt>-t <i>timeout</i></tt>
<dd>Specify the maximum time waiting for a server response as the value <i>timeout</i>, in seconds and fraction. The value is is rounded to a multiple of 0.2 seconds. The default is 1 second, a value suitable for polling across a LAN.
Index: ntp.spec
===================================================================
RCS file: /cvs/pkgs/rpms/ntp/devel/ntp.spec,v
retrieving revision 1.73
retrieving revision 1.74
diff -u -r1.73 -r1.74
--- ntp.spec 24 Sep 2007 14:33:43 -0000 1.73
+++ ntp.spec 26 Oct 2007 13:27:54 -0000 1.74
@@ -1,21 +1,32 @@
Summary: Synchronizes system time using the Network Time Protocol (NTP)
Name: ntp
-Version: 4.2.4p2
-Release: 6%{?dist}
+Version: 4.2.4p4
+Release: 1%{?dist}
# primary license (COPYRIGHT) : MIT
# ElectricFence/ (not used) : GPLv2
-# include/ntif.h : BSD
-# include/rsa_md5.h : BSD with advertising
-# libntp/md5c.c : BSD with advertising
-# libntp/adjtimex.c : BSD
+# kernel/sys/ppsclock.h (not used) : BSD with advertising
+# include/ntif.h (not used) : BSD
+# include/rsa_md5.h (replaced) : BSD with advertising
+# include/ntp_rfc2553.h (replaced) : BSD with advertising
+# libisc/inet_aton.c (not used) : BSD with advertising
+# libntp/md5c.c (replaced) : BSD with advertising
+# libntp/mktime.c (replaced) : BSD with advertising
+# libntp/ntp_random.c (replaced) : BSD with advertising
+# libntp/memmove.c (replaced) : BSD with advertising
+# libntp/ntp_rfc2553.c (replaced) : BSD with advertising
+# libntp/adjtimex.c (not used) : BSD
# libopts/ : BSD or GPLv2+
# libparse/ : BSD
# ntpd/refclock_jjy.c: MIT
-# ntpd/refclock_oncore.c: BEERWARE License (aka, Public Domain)
+# ntpd/refclock_oncore.c : BEERWARE License (aka, Public Domain)
+# ntpd/refclock_palisade.c : BSD with advertising
+# ntpd/refclock_jupiter.c : BSD with advertising
+# ntpd/refclock_mx4200.c : BSD with advertising
+# ntpd/refclock_palisade.h : BSD with advertising
# ntpstat-0.2/ : GPLv2
# util/ansi2knr.c (not used) : GPL+
# sntp/ (not packaged) : MSNTP
-License: (MIT and BSD and BSD with advertising) and GPLv2
+License: (MIT and BSD and BSD with advertising) and (MIT and BSD) and GPLv2
Group: System Environment/Daemons
Source0: http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-%{version}.tar.gz
Source1: ntp.conf
@@ -32,17 +43,17 @@
Patch5: ntp-4.2.4-linkfastmath.patch
Patch6: ntp-4.2.4p2-tentative.patch
Patch7: ntp-4.2.4p2-noseed.patch
-Patch8: ntp-4.2.4p2-multilisten.patch
+Patch8: ntp-4.2.4p4-multilisten.patch
Patch9: ntp-4.2.4-html2man.patch
Patch10: ntp-4.2.4-htmldoc.patch
Patch11: ntp-4.2.4p2-filegen.patch
Patch12: ntp-4.2.4-sprintf.patch
-Patch13: ntp-4.2.4p2-loopback.patch
-Patch14: ntp-4.2.4p2-mlock.patch
+Patch13: ntp-4.2.4p4-bsdadv.patch
+Patch14: ntp-4.2.4p4-mlock.patch
Patch15: ntp-4.2.4p2-clockselect.patch
Patch16: ntp-4.2.4p2-nosntp.patch
Patch17: ntp-4.2.4p0-sleep.patch
-Patch18: ntp-4.2.4p0-bcast.patch
+Patch18: ntp-4.2.4p4-bcast.patch
Patch19: ntp-4.2.4p0-retcode.patch
Patch20: ntp-4.2.4p2-noif.patch
@@ -81,7 +92,6 @@
%patch10 -p1 -b .htmldoc
%patch11 -p1 -b .filegen
%patch12 -p1 -b .sprintf
-%patch13 -p1 -b .loopback
%patch14 -p1 -b .mlock
%patch15 -p1 -b .clockselect
%patch16 -p1 -b .nosntp
@@ -94,6 +104,14 @@
%patch5 -p1 -b .linkfastmath
%endif
+# replace some BSD with advertising code
+for f in include/{ntp_rfc2553,rsa_md5}.h \
+ libntp/{mktime,memmove,md5c,ntp_rfc2553,ntp_random}.c
+do rm -f $f; touch $f; done
+ln -sf md5.h include/rsa_md5.h
+ln -sf md5.c libntp/md5c.c
+%patch13 -p1 -b .bsdadv
+
%build
export CFLAGS="$RPM_OPT_FLAGS"
if echo 'int main () { return 0; }' | gcc -pie -fPIE -O2 -xc - -o pietest 2>/dev/null; then
@@ -105,7 +123,7 @@
--with-openssl-libdir=%{_libdir} \
--enable-all-clocks --enable-parse-clocks \
--enable-linuxcaps
-echo '#define KEYFILE "%{_sysconfdir}/ntp/keys"' >> config.h
+echo '#define KEYFILE "%{_sysconfdir}/ntp/keys"' >> ntpdate/ntpdate.h
echo '#define NTP_VAR "%{_localstatedir}/log/ntpstats/"' >> config.h
make %{?_smp_mflags}
@@ -210,6 +228,12 @@
%changelog
+* Fri Oct 26 2007 Miroslav Lichvar <mlichvar at redhat.com> 4.2.4p4-1
+- update to 4.2.4p4
+- fix default NTP version for outgoing packets in ntpdate man page
+ (#245408)
+- replace BSD with advertising code in ntpdc and ntpq
+
* Mon Sep 24 2007 Miroslav Lichvar <mlichvar at redhat.com> 4.2.4p2-6
- require perl (#274771)
- don't fail when starting with no interfaces (#300371)
Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/ntp/devel/sources,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- sources 21 Jun 2007 10:29:24 -0000 1.26
+++ sources 26 Oct 2007 13:27:54 -0000 1.27
@@ -1,2 +1,2 @@
6b2bedefe2e7c63ea52609b222022121 ntpstat-0.2.tgz
-315a76da63715fd43b6349411fbb0b25 ntp-4.2.4p2.tar.gz
+fcb32a01e1ae3f9ed5bac86b12c7a1cc ntp-4.2.4p4.tar.gz
--- ntp-4.2.4p0-bcast.patch DELETED ---
--- ntp-4.2.4p2-loopback.patch DELETED ---
--- ntp-4.2.4p2-mlock.patch DELETED ---
--- ntp-4.2.4p2-multilisten.patch DELETED ---
More information about the fedora-extras-commits
mailing list