as intended.
* [Bug 1709] from 4.2.6p3-RC9: ntpdate ignores replies with equal
receive and transmit timestamps.
+* [Bug 1715] sntp utilitiesTest.IPv6Address failed.
(4.2.7p79) 2010/11/07 Released by Harlan Stenn <stenn@ntp.org>
* Correct frequency estimate with no drift file, from David Mills.
(4.2.7p78) 2010/11/04 Released by Harlan Stenn <stenn@ntp.org>
addrinfo CreateAddrinfo(sockaddr_u* sock) {
addrinfo a;
a.ai_family = sock->sa.sa_family;
- if (a.ai_family == AF_INET) {
- a.ai_addrlen = sizeof(sockaddr_in);
- } else {
- a.ai_addrlen = sizeof(sockaddr_in6);
- }
+ a.ai_addrlen = SIZEOF_SOCKADDR(a.ai_family);
a.ai_addr = &sock->sa;
return a;
}
TEST_F(utilitiesTest, IPv6Address) {
const struct in6_addr address = {
- 0x20, 0x01, 0x0d, 0xb8,
- 0x85, 0xa3, 0x08, 0xd3,
- 0x13, 0x19, 0x8a, 0x2e,
- 0x03, 0x70, 0x73, 0x34
- };
+ 0x20, 0x01, 0x0d, 0xb8,
+ 0x85, 0xa3, 0x08, 0xd3,
+ 0x13, 0x19, 0x8a, 0x2e,
+ 0x03, 0x70, 0x73, 0x34
+ };
+ const char * expected = "2001:db8:85a3:8d3:1319:8a2e:370:7334";
+ sockaddr_u input;
+ addrinfo inputA;
- const char* expected =
- "2001:db8:85a3:8d3:1319:8a2e:370:7334";
-
- sockaddr_u input;
input.sa6.sin6_family = AF_INET6;
input.sa6.sin6_addr = address;
-
- addrinfo inputA = CreateAddrinfo(&input);
-
EXPECT_STREQ(expected, ss_to_str(&input));
+
+ inputA = CreateAddrinfo(&input);
EXPECT_STREQ(expected, addrinfo_to_str(&inputA));
}
*/
char *
addrinfo_to_str (
- struct addrinfo *addr
- )
+ struct addrinfo *addr
+ )
{
- char *buf = (char *) emalloc(sizeof(char) * INET6_ADDRSTRLEN);
-
- getnameinfo(addr->ai_addr, addr->ai_addrlen, buf,
- INET6_ADDRSTRLEN, NULL, 0, NI_NUMERICHOST);
+ sockaddr_u s;
+
+ memset(&s, 0, sizeof(s));
+ memcpy(&s, addr->ai_addr, min(sizeof(s), addr->ai_addrlen));
- return buf;
+ return ss_to_str(&s);
}
/* Convert a sockaddr_u to a string containing the address in
*/
char *
ss_to_str (
- sockaddr_u *saddr
- )
+ sockaddr_u *saddr
+ )
{
- char *buf = (char *) emalloc(sizeof(char) * INET6_ADDRSTRLEN);
-
- getnameinfo(&saddr->sa, SOCKLEN(saddr), buf,
- INET6_ADDRSTRLEN, NULL, 0, NI_NUMERICHOST);
-
+ char * buf;
+
+ buf = emalloc(INET6_ADDRSTRLEN);
+ strncpy(buf, stoa(saddr), INET6_ADDRSTRLEN);
return buf;
}