diff --git a/candm.h b/candm.h index 690cf2c..b03448c 100644 --- a/candm.h +++ b/candm.h @@ -97,7 +97,9 @@ #define REQ_NTP_DATA 57 #define REQ_ADD_SERVER2 58 #define REQ_ADD_PEER2 59 -#define N_REQUEST_TYPES 60 +#define REQ_ADD_SERVER3 60 +#define REQ_ADD_PEER3 61 +#define N_REQUEST_TYPES 62 /* Structure used to exchange timespecs independent of time_t size */ typedef struct { @@ -267,8 +269,11 @@ typedef struct { Float max_delay; Float max_delay_ratio; Float max_delay_dev_ratio; + Float min_delay; + Float asymmetry; Float offset; uint32_t flags; + uint32_t reserved[4]; int32_t EOR; } REQ_NTP_Source; diff --git a/client.c b/client.c index 8144070..ac0d55d 100644 --- a/client.c +++ b/client.c @@ -1101,6 +1101,8 @@ process_cmd_add_server_or_peer(CMD_Request *msg, char *line) msg->data.ntp_source.max_delay_ratio = UTI_FloatHostToNetwork(data.params.max_delay_ratio); msg->data.ntp_source.max_delay_dev_ratio = UTI_FloatHostToNetwork(data.params.max_delay_dev_ratio); + msg->data.ntp_source.min_delay = UTI_FloatHostToNetwork(data.params.min_delay); + msg->data.ntp_source.asymmetry = UTI_FloatHostToNetwork(data.params.asymmetry); msg->data.ntp_source.offset = UTI_FloatHostToNetwork(data.params.offset); msg->data.ntp_source.flags = htonl( (data.params.online ? REQ_ADDSRC_ONLINE : 0) | @@ -1111,6 +1113,8 @@ process_cmd_add_server_or_peer(CMD_Request *msg, char *line) (data.params.sel_options & SRC_SELECT_NOSELECT ? REQ_ADDSRC_NOSELECT : 0) | (data.params.sel_options & SRC_SELECT_TRUST ? REQ_ADDSRC_TRUST : 0) | (data.params.sel_options & SRC_SELECT_REQUIRE ? REQ_ADDSRC_REQUIRE : 0)); + memset(msg->data.ntp_source.reserved, 0, sizeof (msg->data.ntp_source.reserved)); + result = 1; break; @@ -1124,7 +1128,7 @@ process_cmd_add_server_or_peer(CMD_Request *msg, char *line) static int process_cmd_add_server(CMD_Request *msg, char *line) { - msg->command = htons(REQ_ADD_SERVER2); + msg->command = htons(REQ_ADD_SERVER3); return process_cmd_add_server_or_peer(msg, line); } @@ -1133,7 +1137,7 @@ process_cmd_add_server(CMD_Request *msg, char *line) static int process_cmd_add_peer(CMD_Request *msg, char *line) { - msg->command = htons(REQ_ADD_PEER2); + msg->command = htons(REQ_ADD_PEER3); return process_cmd_add_server_or_peer(msg, line); } diff --git a/cmdmon.c b/cmdmon.c index 6057b10..4ed2189 100644 --- a/cmdmon.c +++ b/cmdmon.c @@ -136,6 +136,8 @@ static const char permissions[] = { PERMIT_AUTH, /* NTP_DATA */ PERMIT_AUTH, /* ADD_SERVER2 */ PERMIT_AUTH, /* ADD_PEER2 */ + PERMIT_AUTH, /* ADD_SERVER3 */ + PERMIT_AUTH, /* ADD_PEER3 */ }; /* ================================================== */ @@ -791,6 +793,8 @@ handle_add_source(NTP_Source_Type type, CMD_Request *rx_message, CMD_Reply *tx_m UTI_FloatNetworkToHost(rx_message->data.ntp_source.max_delay_ratio); params.max_delay_dev_ratio = UTI_FloatNetworkToHost(rx_message->data.ntp_source.max_delay_dev_ratio); + params.min_delay = UTI_FloatNetworkToHost(rx_message->data.ntp_source.min_delay); + params.asymmetry = UTI_FloatNetworkToHost(rx_message->data.ntp_source.asymmetry); params.offset = UTI_FloatNetworkToHost(rx_message->data.ntp_source.offset); params.online = ntohl(rx_message->data.ntp_source.flags) & REQ_ADDSRC_ONLINE ? 1 : 0; @@ -1525,11 +1529,11 @@ read_from_cmd_socket(int sock_fd, int event, void *anything) handle_cmdaccheck(&rx_message, &tx_message); break; - case REQ_ADD_SERVER2: + case REQ_ADD_SERVER3: handle_add_source(NTP_SERVER, &rx_message, &tx_message); break; - case REQ_ADD_PEER2: + case REQ_ADD_PEER3: handle_add_source(NTP_PEER, &rx_message, &tx_message); break; diff --git a/pktlength.c b/pktlength.c index 5f5014e..23a1b47 100644 --- a/pktlength.c +++ b/pktlength.c @@ -114,8 +114,10 @@ static const struct request_length request_lengths[] = { client_accesses_by_index), /* CLIENT_ACCESSES_BY_INDEX2 */ REQ_LENGTH_ENTRY(local, null), /* LOCAL2 */ REQ_LENGTH_ENTRY(ntp_data, ntp_data), /* NTP_DATA */ - REQ_LENGTH_ENTRY(ntp_source, null), /* ADD_SERVER2 */ - REQ_LENGTH_ENTRY(ntp_source, null), /* ADD_PEER2 */ + { 0, 0 }, /* ADD_SERVER2 */ + { 0, 0 }, /* ADD_PEER2 */ + REQ_LENGTH_ENTRY(ntp_source, null), /* ADD_SERVER3 */ + REQ_LENGTH_ENTRY(ntp_source, null), /* ADD_PEER3 */ }; static const uint16_t reply_lengths[] = {