projects
/
collectd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
curl_json plugin: fix indentation
[collectd.git]
/
src
/
ntpd.c
diff --git
a/src/ntpd.c
b/src/ntpd.c
index
1071d0b
..
f8f4f04
100644
(file)
--- a/
src/ntpd.c
+++ b/
src/ntpd.c
@@
-51,6
+51,10
@@
# include <poll.h>
#endif
# include <poll.h>
#endif
+#ifndef STA_NANO
+# define STA_NANO 0x2000
+#endif
+
static const char *config_keys[] =
{
"Host",
static const char *config_keys[] =
{
"Host",
@@
-505,7
+509,7
@@
static int ntpd_receive_response (int *res_items, int *res_size,
break;
}
break;
}
- memset (
(void *)
&res, '\0', sizeof (res));
+ memset (&res, '\0', sizeof (res));
status = recv (sd, (void *) &res, sizeof (res), 0 /* no flags */);
if ((status < 0) && ((errno == EAGAIN) || (errno == EINTR)))
status = recv (sd, (void *) &res, sizeof (res), 0 /* no flags */);
if ((status < 0) && ((errno == EAGAIN) || (errno == EINTR)))
@@
-720,7
+724,7
@@
static int ntpd_send_request (int req_code, int req_items, int req_size, char *r
if ((sd = ntpd_connect ()) < 0)
return (-1);
if ((sd = ntpd_connect ()) < 0)
return (-1);
- memset (
(void *)
&req, '\0', sizeof (req));
+ memset (&req, '\0', sizeof (req));
req.rm_vn_mode = RM_VN_MODE(0, 0, 0);
req.auth_seq = AUTH_SEQ (0, 0);
req.implementation = IMPL_XNTPD;
req.rm_vn_mode = RM_VN_MODE(0, 0, 0);
req.auth_seq = AUTH_SEQ (0, 0);
req.implementation = IMPL_XNTPD;
@@
-910,8
+914,7
@@
static int ntpd_read (void)
int i;
/* On Linux, if the STA_NANO bit is set in ik->status, then ik->offset
int i;
/* On Linux, if the STA_NANO bit is set in ik->status, then ik->offset
- * is is nanoseconds, otherwise it's microseconds.
- * TODO(octo): STA_NANO is defined in the Linux specific <sys/timex.h> header. */
+ * is is nanoseconds, otherwise it's microseconds. */
double scale_loop = 1e-6;
double scale_error = 1e-6;
double scale_loop = 1e-6;
double scale_error = 1e-6;
@@
-936,6
+939,11
@@
static int ntpd_read (void)
return (-1);
}
return (-1);
}
+ if (ntohs(ik->status) & STA_NANO) {
+ scale_loop = 1e-9;
+ scale_error = 1e-9;
+ }
+
/* kerninfo -> estimated error */
offset_loop = scale_loop * ((gauge_t) ntohl (ik->offset));
freq_loop = ntpd_read_fp (ik->freq);
/* kerninfo -> estimated error */
offset_loop = scale_loop * ((gauge_t) ntohl (ik->offset));
freq_loop = ntpd_read_fp (ik->freq);