cmdmon: add timestamp counters to ntpdata report
This commit is contained in:
parent
8d19f49341
commit
eb26d13140
7 changed files with 49 additions and 7 deletions
9
candm.h
9
candm.h
|
@ -540,7 +540,8 @@ typedef struct {
|
|||
#define RPY_SELECT_DATA 23
|
||||
#define RPY_SERVER_STATS3 24
|
||||
#define RPY_SERVER_STATS4 25
|
||||
#define N_REPLY_TYPES 26
|
||||
#define RPY_NTP_DATA2 26
|
||||
#define N_REPLY_TYPES 27
|
||||
|
||||
/* Status codes */
|
||||
#define STT_SUCCESS 0
|
||||
|
@ -763,7 +764,11 @@ typedef struct {
|
|||
uint32_t total_rx_count;
|
||||
uint32_t total_valid_count;
|
||||
uint32_t total_good_count;
|
||||
uint32_t reserved[3];
|
||||
uint32_t total_kernel_tx_ts;
|
||||
uint32_t total_kernel_rx_ts;
|
||||
uint32_t total_hw_tx_ts;
|
||||
uint32_t total_hw_rx_ts;
|
||||
uint32_t reserved[4];
|
||||
int32_t EOR;
|
||||
} RPY_NTPData;
|
||||
|
||||
|
|
12
client.c
12
client.c
|
@ -2331,7 +2331,7 @@ process_cmd_ntpdata(char *line)
|
|||
|
||||
request.command = htons(REQ_NTP_DATA);
|
||||
UTI_IPHostToNetwork(&remote_addr, &request.data.ntp_data.ip_addr);
|
||||
if (!request_reply(&request, &reply, RPY_NTP_DATA, 0))
|
||||
if (!request_reply(&request, &reply, RPY_NTP_DATA2, 0))
|
||||
return 0;
|
||||
|
||||
UTI_IPNetworkToHost(&reply.data.ntp_data.remote_addr, &remote_addr);
|
||||
|
@ -2367,7 +2367,11 @@ process_cmd_ntpdata(char *line)
|
|||
"Total TX : %U\n"
|
||||
"Total RX : %U\n"
|
||||
"Total valid RX : %U\n"
|
||||
"Total good RX : %U\n",
|
||||
"Total good RX : %U\n"
|
||||
"Total kernel TX : %U\n"
|
||||
"Total kernel RX : %U\n"
|
||||
"Total HW TX : %U\n"
|
||||
"Total HW RX : %U\n",
|
||||
UTI_IPToString(&remote_addr), UTI_IPToRefid(&remote_addr),
|
||||
ntohs(reply.data.ntp_data.remote_port),
|
||||
UTI_IPToString(&local_addr), UTI_IPToRefid(&local_addr),
|
||||
|
@ -2395,6 +2399,10 @@ process_cmd_ntpdata(char *line)
|
|||
ntohl(reply.data.ntp_data.total_rx_count),
|
||||
ntohl(reply.data.ntp_data.total_valid_count),
|
||||
ntohl(reply.data.ntp_data.total_good_count),
|
||||
ntohl(reply.data.ntp_data.total_kernel_tx_ts),
|
||||
ntohl(reply.data.ntp_data.total_kernel_rx_ts),
|
||||
ntohl(reply.data.ntp_data.total_hw_tx_ts),
|
||||
ntohl(reply.data.ntp_data.total_hw_rx_ts),
|
||||
REPORT_END);
|
||||
}
|
||||
|
||||
|
|
6
cmdmon.c
6
cmdmon.c
|
@ -1230,7 +1230,7 @@ handle_ntp_data(CMD_Request *rx_message, CMD_Reply *tx_message)
|
|||
return;
|
||||
}
|
||||
|
||||
tx_message->reply = htons(RPY_NTP_DATA);
|
||||
tx_message->reply = htons(RPY_NTP_DATA2);
|
||||
UTI_IPHostToNetwork(&report.remote_addr, &tx_message->data.ntp_data.remote_addr);
|
||||
UTI_IPHostToNetwork(&report.local_addr, &tx_message->data.ntp_data.local_addr);
|
||||
tx_message->data.ntp_data.remote_port = htons(report.remote_port);
|
||||
|
@ -1258,6 +1258,10 @@ handle_ntp_data(CMD_Request *rx_message, CMD_Reply *tx_message)
|
|||
tx_message->data.ntp_data.total_rx_count = htonl(report.total_rx_count);
|
||||
tx_message->data.ntp_data.total_valid_count = htonl(report.total_valid_count);
|
||||
tx_message->data.ntp_data.total_good_count = htonl(report.total_good_count);
|
||||
tx_message->data.ntp_data.total_kernel_tx_ts = htonl(report.total_kernel_tx_ts);
|
||||
tx_message->data.ntp_data.total_kernel_rx_ts = htonl(report.total_kernel_rx_ts);
|
||||
tx_message->data.ntp_data.total_hw_tx_ts = htonl(report.total_hw_tx_ts);
|
||||
tx_message->data.ntp_data.total_hw_rx_ts = htonl(report.total_hw_rx_ts);
|
||||
memset(tx_message->data.ntp_data.reserved, 0xff, sizeof (tx_message->data.ntp_data.reserved));
|
||||
}
|
||||
|
||||
|
|
|
@ -689,6 +689,10 @@ Total TX : 24
|
|||
Total RX : 24
|
||||
Total valid RX : 24
|
||||
Total good RX : 22
|
||||
Total kernel TX : 24
|
||||
Total kernel RX : 24
|
||||
Total HW TX : 0
|
||||
Total HW RX : 0
|
||||
----
|
||||
+
|
||||
The fields are explained as follows:
|
||||
|
@ -746,6 +750,18 @@ The number of packets which passed the first two groups of NTP tests.
|
|||
*Total good RX*:::
|
||||
The number of packets which passed all three groups of NTP tests, i.e. the NTP
|
||||
measurement was accepted.
|
||||
*Total kernel TX*:::
|
||||
The number of packets sent to the source for which a timestamp was captured by
|
||||
the kernel.
|
||||
*Total kernel RX*:::
|
||||
The number of packets received from the source for which a timestamp was
|
||||
captured by the kernel.
|
||||
*Total HW TX*:::
|
||||
The number of packets sent to the source for which a timestamp was captured by
|
||||
the NIC.
|
||||
*Total HW RX*:::
|
||||
The number of packets received from the source for which a timestamp was
|
||||
captured by the NIC.
|
||||
|
||||
[[add_peer]]*add peer* _name_ [_option_]...::
|
||||
The *add peer* command allows a new NTP peer to be added whilst
|
||||
|
|
|
@ -149,7 +149,7 @@ static const uint16_t reply_lengths[] = {
|
|||
RPY_LENGTH_ENTRY(smoothing), /* SMOOTHING */
|
||||
0, /* SERVER_STATS - not supported */
|
||||
0, /* CLIENT_ACCESSES_BY_INDEX2 - not supported */
|
||||
RPY_LENGTH_ENTRY(ntp_data), /* NTP_DATA */
|
||||
0, /* NTP_DATA - not supported */
|
||||
RPY_LENGTH_ENTRY(manual_timestamp), /* MANUAL_TIMESTAMP2 */
|
||||
RPY_LENGTH_ENTRY(manual_list), /* MANUAL_LIST2 */
|
||||
RPY_LENGTH_ENTRY(ntp_source_name), /* NTP_SOURCE_NAME */
|
||||
|
@ -159,6 +159,7 @@ static const uint16_t reply_lengths[] = {
|
|||
RPY_LENGTH_ENTRY(select_data), /* SELECT_DATA */
|
||||
0, /* SERVER_STATS3 - not supported */
|
||||
RPY_LENGTH_ENTRY(server_stats), /* SERVER_STATS4 */
|
||||
RPY_LENGTH_ENTRY(ntp_data), /* NTP_DATA2 */
|
||||
};
|
||||
|
||||
/* ================================================== */
|
||||
|
|
|
@ -247,6 +247,10 @@ Total TX : 1
|
|||
Total RX : 1
|
||||
Total valid RX : 1
|
||||
Total good RX : 0
|
||||
Total kernel TX : [01]
|
||||
Total kernel RX : 1
|
||||
Total HW TX : 0
|
||||
Total HW RX : 0
|
||||
S Name/IP Address Auth COpts EOpts Last Score Interval Leap
|
||||
=======================================================================
|
||||
M node1\.net1\.clk N ----- ----- 0 1\.0 \+0ns \+0ns N
|
||||
|
|
|
@ -97,7 +97,11 @@ RX timestamping : (Daemon|Kernel)
|
|||
Total TX : [0-9]+
|
||||
Total RX : [0-9]+
|
||||
Total valid RX : [0-9]+
|
||||
Total good RX : [0-9]+$" || test_fail
|
||||
Total good RX : [0-9]+
|
||||
Total kernel TX : [0-9]+
|
||||
Total kernel RX : [0-9]+
|
||||
Total HW TX : 0
|
||||
Total HW RX : 0$" || test_fail
|
||||
|
||||
run_chronyc "selectdata" || test_fail
|
||||
check_chronyc_output "^S Name/IP Address Auth COpts EOpts Last Score Interval Leap
|
||||
|
|
Loading…
Reference in a new issue