]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/ntp/tests/libntp/sockaddrtest.c
Upgrade NTP to 4.2.8p4.
[FreeBSD/releng/10.2.git] / contrib / ntp / tests / libntp / sockaddrtest.c
1
2 #include "config.h"
3 #include "ntp.h"
4 #include "ntp_stdlib.h"
5 #include "sockaddrtest.h"
6
7 sockaddr_u
8 CreateSockaddr4(const char* address, unsigned int port) {
9         sockaddr_u s;
10         s.sa4.sin_family = AF_INET;
11         s.sa4.sin_addr.s_addr = inet_addr(address);
12         SET_PORT(&s, port);
13
14         return s;
15 }
16
17
18 int
19 IsEqual(const sockaddr_u expected, const sockaddr_u actual) {
20         struct in_addr in;
21         struct in6_addr in6;
22
23         if (expected.sa.sa_family != actual.sa.sa_family) {
24                 printf("Expected sa_family: %d but got: %d", expected.sa.sa_family, actual.sa.sa_family);
25                 return FALSE;
26         }
27
28         if (actual.sa.sa_family == AF_INET) { // IPv4
29                 if (expected.sa4.sin_port == actual.sa4.sin_port &&
30                         memcmp(&expected.sa4.sin_addr, &actual.sa4.sin_addr,
31                                    sizeof( in )) == 0) {
32                         return TRUE;
33                 } else {
34                         printf("IPv4 comparision failed, expected: %s(%s) but was: %s(%s)",inet_ntoa(expected.sa4.sin_addr), socktoa(&expected), inet_ntoa(actual.sa4.sin_addr),socktoa(&actual));
35                         return FALSE;
36                 }
37         } else if (actual.sa.sa_family == AF_INET6) { //IPv6
38                 if (expected.sa6.sin6_port == actual.sa6.sin6_port &&
39                         memcmp(&expected.sa6.sin6_addr, &actual.sa6.sin6_addr,
40                                    sizeof(in6)) == 0) {
41                         return TRUE;
42                 } else {
43                         printf("IPv6 comparision failed");
44                         return FALSE;
45                 }
46         } else { // Unknown family
47                 printf("Unknown sa_family: %d",actual.sa.sa_family);
48                 return FALSE;
49         }
50 }
51