]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
Lose FLAG_FIXPOLL, from Dave Mills
authorHarlan Stenn <stenn@ntp.org>
Fri, 29 May 2009 07:50:53 +0000 (03:50 -0400)
committerHarlan Stenn <stenn@ntp.org>
Fri, 29 May 2009 07:50:53 +0000 (03:50 -0400)
bk: 4a1f93ddkVCRctywwRjhLbyILGPwLA

ChangeLog
include/ntp.h
ntpd/ntp_config.c
ntpd/ntp_peer.c
ntpd/ntp_proto.c
ntpd/ntp_refclock.c
ntpd/refclock_acts.c

index d9818af098195fbfffa045b3434a805b91230f83..c5c3e2424c7147d5ab3418d0af76375a06a566ae 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,4 @@
+* Lose FLAG_FIXPOLL, from Dave Mills.
 (4.2.5p179) 2009/05/23 Released by Harlan Stenn <stenn@ntp.org>
 * [Bug 1041] xmt -> aorg timestamp cleanup from Dave Mills,
   reported by Dave Hart.
index 333a1d2163762dc9f709b53b7aa6d0da76b0f8a6..f845b3c43317af730c0cc9fe9881896b363703ae 100644 (file)
@@ -438,7 +438,7 @@ struct peer {
 #define        FLAG_SYSPEER    0x0010  /* system peer */
 #define FLAG_PREFER    0x0020  /* prefer peer */
 #define FLAG_BURST     0x0040  /* burst mode */
-#define FLAG_FIXPOLL   0x0080  /* stick at minpoll */
+#define FLAG_PPS       0x0080  /* steered by PPS */
 #define FLAG_IBURST    0x0100  /* initial burst mode */
 #define FLAG_NOSELECT  0x0200  /* never select */
 #define FLAG_TRUE      0x0400  /* force truechimer */
@@ -446,11 +446,10 @@ struct peer {
 #define        FLAG_XLEAVE     0x1000  /* interleaved protocol */
 #define        FLAG_XB         0x2000  /* interleaved broadcast */
 #define        FLAG_XBOGUS     0x4000  /* interleaved bogus packet */
-#define        FLAG_PPS        0x8000  /* steered by PPS */
 #ifdef OPENSSL
-#define FLAG_ASSOC     0x10000 /* autokey request */
+#define FLAG_ASSOC     0x8000  /* autokey request */
 #endif /* OPENSSL */
-#define FLAG_ADKEY      0x00010000      /* Authenticated (or wants reply to be authenticated) using AD authentication */
+#define FLAG_ADKEY      0x10000      /* Authenticated (or wants reply to be authenticated) using AD authentication */
 
 /*
  * Definitions for the clear() routine.  We use memset() to clear
index 8935a11c571f092e5624cfa0479d96b59a3aa4ae..5be1e3af5a7d30805fbb2e9e3cf4c21fa25ac2bf 100644 (file)
@@ -562,8 +562,8 @@ create_peer_node(
        my_node = get_node(sizeof *my_node);
 
        /* Initialze node values to default */
-       my_node->minpoll = NTP_MINDPOLL;
-       my_node->maxpoll = NTP_MAXDPOLL;
+       my_node->minpoll = 0;
+       my_node->maxpoll = 0;
        my_node->ttl = 0;
        my_node->peerversion = NTP_VERSION;
        my_node->peerkey = 0;
index 039bf4dbf4d1f9ea73a92264eca6756bda149510..3ee2911f7e649cd04c59ebd4cc84d6915b3fda49 100644 (file)
@@ -817,9 +817,25 @@ newpeer(
            cast_flags));
        peer->hmode = (u_char)hmode;
        peer->version = (u_char)version;
-       peer->minpoll = (u_char)max(ntp_minpoll, minpoll);
-       peer->maxpoll = (u_char)min(NTP_MAXPOLL, maxpoll);
        peer->flags = flags;
+
+       /*
+        * It is an error to set minpoll less than NTP_MINPOLL or to
+        * set maxpoll greater than NTP_MAXPOLL. However, minpoll is
+        * clamped not greater than NTP_MAXPOLL and maxpoll is clamped
+        * not less than NTP_MINPOLL without complaint. Finally,
+        * minpoll is clamped not greater than maxpoll.
+        */
+       if (minpoll == 0)
+               peer->minpoll = NTP_MINDPOLL;
+       else
+               peer->minpoll = min(minpoll, NTP_MAXPOLL);
+       if (maxpoll == 0)
+               peer->maxpoll = NTP_MAXDPOLL;
+       else
+               peer->maxpoll = max(maxpoll, NTP_MINPOLL);
+       if (peer->minpoll > peer->maxpoll)
+               peer->minpoll = peer->maxpoll;
 #ifdef DEBUG
        if (debug > 2) {
                if (peer->dstadr)
@@ -879,12 +895,13 @@ newpeer(
                 * the peer timer, since the clock may have requirements
                 * for this.
                 */
+               if (maxpoll == 0)
+                       peer->maxpoll = peer->minpoll;
                if (!refclock_newpeer(peer)) {
                        /*
                         * Dump it, something screwed up
                         */
                        set_peerdstadr(peer, NULL);
-       
                        peer->next = peer_free;
                        peer_free = peer;
                        peer_free_count++;
index 9930d2b3166c6d3dd665a5bd733c1b296f8ce2ca..5bd5853ee76c300dc029f2a8bf9494f820eca432 100644 (file)
@@ -1807,8 +1807,7 @@ poll_update(
         * works for any association. Otherwise, clamp the poll interval
         * between minpoll and maxpoll.
         */
-       if ((peer->flags & FLAG_FIXPOLL) || (peer->cast_flags &
-           MDF_BCLNT))
+       if (peer->cast_flags & MDF_BCLNT)
                hpoll = peer->minpoll;
        else
                hpoll = max(min(peer->maxpoll, mpoll), peer->minpoll);
index 9ab311c0e282a7ad3e229610032f2f3c40776628..298e3a1940979fb0659cd25b7b306dd808cc6c14 100644 (file)
@@ -214,7 +214,7 @@ refclock_newpeer(
         */
        peer->refclktype = clktype;
        peer->refclkunit = (u_char)unit;
-       peer->flags |= FLAG_REFCLOCK | FLAG_FIXPOLL;
+       peer->flags |= FLAG_REFCLOCK;
        peer->leap = LEAP_NOTINSYNC;
        peer->stratum = STRATUM_REFCLOCK;
        peer->ppoll = peer->maxpoll;
index d463ea21c40f24056cc4d2c9a333c33c7fc08ea8..058abfd6428dd4266a2f91844f57f6cabc2fdf48 100644 (file)
@@ -268,7 +268,6 @@ acts_start (
        pp->clockdesc = DESCRIPTION;
        memcpy((char *)&pp->refid, REFID, 4);
        peer->sstclktype = CTL_SST_TS_TELEPHONE;
-       peer->flags &= ~FLAG_FIXPOLL;
        up->bufptr = pp->a_lastcode;
        return (1);
 }