mirror of
https://gitlab.com/chrony/chrony.git
synced 2025-12-04 00:45:07 -05:00
socket: open IPv6 socket by default if IPv4 is disabled
When no remote and local address is specified, and IPv4 is disabled by the -6 option, open an IPv6 socket. This is used by the Linux-specific timestamping configuration and socket option checking. It enables operation on a system that has no support for IPv4 sockets.
This commit is contained in:
16
socket.c
16
socket.c
@@ -212,13 +212,25 @@ get_reusable_socket(int type, IPSockAddr *spec)
|
|||||||
|
|
||||||
/* ================================================== */
|
/* ================================================== */
|
||||||
|
|
||||||
|
static int
|
||||||
|
get_default_inet_domain(void)
|
||||||
|
{
|
||||||
|
#ifdef FEAT_IPV6
|
||||||
|
if (!ip4_enabled && ip6_enabled)
|
||||||
|
return AF_INET6;
|
||||||
|
#endif
|
||||||
|
return AF_INET;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ================================================== */
|
||||||
|
|
||||||
#if defined(SOCK_CLOEXEC) || defined(SOCK_NONBLOCK)
|
#if defined(SOCK_CLOEXEC) || defined(SOCK_NONBLOCK)
|
||||||
static int
|
static int
|
||||||
check_socket_flag(int sock_flag, int fd_flag, int fs_flag)
|
check_socket_flag(int sock_flag, int fd_flag, int fs_flag)
|
||||||
{
|
{
|
||||||
int sock_fd, fd_flags, fs_flags;
|
int sock_fd, fd_flags, fs_flags;
|
||||||
|
|
||||||
sock_fd = socket(AF_INET, SOCK_DGRAM | sock_flag, 0);
|
sock_fd = socket(get_default_inet_domain(), SOCK_DGRAM | sock_flag, 0);
|
||||||
if (sock_fd < 0)
|
if (sock_fd < 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@@ -526,7 +538,7 @@ open_ip_socket(IPSockAddr *remote_addr, IPSockAddr *local_addr, const char *ifac
|
|||||||
else if (remote_addr)
|
else if (remote_addr)
|
||||||
family = remote_addr->ip_addr.family;
|
family = remote_addr->ip_addr.family;
|
||||||
else
|
else
|
||||||
family = IPADDR_INET4;
|
family = !ip4_enabled && ip6_enabled ? IPADDR_INET6 : IPADDR_INET4;
|
||||||
|
|
||||||
switch (family) {
|
switch (family) {
|
||||||
case IPADDR_INET4:
|
case IPADDR_INET4:
|
||||||
|
|||||||
Reference in New Issue
Block a user