]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
[Bug 3619] Honour drefid setting in cooked mode and sysinfo
authorJuergen Perlinger <perlinger@ntp.org>
Thu, 10 Oct 2019 13:13:25 +0000 (15:13 +0200)
committerJuergen Perlinger <perlinger@ntp.org>
Thu, 10 Oct 2019 13:13:25 +0000 (15:13 +0200)
bk: 5d9f2e75wx87OArm7L77ISir7gJVcA

ChangeLog
ntpq/ntpq-subs.c
ntpq/ntpq.c
ntpq/ntpq.h

index dab3e21b5f93b0c7fcacc1117707287fd0248283..d5a490cdc6287526ad2eaa4dbfbf1c699ec5d712 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,8 @@
 
 * [Sec 3610] process_control() should bail earlier on short packets. stenn@
   - Reported by Philippe Antoine
+* [Bug 3619] Honour drefid setting in cooked mode and sysinfo <perlinger@ntp.org>
+  - applied patch by Gerry Garvey
 * [Bug 3615] accelerate refclock startup <perlinger@ntp.org>
 * [Bug 3613] Propagate noselect to mobilized pool servers <stenn@ntp.org>
   - Reported by Martin Burnicki
index 406710bdf0f8f9ca665dfaa8cf376205486ef5f4..ecb1428bca4b427d59ae851036945e22ec32ed57 100644 (file)
@@ -3746,6 +3746,7 @@ collect_display_vdc(
        int match;
        u_long ul;
        int vtype;
+       sockaddr_u sau;
 
        ZERO(vl);
        for (pvdc = table; pvdc->tag != NULL; pvdc++) {
@@ -3806,6 +3807,7 @@ collect_display_vdc(
                                }
                        }
                        /* fallthru */
+               case NTP_REFID: /* fallthru */
                case NTP_MODE:  /* fallthru */
                case NTP_2BIT:
                        pvdc->v.str = estrdup(val);
@@ -3880,6 +3882,21 @@ collect_display_vdc(
                                leapbits[ul & 0x3]);
                        break;
 
+               case NTP_REFID:
+                       if (!decodenetnum(pvdc->v.str, &sau)) {
+                               fprintf(fp, "%s  %s\n", pvdc->display,    /* Text fmt */
+                                       pvdc->v.str);
+                       } else if (drefid == REFID_IPV4) {
+                               fprintf(fp, "%s  %s\n", pvdc->display,    /* IPv4 fmt */
+                                       stoa(&sau));
+                       } else {
+                               fprintf (fp, "%s  0x%08x\n", pvdc->display,        /* Hex / hash */
+                                        ntohl(addr2refid(&sau)));
+                       }
+                       free(pvdc->v.str);
+                       pvdc->v.str = NULL;
+                       break;
+
                default:
                        xprintf(stderr, "unexpected vdc type %d for %s\n",
                                pvdc->type, pvdc->tag);
@@ -3939,7 +3956,7 @@ sysinfo(
        VDC_INIT("precision",           "log2 precision:   ", NTP_STR),
        VDC_INIT("rootdelay",           "root delay:       ", NTP_STR),
        VDC_INIT("rootdisp",            "root dispersion:  ", NTP_STR),
-       VDC_INIT("refid",               "reference ID:     ", NTP_STR),
+       VDC_INIT("refid",               "reference ID:     ", NTP_REFID),
        VDC_INIT("reftime",             "reference time:   ", NTP_LFP),
        VDC_INIT("sys_jitter",          "system jitter:    ", NTP_STR),
        VDC_INIT("clk_jitter",          "clock jitter:     ", NTP_STR),
index 0bf849864fc59c6bfcf542e0506aff597132056c..0382c0f948d7d3487b91725d179e6920ea942a8a 100644 (file)
@@ -3675,11 +3675,18 @@ cookedprint(
                                                refid_buf[i] = (isprint(str[i]) ? str[i] : '?');
                                        refid_buf[i] = 0; /* Null terminator */
                                        output(fp, name, refid_buf);
-                               } else if (ISREFCLOCKADR(&hval))
-                                       output(fp, name,
-                                              refnumtoa(&hval));
-                               else
-                                       output(fp, name, stoa(&hval));
+                               } else if (ISREFCLOCKADR(&hval)) {
+                                       output(fp, name, refnumtoa(&hval));
+                               } else {
+                                       if (drefid == REFID_IPV4) {
+                                               output(fp, name, stoa(&hval));
+                                       } else {
+                                               char refid_buf[12];
+                                               snprintf (refid_buf, sizeof(refid_buf), 
+                                                         "0x%08x", ntohl(addr2refid(&hval)));
+                                               output(fp, name, refid_buf);
+                                       }
+                               }
                        } else if (strlen(value) <= 4) {
                                output(fp, name, value);
                        } else {
index 1f0291531d9902a880150978d1ace5e4c402de33..53f76387ace09012dc5e79a54202112118b2411f 100644 (file)
@@ -64,6 +64,7 @@
 #define NTP_LFP                0x7     /* NTP timestamp */
 #define NTP_MODE       0x8     /* peer mode */
 #define NTP_2BIT       0x9     /* leap bits */
+#define NTP_REFID      0xA     /* RefID */
 
 /*
  * Arguments are returned in a union