Don't log error when an IPv6 socket cannot be opened and chronyd was
built without IPv6 support.
Reported-by: Lonnie Abelbeck <lonnie@abelbeck.com>
case IPADDR_INET4:
case IPADDR_INET6:
port = CNF_GetCommandPort();
- if (port == 0)
+ if (port == 0 || !SCK_IsFamilySupported(family))
return INVALID_SOCK_FD;
CNF_GetBindCommandAddress(family, &local_addr.ip_addr);
int sock_fd, sock_flags, events = SCH_FILE_INPUT;
IPSockAddr local_addr;
+ if (!SCK_IsFamilySupported(family))
+ return INVALID_SOCK_FD;
+
if (!client_only)
CNF_GetBindAddress(family, &local_addr.ip_addr);
else
/* ================================================== */
+int
+SCK_IsFamilySupported(int family)
+{
+ switch (family) {
+ case IPADDR_INET4:
+ return 1;
+ case IPADDR_INET6:
+#ifdef FEAT_IPV6
+ return 1;
+#endif
+ default:
+ return 0;
+ }
+}
+
+/* ================================================== */
+
void
SCK_GetAnyLocalIPAddress(int family, IPAddr *local_addr)
{
/* Finalisation function */
extern void SCK_Finalise(void);
+/* Check if support for the IP family was enabled in the build */
+extern int SCK_IsFamilySupported(int family);
+
/* Get the 0.0.0.0/::0 or 127.0.0.1/::1 address */
extern void SCK_GetAnyLocalIPAddress(int family, IPAddr *local_addr);
extern void SCK_GetLoopbackIPAddress(int family, IPAddr *local_addr);