sockaddrtest.c revision 290001
1 2#include "config.h" 3#include "ntp.h" 4#include "ntp_stdlib.h" 5#include "sockaddrtest.h" 6 7sockaddr_u 8CreateSockaddr4(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 18int 19IsEqual(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 52