diff --git a/cmdmon.c b/cmdmon.c index 26ea72e..058955a 100644 --- a/cmdmon.c +++ b/cmdmon.c @@ -1233,7 +1233,7 @@ handle_add_server(CMD_Request *rx_message, CMD_Reply *tx_message) params.iburst = ntohl(rx_message->data.ntp_source.flags) & REQ_ADDSRC_IBURST ? 1 : 0; 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); - status = NSR_AddServer(&rem_addr, ¶ms); + status = NSR_AddSource(&rem_addr, NTP_SERVER, ¶ms); switch (status) { case NSR_Success: tx_message->status = htons(STT_SUCCESS); @@ -1274,7 +1274,7 @@ handle_add_peer(CMD_Request *rx_message, CMD_Reply *tx_message) params.iburst = ntohl(rx_message->data.ntp_source.flags) & REQ_ADDSRC_IBURST ? 1 : 0; 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); - status = NSR_AddPeer(&rem_addr, ¶ms); + status = NSR_AddSource(&rem_addr, NTP_PEER, ¶ms); switch (status) { case NSR_Success: tx_message->status = htons(STT_SUCCESS); diff --git a/conf.c b/conf.c index 6cae474..1c71674 100644 --- a/conf.c +++ b/conf.c @@ -260,10 +260,6 @@ static int line_number; /* ================================================== */ -typedef enum { - SERVER, PEER -} NTP_Source_Type; - typedef struct { NTP_Source_Type type; IPAddr ip_addr; @@ -433,7 +429,7 @@ parse_lockall(const char *line) static void parse_server(const char *line) { - parse_source(line, SERVER); + parse_source(line, NTP_SERVER); } /* ================================================== */ @@ -441,7 +437,7 @@ parse_server(const char *line) static void parse_peer(const char *line) { - parse_source(line, PEER); + parse_source(line, NTP_PEER); } /* ================================================== */ @@ -1199,16 +1195,7 @@ CNF_AddSources(void) { memset(&server.local_ip_addr, 0, sizeof (server.local_ip_addr)); server.port = ntp_sources[i].port; - switch (ntp_sources[i].type) { - case SERVER: - NSR_AddServer(&server, &ntp_sources[i].params); - break; - - case PEER: - NSR_AddPeer(&server, &ntp_sources[i].params); - break; - } - + NSR_AddSource(&server, ntp_sources[i].type, &ntp_sources[i].params); } return; diff --git a/ntp_core.c b/ntp_core.c index daeacb1..7ec73d1 100644 --- a/ntp_core.c +++ b/ntp_core.c @@ -247,15 +247,24 @@ start_initial_timeout(NCR_Instance inst) /* ================================================== */ -static NCR_Instance -create_instance(NTP_Remote_Address *remote_addr, NTP_Mode mode, SourceParameters *params) +NCR_Instance +NCR_GetInstance(NTP_Remote_Address *remote_addr, NTP_Source_Type type, SourceParameters *params) { NCR_Instance result; result = MallocNew(struct NCR_Instance_Record); result->remote_addr = *remote_addr; - result->mode = mode; + switch (type) { + case NTP_SERVER: + result->mode = MODE_CLIENT; + break; + case NTP_PEER: + result->mode = MODE_ACTIVE; + break; + default: + assert(0); + } result->minpoll = params->minpoll; result->maxpoll = params->maxpoll; @@ -314,24 +323,6 @@ create_instance(NTP_Remote_Address *remote_addr, NTP_Mode mode, SourceParameters /* ================================================== */ -/* Get a new instance for a server */ -NCR_Instance -NCR_GetServerInstance(NTP_Remote_Address *remote_addr, SourceParameters *params) -{ - return create_instance(remote_addr, MODE_CLIENT, params); -} - -/* ================================================== */ - -/* Get a new instance for a peer */ -NCR_Instance -NCR_GetPeerInstance(NTP_Remote_Address *remote_addr, SourceParameters *params) -{ - return create_instance(remote_addr, MODE_ACTIVE, params); -} - -/* ================================================== */ - /* Destroy an instance */ void NCR_DestroyInstance(NCR_Instance instance) diff --git a/ntp_core.h b/ntp_core.h index f269a55..5bddc52 100644 --- a/ntp_core.h +++ b/ntp_core.h @@ -38,6 +38,10 @@ #include "ntp.h" #include "reports.h" +typedef enum { + NTP_SERVER, NTP_PEER +} NTP_Source_Type; + /* This is a private data type used for storing the instance record for each source that we are chiming with */ typedef struct NCR_Instance_Record *NCR_Instance; @@ -46,11 +50,8 @@ typedef struct NCR_Instance_Record *NCR_Instance; extern void NCR_Initialise(void); extern void NCR_Finalise(void); -/* Get a new instance for a server */ -extern NCR_Instance NCR_GetServerInstance(NTP_Remote_Address *remote_addr, SourceParameters *params); - -/* Get a new instance for a peer */ -extern NCR_Instance NCR_GetPeerInstance(NTP_Remote_Address *remote_addr, SourceParameters *params); +/* Get a new instance for a server or peer */ +extern NCR_Instance NCR_GetInstance(NTP_Remote_Address *remote_addr, NTP_Source_Type type, SourceParameters *params); /* Destroy an instance */ extern void NCR_DestroyInstance(NCR_Instance instance); diff --git a/ntp_sources.c b/ntp_sources.c index 97453ab..cc37435 100644 --- a/ntp_sources.c +++ b/ntp_sources.c @@ -170,10 +170,9 @@ find_slot(NTP_Remote_Address *remote_addr, int *slot, int *found) /* ================================================== */ -/* Procedure to add a new server source (to which this machine will be - a client) */ +/* Procedure to add a new source */ NSR_Status -NSR_AddServer(NTP_Remote_Address *remote_addr, SourceParameters *params) +NSR_AddSource(NTP_Remote_Address *remote_addr, NTP_Source_Type type, SourceParameters *params) { int slot, found; @@ -195,40 +194,7 @@ NSR_AddServer(NTP_Remote_Address *remote_addr, SourceParameters *params) return NSR_InvalidAF; } else { n_sources++; - records[slot].data = NCR_GetServerInstance(remote_addr, params); /* Will need params passing through */ - records[slot].remote_addr = NCR_GetRemoteAddress(records[slot].data); - return NSR_Success; - } - } -} - -/* ================================================== */ - -/* Procedure to add a new peer. */ -NSR_Status -NSR_AddPeer(NTP_Remote_Address *remote_addr, SourceParameters *params) -{ - int slot, found; - - assert(initialised); - -#if 0 - LOG(LOGS_INFO, LOGF_NtpSources, "IP=%s port=%d", UTI_IPToString(&remote_addr->ip_addr), remote_addr->port); -#endif - - /* Find empty bin & check that we don't have the address already */ - find_slot(remote_addr, &slot, &found); - if (found) { - return NSR_AlreadyInUse; - } else { - if (n_sources == MAX_SOURCES) { - return NSR_TooManySources; - } else if (remote_addr->ip_addr.family != IPADDR_INET4 && - remote_addr->ip_addr.family != IPADDR_INET6) { - return NSR_InvalidAF; - } else { - n_sources++; - records[slot].data = NCR_GetPeerInstance(remote_addr, params); /* Will need params passing through */ + records[slot].data = NCR_GetInstance(remote_addr, type, params); /* Will need params passing through */ records[slot].remote_addr = NCR_GetRemoteAddress(records[slot].data); return NSR_Success; } diff --git a/ntp_sources.h b/ntp_sources.h index d708949..eaef8a8 100644 --- a/ntp_sources.h +++ b/ntp_sources.h @@ -45,18 +45,13 @@ typedef enum { NSR_Success, /* Operation successful */ NSR_NoSuchSource, /* Remove - attempt to remove a source that is not known */ - NSR_AlreadyInUse, /* AddServer, AddPeer - attempt to add a source that is already known */ - NSR_TooManySources, /* AddServer, AddPeer - too many sources already present */ - NSR_InvalidAF /* AddServer, AddPeer - attempt to add a source with invalid address family */ + NSR_AlreadyInUse, /* AddSource - attempt to add a source that is already known */ + NSR_TooManySources, /* AddSource - too many sources already present */ + NSR_InvalidAF /* AddSource - attempt to add a source with invalid address family */ } NSR_Status; -/* Procedure to add a new server source (to which this machine will be - a client) */ -extern NSR_Status NSR_AddServer(NTP_Remote_Address *remote_addr, SourceParameters *params); - -/* Procedure to add a new peer source. We will use symmetric active - mode packets when communicating with this source */ -extern NSR_Status NSR_AddPeer(NTP_Remote_Address *remote_addr, SourceParameters *params); +/* Procedure to add a new server or peer source. */ +extern NSR_Status NSR_AddSource(NTP_Remote_Address *remote_addr, NTP_Source_Type type, SourceParameters *params); /* Procedure to remove a source */ extern NSR_Status NSR_RemoveSource(NTP_Remote_Address *remote_addr);