]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
ntpq-subs.c:
authorDave Hart <hart@ntp.org>
Thu, 25 Mar 2010 16:12:20 +0000 (16:12 +0000)
committerDave Hart <hart@ntp.org>
Thu, 25 Mar 2010 16:12:20 +0000 (16:12 +0000)
  Add ntpq "mrulist limited" and "mrulist kod" support, equivalent to
    ntpq -c "mrulist resany=0x20" and ntpq -c "mrulist resany=0x400"
    respectively.
  Add "r" rate limiting column to mrulist output containing a period,
    or K for KoD sent in response to last packet, or L for no response
    to last packet due to rate limiting.  These are redundant with bits
    0x400 and 0x20 in the rstr column and treated differently than other
    restrict bits, reflecting not if the restriction bit is enabled for
    the remote address, but if RES_KOD or RES_LIMITED handling was
    triggered by the last packet from them.
    it.
ntp.h, ntpdc_ops.c, ntp_proto.c, ntp_config.c:
  rename RES_TIMEOUT to RES_FLAKE to reflect v4 use (as a flakeway which
    drops 10% of incoming packets from matching addresses).
ntp_intres.c:
  rename RES_TIMEOUT to RES_FLAKE to reflect v4 use (as a flakeway which
    drops 10% of incoming packets from matching addresses), eliminating
    conflict with RES_TIMEOUT provided by some systems DNS headers.

bk: 4bab8b64gZ0D42JzVbbuJCDOxIdD-A

include/ntp.h
ntpd/ntp_config.c
ntpd/ntp_intres.c
ntpd/ntp_proto.c
ntpdc/ntpdc_ops.c
ntpq/ntpq-subs.c

index ecf20da983cf9a1de6ed625c282dc8a94e86cc31..8f9b39fa9badfdffa9185d91c603d98d7bff7548 100644 (file)
@@ -831,12 +831,12 @@ struct restrict_u_tag {
 
 #define RES_KOD                        0x0400  /* send kiss of death packet */
 #define        RES_MSSNTP              0x0800  /* enable MS-SNTP authentication */
-#define RES_TIMEOUT            0x1000  /* timeout this entry */
+#define RES_FLAKE              0x1000  /* flakeway - drop 10% */
 
 #define        RES_ALLFLAGS            (RES_FLAGS | RES_NOQUERY |      \
                                 RES_NOMODIFY | RES_NOTRAP |    \
                                 RES_LPTRAP | RES_KOD |         \
-                                RES_MSSNTP | RES_TIMEOUT)
+                                RES_MSSNTP | RES_FLAKE)
 
 /*
  * Match flags
index 4e30e4e4d65c3f994bc38561e62d63792ae8b7c8..7a56ce1d1e09eb85d5aa55c6a9e049fc16dceb44 100644 (file)
@@ -2262,7 +2262,7 @@ config_access(
                                break;
 
                        case T_Flake:
-                               flags |= RES_TIMEOUT;
+                               flags |= RES_FLAKE;
                                break;
 
                        case T_Ignore:
index 30990abbca0e8ad7342c2a1859f605f8ccfe7124..b1808cce93dc6c6e700539224c4a2a8386e5645e 100644 (file)
@@ -81,9 +81,6 @@
 #  include <netdb.h>
 # endif
 # include <resolv.h>
-# ifdef RES_TIMEOUT
-#  undef RES_TIMEOUT   /* resolv.h has one, we want ours */
-# endif
 # ifdef HAVE_INT32_ONLY_WITH_DNS
 #  define HAVE_INT32
 # endif
index c129b285dd269affb8591bddd480f1f7db8c0e04..78951bb69c8aae641877f9d227449dc3387b2e9d 100644 (file)
@@ -416,7 +416,7 @@ receive(
         * This is for testing. If restricted drop ten percent of
         * surviving packets.
         */
-       if (restrict_mask & RES_TIMEOUT) {
+       if (restrict_mask & RES_FLAKE) {
                if ((double)ntp_random() / 0x7fffffff < .1) {
                        sys_restricted++;
                        return;                 /* no flakeway */
index 242d455cf85a05112b34b1967f91fa298788d371..280753aa6c1e6e08014f1f1458b3dc980af8e4e5 100644 (file)
@@ -1672,7 +1672,7 @@ static struct resflags resflagsV3[] = {
        { "limited",    RES_LIMITED },
        { "version",    RES_VERSION },
        { "kod",        RES_KOD },
-       { "timeout",    RES_TIMEOUT },
+       { "flake",      RES_FLAKE },
 
        { "",           0 }
 };
index 072db0c433ad9b637e2745638167d4c61a575640..2df0e4f94554ece556f4065f724cd1a37ffadb12 100644 (file)
@@ -2761,6 +2761,7 @@ mrulist(
        mru_sort_order order;
        const char * const *ppkeyword;
        char parms_buf[128];
+       char buf[24];
        char *parms;
        char *arg;
        size_t cb;
@@ -2808,6 +2809,20 @@ mrulist(
                                    COUNTOF(mru_sort_keywords))
                                        order = ppkeyword -
                                                mru_sort_keywords;
+                       } else if (!strcmp("limited", arg) ||
+                                  !strcmp("kod", arg)) {
+                               /* transform to resany=... */
+                               snprintf(buf, sizeof(buf),
+                                        ", resany=0x%x",
+                                        ('k' == arg[0])
+                                            ? RES_KOD
+                                            : RES_LIMITED);
+                               cb = 1 + strlen(buf);
+                               if (parms + cb <
+                                       parms_buf + sizeof(parms_buf)) {
+                                       memcpy(parms, buf, cb);
+                                       parms += cb - 1;
+                               }
                        } else
                                fprintf(stderr,
                                        "ignoring unrecognized mrulist parameter: %s\n",
@@ -2845,7 +2860,7 @@ mrulist(
                qsort(sorted, mru_count, sizeof(sorted[0]),
                      mru_qcmp_table[order]);
 
-       printf( "lstint avgint rstr m v  count rport remote address\n"
+       printf( "lstint avgint rstr m v  count rport remote address\n"
                "==============================================================================\n");
                /* '=' x 78 */
        for (ppentry = sorted; ppentry < sorted + mru_count; ppentry++) {
@@ -2859,10 +2874,15 @@ mrulist(
                LFPTOD(&interval, favgint);
                favgint /= recent->count;
                avgint = (int)(favgint + 0.5);
-               fprintf(fp, "%6d %6d %4hx %d %d %6d %5hu %s\n",
-                       lstint, avgint, recent->rs, (int)recent->mode,
-                       (int)recent->ver, recent->count,
-                       SRCPORT(&recent->addr),
+               fprintf(fp, "%6d %6d %4hx %c %d %d %6d %5hu %s\n",
+                       lstint, avgint, recent->rs,
+                       (RES_KOD & recent->rs)
+                           ? 'K'
+                           : (RES_LIMITED & recent->rs)
+                                 ? 'L'
+                                 : '.',
+                       (int)recent->mode, (int)recent->ver,
+                       recent->count, SRCPORT(&recent->addr),
                        nntohost(&recent->addr));
                if (showhostnames)
                        fflush(fp);