From: Danny Mayer Date: Tue, 3 Aug 2004 02:19:13 +0000 (-0400) Subject: findinterface cleanup and IPv4/IPv6 fixes X-Git-Tag: NTP_4_2_3~146 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=aa1c055db2000ec976cc0daae1c3df65b4a2b029;p=thirdparty%2Fntp.git findinterface cleanup and IPv4/IPv6 fixes bk: 410ef621uW5zrjTE8HVLvRmdy8OEsQ --- diff --git a/configure.in b/configure.in index f23a4e369a..5ff490f2da 100644 --- a/configure.in +++ b/configure.in @@ -798,6 +798,8 @@ case "$host" in esac AC_CHECK_FUNCS(hstrerror) AC_CHECK_FUNC(inet_ntop, [], [AC_DEFINE(ISC_PLATFORM_NEEDNTOP, 1, [ISC: provide inet_ntop()])]) +AC_CHECK_FUNC(inet_pton, [], [AC_DEFINE(ISC_PLATFORM_NEEDPTON, 1, [ISC: provide inet_pton()])]) +AC_CHECK_FUNC(inet_aton, [], [AC_DEFINE(ISC_PLATFORM_NEEDATON, 1, [ISC: provide inet_aton()])]) AC_CHECK_FUNCS(K_open kvm_open memcpy memmove memset) case "$host" in *-*-sco3.2v5.0.*) diff --git a/libntp/ntp_rfc2553.c b/libntp/ntp_rfc2553.c index 21333889c7..4c6257786c 100644 --- a/libntp/ntp_rfc2553.c +++ b/libntp/ntp_rfc2553.c @@ -145,7 +145,7 @@ getaddrinfo (const char *nodename, const char *servname, } ai->ai_addrlen = sizeof(struct sockaddr_storage); sockin = (struct sockaddr_in *)ai->ai_addr; - sockin->sin_family = ai->ai_family; + sockin->sin_family = (short) ai->ai_family; sockin->sin_addr.s_addr = htonl(INADDR_ANY); #ifdef HAVE_SA_LEN_IN_STRUCT_SOCKADDR ai->ai_addr->sa_len = SOCKLEN(ai->ai_addr); @@ -157,7 +157,13 @@ getaddrinfo (const char *nodename, const char *servname, freeaddrinfo(ai); return (EAI_SERVICE); } - memcpy(ai->ai_addr->sa_data, &ntpport, sizeof(short)); + /* + * Set up the port number + */ + if (ai->ai_family == AF_INET) + ((struct sockaddr_in *)ai->ai_addr)->sin_port = ntpport; + else if (ai->ai_family == AF_INET6) + ((struct sockaddr_in6 *)ai->ai_addr)->sin6_port = ntpport; } *res = ai; return (0); diff --git a/ntpd/ntp_io.c b/ntpd/ntp_io.c index c7ffaac2ff..1620192d9b 100644 --- a/ntpd/ntp_io.c +++ b/ntpd/ntp_io.c @@ -2001,11 +2001,10 @@ findinterface( struct sockaddr_storage saddr; int saddrlen; u_int32 amask, imask; - u_int32 laddr, iaddr, maddr; /* * If there is only one outgoing interface we already know the interface - * + */ if (addr->ss_family == AF_INET && outifaceipv4 != -1) { return (&inter_list[outifaceipv4]); }