--- config.orig Sun Dec 28 20:17:46 2014 +++ config.c Sun Dec 28 20:19:48 2014 @@ -75,7 +75,9 @@ if ((h = calloc(1, sizeof(struct ntp_addr))) == NULL) fatal(NULL); sa_in = (struct sockaddr_in *)&h->ss; +#ifdef SIN_LEN sa_in->sin_len = sizeof(struct sockaddr_in); +#endif sa_in->sin_family = AF_INET; sa_in->sin_addr.s_addr = ina.s_addr; @@ -97,7 +99,9 @@ if ((h = calloc(1, sizeof(struct ntp_addr))) == NULL) fatal(NULL); sa_in6 = (struct sockaddr_in6 *)&h->ss; +#ifdef SIN6_LEN sa_in6->sin6_len = sizeof(struct sockaddr_in6); +#endif sa_in6->sin6_family = AF_INET6; memcpy(&sa_in6->sin6_addr, &((struct sockaddr_in6 *)res->ai_addr)->sin6_addr, @@ -124,8 +128,14 @@ hints.ai_family = PF_UNSPEC; hints.ai_socktype = SOCK_DGRAM; /* DUMMY */ error = getaddrinfo(s, NULL, &hints, &res0); - if (error == EAI_AGAIN || error == EAI_NODATA || error == EAI_NONAME) - return (0); + switch (error) { + case EAI_AGAIN: +#ifdef EAI_NODATA + case EAI_NODATA: +#endif + case EAI_NONAME: + return (0); + } if (error) { log_warnx("could not parse \"%s\": %s", s, gai_strerror(error)); @@ -141,12 +151,16 @@ h->ss.ss_family = res->ai_family; if (res->ai_family == AF_INET) { sa_in = (struct sockaddr_in *)&h->ss; +#ifdef SIN_LEN sa_in->sin_len = sizeof(struct sockaddr_in); +#endif sa_in->sin_addr.s_addr = ((struct sockaddr_in *) res->ai_addr)->sin_addr.s_addr; } else { sa_in6 = (struct sockaddr_in6 *)&h->ss; +#ifdef SIN6_LEN sa_in6->sin6_len = sizeof(struct sockaddr_in6); +#endif memcpy(&sa_in6->sin6_addr, &((struct sockaddr_in6 *) res->ai_addr)->sin6_addr, sizeof(struct in6_addr)); }