|
Packit |
96c956 |
/*
|
|
Packit |
96c956 |
chronyd/chronyc - Programs for keeping computer clocks accurate.
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
**********************************************************************
|
|
Packit |
96c956 |
* Copyright (C) Miroslav Lichvar 2014-2016
|
|
Packit |
96c956 |
*
|
|
Packit |
96c956 |
* This program is free software; you can redistribute it and/or modify
|
|
Packit |
96c956 |
* it under the terms of version 2 of the GNU General Public License as
|
|
Packit |
96c956 |
* published by the Free Software Foundation.
|
|
Packit |
96c956 |
*
|
|
Packit |
96c956 |
* This program is distributed in the hope that it will be useful, but
|
|
Packit |
96c956 |
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
96c956 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
96c956 |
* General Public License for more details.
|
|
Packit |
96c956 |
*
|
|
Packit |
96c956 |
* You should have received a copy of the GNU General Public License along
|
|
Packit |
96c956 |
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
Packit |
96c956 |
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
Packit |
96c956 |
*
|
|
Packit |
96c956 |
**********************************************************************
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
=======================================================================
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
Function replacements needed when optional features are disabled.
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
*/
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
#include "config.h"
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
#include "clientlog.h"
|
|
Packit |
96c956 |
#include "cmdmon.h"
|
|
Packit |
96c956 |
#include "keys.h"
|
|
Packit |
96c956 |
#include "logging.h"
|
|
Packit |
96c956 |
#include "manual.h"
|
|
Packit |
96c956 |
#include "memory.h"
|
|
Packit |
96c956 |
#include "nameserv.h"
|
|
Packit |
96c956 |
#include "nameserv_async.h"
|
|
Packit |
96c956 |
#include "ntp_core.h"
|
|
Packit |
96c956 |
#include "ntp_io.h"
|
|
Packit |
96c956 |
#include "ntp_sources.h"
|
|
Packit |
96c956 |
#include "ntp_signd.h"
|
|
Packit |
96c956 |
#include "privops.h"
|
|
Packit |
96c956 |
#include "refclock.h"
|
|
Packit |
96c956 |
#include "sched.h"
|
|
Packit |
96c956 |
#include "util.h"
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
#ifndef FEAT_ASYNCDNS
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
/* This is a blocking implementation used when asynchronous resolving is not available */
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
struct DNS_Async_Instance {
|
|
Packit |
96c956 |
const char *name;
|
|
Packit |
96c956 |
DNS_NameResolveHandler handler;
|
|
Packit |
96c956 |
void *arg;
|
|
Packit |
96c956 |
int pipe[2];
|
|
Packit |
96c956 |
};
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
static void
|
|
Packit |
96c956 |
resolve_name(int fd, int event, void *anything)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
struct DNS_Async_Instance *inst;
|
|
Packit |
96c956 |
IPAddr addrs[DNS_MAX_ADDRESSES];
|
|
Packit |
96c956 |
DNS_Status status;
|
|
Packit |
96c956 |
int i;
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
inst = (struct DNS_Async_Instance *)anything;
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
SCH_RemoveFileHandler(inst->pipe[0]);
|
|
Packit |
96c956 |
close(inst->pipe[0]);
|
|
Packit |
96c956 |
close(inst->pipe[1]);
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
status = PRV_Name2IPAddress(inst->name, addrs, DNS_MAX_ADDRESSES);
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
for (i = 0; status == DNS_Success && i < DNS_MAX_ADDRESSES &&
|
|
Packit |
96c956 |
addrs[i].family != IPADDR_UNSPEC; i++)
|
|
Packit |
96c956 |
;
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
(inst->handler)(status, i, addrs, inst->arg);
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
Free(inst);
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
DNS_Name2IPAddressAsync(const char *name, DNS_NameResolveHandler handler, void *anything)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
struct DNS_Async_Instance *inst;
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
inst = MallocNew(struct DNS_Async_Instance);
|
|
Packit |
96c956 |
inst->name = name;
|
|
Packit |
96c956 |
inst->handler = handler;
|
|
Packit |
96c956 |
inst->arg = anything;
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
if (pipe(inst->pipe))
|
|
Packit |
96c956 |
LOG_FATAL("pipe() failed");
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
UTI_FdSetCloexec(inst->pipe[0]);
|
|
Packit |
96c956 |
UTI_FdSetCloexec(inst->pipe[1]);
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
SCH_AddFileHandler(inst->pipe[0], SCH_FILE_INPUT, resolve_name, inst);
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
if (write(inst->pipe[1], "", 1) < 0)
|
|
Packit |
96c956 |
;
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
#endif /* !FEAT_ASYNCDNS */
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
#ifndef FEAT_CMDMON
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
CAM_Initialise(int family)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
CAM_Finalise(void)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
CAM_OpenUnixSocket(void)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
int
|
|
Packit |
96c956 |
CAM_AddAccessRestriction(IPAddr *ip_addr, int subnet_bits, int allow, int all)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
return 1;
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
MNL_Initialise(void)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
MNL_Finalise(void)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
#endif /* !FEAT_CMDMON */
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
#ifndef FEAT_NTP
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
NCR_AddBroadcastDestination(IPAddr *addr, unsigned short port, int interval)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
NCR_Initialise(void)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
NCR_Finalise(void)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
int
|
|
Packit |
96c956 |
NCR_AddAccessRestriction(IPAddr *ip_addr, int subnet_bits, int allow, int all)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
return 1;
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
int
|
|
Packit |
96c956 |
NCR_CheckAccessRestriction(IPAddr *ip_addr)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
return 0;
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
NIO_Initialise(int family)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
NIO_Finalise(void)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
NSR_Initialise(void)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
NSR_Finalise(void)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
NSR_Status
|
|
Packit |
96c956 |
NSR_AddSource(NTP_Remote_Address *remote_addr, NTP_Source_Type type, SourceParameters *params)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
return NSR_TooManySources;
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
NSR_AddSourceByName(char *name, int port, int pool, NTP_Source_Type type, SourceParameters *params)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
NSR_Status
|
|
Packit |
96c956 |
NSR_RemoveSource(NTP_Remote_Address *remote_addr)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
return NSR_NoSuchSource;
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
NSR_RemoveAllSources(void)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
NSR_HandleBadSource(IPAddr *address)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
NSR_RefreshAddresses(void)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
NSR_SetSourceResolvingEndHandler(NSR_SourceResolvingEndHandler handler)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
if (handler)
|
|
Packit |
96c956 |
(handler)();
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
NSR_ResolveSources(void)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void NSR_StartSources(void)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void NSR_AutoStartSources(void)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
int
|
|
Packit |
96c956 |
NSR_InitiateSampleBurst(int n_good_samples, int n_total_samples,
|
|
Packit |
96c956 |
IPAddr *mask, IPAddr *address)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
return 0;
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
uint32_t
|
|
Packit |
96c956 |
NSR_GetLocalRefid(IPAddr *address)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
return 0;
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
int
|
|
Packit |
96c956 |
NSR_SetConnectivity(IPAddr *mask, IPAddr *address, SRC_Connectivity connectivity)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
return 0;
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
int
|
|
Packit |
96c956 |
NSR_ModifyMinpoll(IPAddr *address, int new_minpoll)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
return 0;
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
int
|
|
Packit |
96c956 |
NSR_ModifyMaxpoll(IPAddr *address, int new_maxpoll)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
return 0;
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
int
|
|
Packit |
96c956 |
NSR_ModifyMaxdelay(IPAddr *address, double new_max_delay)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
return 0;
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
int
|
|
Packit |
96c956 |
NSR_ModifyMaxdelayratio(IPAddr *address, double new_max_delay_ratio)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
return 0;
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
int
|
|
Packit |
96c956 |
NSR_ModifyMaxdelaydevratio(IPAddr *address, double new_max_delay_dev_ratio)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
return 0;
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
int
|
|
Packit |
96c956 |
NSR_ModifyMinstratum(IPAddr *address, int new_min_stratum)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
return 0;
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
int
|
|
Packit |
96c956 |
NSR_ModifyPolltarget(IPAddr *address, int new_poll_target)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
return 0;
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
NSR_ReportSource(RPT_SourceReport *report, struct timespec *now)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
memset(report, 0, sizeof (*report));
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
int
|
|
Packit |
96c956 |
NSR_GetNTPReport(RPT_NTPReport *report)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
return 0;
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
NSR_GetActivityReport(RPT_ActivityReport *report)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
memset(report, 0, sizeof (*report));
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
#ifndef FEAT_CMDMON
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
CLG_Initialise(void)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
CLG_Finalise(void)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
DNS_SetAddressFamily(int family)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
DNS_Status
|
|
Packit |
96c956 |
DNS_Name2IPAddress(const char *name, IPAddr *ip_addrs, int max_addrs)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
return DNS_Failure;
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
KEY_Initialise(void)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
KEY_Finalise(void)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
#endif /* !FEAT_CMDMON */
|
|
Packit |
96c956 |
#endif /* !FEAT_NTP */
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
#ifndef FEAT_REFCLOCK
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
RCL_Initialise(void)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
RCL_Finalise(void)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
int
|
|
Packit |
96c956 |
RCL_AddRefclock(RefclockParameters *params)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
return 0;
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
RCL_StartRefclocks(void)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
RCL_ReportSource(RPT_SourceReport *report, struct timespec *now)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
memset(report, 0, sizeof (*report));
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
#endif /* !FEAT_REFCLOCK */
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
#ifndef FEAT_SIGND
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
NSD_Initialise(void)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
void
|
|
Packit |
96c956 |
NSD_Finalise(void)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
int
|
|
Packit |
96c956 |
NSD_GetAuthDelay(uint32_t key_id)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
return 0;
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
int
|
|
Packit |
96c956 |
NSD_SignAndSendPacket(uint32_t key_id, NTP_Packet *packet, NTP_Remote_Address *remote_addr, NTP_Local_Address *local_addr, int length)
|
|
Packit |
96c956 |
{
|
|
Packit |
96c956 |
return 0;
|
|
Packit |
96c956 |
}
|
|
Packit |
96c956 |
|
|
Packit |
96c956 |
#endif /* !FEAT_SIGND */
|