union sockaddr_in46 {
struct sockaddr_in in4;
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
struct sockaddr_in6 in6;
#endif
struct sockaddr u;
his_addr.in4.sin_port = htons(port);
his_addr_len = sizeof (his_addr.in4);
break;
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
case IPADDR_INET6:
sock_fd = socket(AF_INET6, SOCK_DGRAM, 0);
recv_errqueue = 1;
}
#endif
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
#ifdef IPV6_RECVERR
if (ip.family == IPADDR_INET6 &&
!setsockopt(sock_fd, IPPROTO_IPV6, IPV6_RECVERR, &on_off, sizeof(on_off))) {
(where_from.u.sa_family == AF_INET &&
(where_from.in4.sin_addr.s_addr != his_addr.in4.sin_addr.s_addr ||
where_from.in4.sin_port != his_addr.in4.sin_port)) ||
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
(where_from.u.sa_family == AF_INET6 &&
(memcmp(where_from.in6.sin6_addr.s6_addr, his_addr.in6.sin6_addr.s6_addr,
sizeof (where_from.in6.sin6_addr.s6_addr)) != 0 ||
union sockaddr_in46 {
struct sockaddr_in in4;
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
struct sockaddr_in6 in6;
#endif
struct sockaddr u;
/* File descriptors for command and monitoring sockets */
static int sock_fd4;
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
static int sock_fd6;
#endif
}
#endif
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
if (family == AF_INET6) {
#ifdef IPV6_V6ONLY
/* Receive IPv6 packets only */
else
my_addr.in4.sin_addr.s_addr = htonl(INADDR_ANY);
break;
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
case AF_INET6:
my_addr_len = sizeof (my_addr.in6);
my_addr.in6.sin6_family = family;
sock_fd4 = prepare_socket(AF_INET, port_number);
else
sock_fd4 = -1;
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
if (port_number && (family == IPADDR_UNSPEC || family == IPADDR_INET6))
sock_fd6 = prepare_socket(AF_INET6, port_number);
else
#endif
if (port_number && sock_fd4 < 0
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
&& sock_fd6 < 0
#endif
) {
close(sock_fd4);
}
sock_fd4 = -1;
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
if (sock_fd6 >= 0) {
SCH_RemoveInputFileHandler(sock_fd6);
close(sock_fd6);
sock_fd = sock_fd4;
addrlen = sizeof (where_to->in4);
break;
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
case AF_INET6:
sock_fd = sock_fd6;
addrlen = sizeof (where_to->in6);
ip.addr.in4 = ntohl(where_to->in4.sin_addr.s_addr);
port = ntohs(where_to->in4.sin_port);
break;
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
case AF_INET6:
ip.family = IPADDR_INET6;
memcpy(ip.addr.in6, (where_to->in6.sin6_addr.s6_addr), sizeof(ip.addr.in6));
remote_port = ntohs(where_from.in4.sin_port);
localhost = (remote_ip.addr.in4 == 0x7f000001UL);
break;
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
case AF_INET6:
remote_ip.family = IPADDR_INET6;
memcpy(&remote_ip.addr.in6, where_from.in6.sin6_addr.s6_addr,
--disable-pps Disable PPS refclock driver
--disable-ipv6 Disable IPv6 support
--disable-rtc Don't include RTC even on Linux
- --disable-linuxcaps Disable Linux capabilities support
+ --disable-linuxcaps Disable libcap (Linux capabilities) support
--disable-asyncdns Disable asynchronous name resolving
--disable-forcednsretry Don't retry on permanent DNS error
--with-ntp-era=SECONDS Specify earliest assumed NTP time in seconds
EXTRA_DEFS=""
SYSDEFS=""
-debug=0
+feat_debug=0
feat_cmdmon=1
feat_ntp=1
feat_refclock=1
try_tomcrypt=1
feat_rtc=1
try_rtc=0
-feat_linuxcaps=1
-try_linuxcaps=0
+feat_droproot=1
+try_libcap=0
readline_lib=""
readline_inc=""
ncurses_lib=""
do
case "$option" in
--enable-debug )
- debug=1
+ feat_debug=1
;;
--disable-readline )
feat_readline=0
feat_pps=0
;;
--disable-linuxcaps)
- feat_linuxcaps=0
+ feat_droproot=0
;;
--disable-asyncdns)
feat_asyncdns=0
;;
Linux* )
EXTRA_OBJECTS="sys_generic.o sys_linux.o wrap_adjtimex.o"
- try_linuxcaps=1
+ try_libcap=1
try_rtc=1
try_setsched=1
try_lockmem=1
;;
esac
+if [ $feat_debug = "1" ]; then
+ add_def FEAT_DEBUG
+fi
+add_def DEBUG $feat_debug
+
if [ $feat_cmdmon = "1" ]; then
add_def FEAT_CMDMON
EXTRA_OBJECTS="$EXTRA_OBJECTS cmdmon.o manual.o pktlength.o"
n.sin6_addr = in6addr_any;
return !inet_ntop(AF_INET6, &n.sin6_addr.s6_addr, p, sizeof(p));'
then
- add_def HAVE_IPV6
+ add_def FEAT_IPV6
if test_code 'in6_pktinfo' 'sys/socket.h netinet/in.h' '' '' '
return sizeof(struct in6_pktinfo);'
then
struct timespec ts;
return time_pps_fetch(h, PPS_TSFMT_TSPEC, &i, &ts);'
then
- add_def HAVE_PPSAPI
+ add_def FEAT_PPS
fi
-if [ $feat_linuxcaps = "1" ] && [ $try_linuxcaps = "1" ] && \
+if [ $feat_droproot = "1" ] && [ $try_libcap = "1" ] && \
test_code \
- linuxcaps \
+ libcap \
'sys/types.h pwd.h sys/prctl.h sys/capability.h grp.h' \
'' '-lcap' \
'prctl(PR_SET_KEEPCAPS, 1);cap_set_proc(cap_from_text("cap_sys_time=ep"));'
then
- add_def FEAT_LINUXCAPS
+ add_def FEAT_PRIVDROP
EXTRA_LIBS="$EXTRA_LIBS -lcap"
fi
HASH_COMPILE="$test_cflags"
HASH_LINK="$test_link"
LIBS="$LIBS $HASH_LINK"
- add_def GENERATE_SHA1_KEY
+ add_def FEAT_SECHASH
fi
fi
HASH_COMPILE="-I/usr/include/tomcrypt"
HASH_LINK="-ltomcrypt"
LIBS="$LIBS $HASH_LINK"
- add_def GENERATE_SHA1_KEY
+ add_def FEAT_SECHASH
fi
fi
CHRONYVARDIR=$SETCHRONYVARDIR
fi
-add_def DEBUG $debug
add_def DEFAULT_CONF_FILE "\"$SYSCONFDIR/chrony.conf\""
add_def DEFAULT_USER "\"$default_user\""
add_def MAIL_PROGRAM "\"$mail_program\""
static int
generate_key(unsigned long key_id)
{
-#ifdef GENERATE_SHA1_KEY
+#ifdef FEAT_SECHASH
unsigned char key[20];
const char *hashname = "SHA1";
#else
addr->addr.in4 = ntohl(((struct sockaddr_in *)ai->ai_addr)->sin_addr.s_addr);
result = 1;
break;
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
case AF_INET6:
addr->family = IPADDR_INET6;
memcpy(&addr->addr.in6, &((struct sockaddr_in6 *)ai->ai_addr)->sin6_addr.s6_addr, sizeof (addr->addr.in6));
{
char *result = NULL;
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
struct sockaddr_in in4;
struct sockaddr_in6 in6;
char hbuf[NI_MAXHOST];
addr = htonl(ip_addr->addr.in4);
host = gethostbyaddr((const char *) &addr, sizeof (ip_addr), AF_INET);
break;
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
case IPADDR_INET6:
host = gethostbyaddr((const void *) ip_addr->addr.in6, sizeof (ip_addr->addr.in6), AF_INET6);
break;
union sockaddr_in46 {
struct sockaddr_in in4;
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
struct sockaddr_in6 in6;
#endif
struct sockaddr u;
/* The server/peer and client sockets for IPv4 and IPv6 */
static int server_sock_fd4;
static int client_sock_fd4;
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
static int server_sock_fd6;
static int client_sock_fd6;
#endif
my_addr_len = sizeof (my_addr.in4);
break;
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
case AF_INET6:
if (!client_only)
CNF_GetBindAddress(IPADDR_INET6, &bind_address);
}
#endif
}
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
else if (family == AF_INET6) {
#ifdef IPV6_V6ONLY
/* Receive IPv6 packets only */
switch (family) {
case IPADDR_INET4:
return prepare_socket(AF_INET, 0, 1);
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
case IPADDR_INET6:
return prepare_socket(AF_INET6, 0, 1);
#endif
addr.in4.sin_addr.s_addr = htonl(remote_addr->ip_addr.addr.in4);
addr.in4.sin_port = htons(remote_addr->port);
break;
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
case IPADDR_INET6:
addr_len = sizeof (addr.in6);
addr.in6.sin6_family = AF_INET6;
server_sock_fd4 = INVALID_SOCK_FD;
client_sock_fd4 = INVALID_SOCK_FD;
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
server_sock_fd6 = INVALID_SOCK_FD;
client_sock_fd6 = INVALID_SOCK_FD;
#endif
client_sock_fd4 = server_sock_fd4;
}
}
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
if (family == IPADDR_UNSPEC || family == IPADDR_INET6) {
if (server_port)
server_sock_fd6 = prepare_socket(AF_INET6, server_port, 0);
#endif
if ((server_port && server_sock_fd4 == INVALID_SOCK_FD
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
&& server_sock_fd6 == INVALID_SOCK_FD
#endif
) || (!separate_client_sockets && client_sock_fd4 == INVALID_SOCK_FD
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
&& client_sock_fd6 == INVALID_SOCK_FD
#endif
)) {
close_socket(client_sock_fd4);
close_socket(server_sock_fd4);
server_sock_fd4 = client_sock_fd4 = INVALID_SOCK_FD;
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
if (server_sock_fd6 != client_sock_fd6)
close_socket(client_sock_fd6);
close_socket(server_sock_fd6);
switch (remote_addr->ip_addr.family) {
case IPADDR_INET4:
return client_sock_fd4;
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
case IPADDR_INET6:
return client_sock_fd6;
#endif
switch (remote_addr->ip_addr.family) {
case IPADDR_INET4:
return server_sock_fd4;
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
case IPADDR_INET6:
return server_sock_fd6;
#endif
{
return sock_fd != INVALID_SOCK_FD &&
(sock_fd == server_sock_fd4
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
|| sock_fd == server_sock_fd6
#endif
);
remote_addr.ip_addr.addr.in4 = ntohl(where_from.in4.sin_addr.s_addr);
remote_addr.port = ntohs(where_from.in4.sin_port);
break;
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
case AF_INET6:
remote_addr.ip_addr.family = IPADDR_INET6;
memcpy(&remote_addr.ip_addr.addr.in6, where_from.in6.sin6_addr.s6_addr,
remote.in4.sin_port = htons(remote_addr->port);
remote.in4.sin_addr.s_addr = htonl(remote_addr->ip_addr.addr.in4);
break;
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
case IPADDR_INET6:
/* Don't set address with connected socket */
if (local_addr->sock_fd != server_sock_fd6 && separate_client_sockets)
#include "refclock.h"
-#if HAVE_PPSAPI
+#if FEAT_PPS
#if defined(HAVE_SYS_TIMEPPS_H)
#include <sys/timepps.h>
void SYS_DropRoot(char *user)
{
-#if defined(LINUX) && defined (FEAT_LINUXCAPS)
+#if defined(LINUX) && defined (FEAT_PRIVDROP)
SYS_Linux_DropRoot(user);
#else
LOG_FATAL(LOGF_Sys, "dropping root privileges not supported");
int LockAll = 0;
#endif
-#ifdef FEAT_LINUXCAPS
+#ifdef FEAT_PRIVDROP
#include <sys/types.h>
#include <pwd.h>
#include <sys/prctl.h>
/* ================================================== */
-#ifdef FEAT_LINUXCAPS
+#ifdef FEAT_PRIVDROP
void
SYS_Linux_DropRoot(char *user)
{
#endif
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
/* For inet_ntop() */
#include <arpa/inet.h>
#endif
break;
case IPADDR_INET6:
ip6 = addr->addr.in6;
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
inet_ntop(AF_INET6, ip6, result, BUFFER_LENGTH);
#else
snprintf(result, BUFFER_LENGTH, "%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x",
int
UTI_StringToIP(const char *addr, IPAddr *ip)
{
-#ifdef HAVE_IPV6
+#ifdef FEAT_IPV6
struct in_addr in4;
struct in6_addr in6;