]> git.ipfire.org Git - thirdparty/chrony.git/commitdiff
Support prefer and noselect options in chronyc
authorMiroslav Lichvar <mlichvar@redhat.com>
Thu, 26 Aug 2010 08:29:58 +0000 (10:29 +0200)
committerMiroslav Lichvar <mlichvar@redhat.com>
Thu, 26 Aug 2010 08:29:58 +0000 (10:29 +0200)
candm.h
client.c
cmdmon.c

diff --git a/candm.h b/candm.h
index 1c7cccffad5827d440aff71e34f6da17f482a38f..b0f0a3e30eb19a8fe62adb2ef95397fab7e24797 100644 (file)
--- a/candm.h
+++ b/candm.h
@@ -223,6 +223,8 @@ typedef struct {
 #define REQ_ADDSRC_ONLINE 0x1
 #define REQ_ADDSRC_AUTOOFFLINE 0x2
 #define REQ_ADDSRC_IBURST 0x4
+#define REQ_ADDSRC_PREFER 0x8
+#define REQ_ADDSRC_NOSELECT 0x10
 
 typedef struct {
   IPAddr ip_addr;
index 1e44031431d7812b0b42c403d3b6cdae88bffb5f..329d1d9e38d8886d917f0d983ad6889870f0f06d 100644 (file)
--- a/client.c
+++ b/client.c
@@ -934,9 +934,6 @@ process_cmd_add_server_or_peer(CMD_Request *msg, char *line)
       if (data.params.min_stratum) {
         fprintf(stderr, "Option minstratum not supported\n");
         break;
-      } else if (data.params.sel_option != SRC_SelectNormal) {
-        fprintf(stderr, "Options noselect and prefer not supported\n");
-        break;
       }
 
       msg->data.ntp_source.port = htonl((unsigned long) data.port);
@@ -950,7 +947,9 @@ process_cmd_add_server_or_peer(CMD_Request *msg, char *line)
       msg->data.ntp_source.flags = htonl(
           (data.params.online ? REQ_ADDSRC_ONLINE : 0) |
           (data.params.auto_offline ? REQ_ADDSRC_AUTOOFFLINE : 0) |
-          (data.params.iburst ? REQ_ADDSRC_IBURST : 0));
+          (data.params.iburst ? REQ_ADDSRC_IBURST : 0) |
+          (data.params.sel_option == SRC_SelectPrefer ? REQ_ADDSRC_PREFER : 0) |
+          (data.params.sel_option == SRC_SelectNoselect ? REQ_ADDSRC_NOSELECT : 0));
       result = 1;
 
       break;
index 9219af1803cb24cd5e0dd555e716ff769cc158f3..598998b249620598b11274bcb503ec04eb1814e4 100644 (file)
--- a/cmdmon.c
+++ b/cmdmon.c
@@ -1244,12 +1244,13 @@ handle_add_source(NTP_Source_Type type, CMD_Request *rx_message, CMD_Reply *tx_m
   params.online  = ntohl(rx_message->data.ntp_source.flags) & REQ_ADDSRC_ONLINE ? 1 : 0;
   params.auto_offline = ntohl(rx_message->data.ntp_source.flags) & REQ_ADDSRC_AUTOOFFLINE ? 1 : 0;
   params.iburst = ntohl(rx_message->data.ntp_source.flags) & REQ_ADDSRC_IBURST ? 1 : 0;
+  params.sel_option = ntohl(rx_message->data.ntp_source.flags) & REQ_ADDSRC_PREFER ? SRC_SelectPrefer :
+                      ntohl(rx_message->data.ntp_source.flags) & REQ_ADDSRC_NOSELECT ? SRC_SelectNoselect : SRC_SelectNormal;
   params.max_delay = UTI_FloatNetworkToHost(rx_message->data.ntp_source.max_delay);
   params.max_delay_ratio = UTI_FloatNetworkToHost(rx_message->data.ntp_source.max_delay_ratio);
 
  /* not transmitted in cmdmon protocol yet */
   params.min_stratum = 0;       
-  params.sel_option = SRC_SelectNormal;
 
   status = NSR_AddSource(&rem_addr, type, &params);
   switch (status) {