1290001Sglebius 2290001Sglebius#include "config.h" 3290001Sglebius#include "ntp.h" 4290001Sglebius#include "ntp_stdlib.h" 5290001Sglebius#include "sockaddrtest.h" 6290001Sglebius 7290001Sglebiussockaddr_u 8290001SglebiusCreateSockaddr4(const char* address, unsigned int port) { 9290001Sglebius sockaddr_u s; 10290001Sglebius s.sa4.sin_family = AF_INET; 11290001Sglebius s.sa4.sin_addr.s_addr = inet_addr(address); 12290001Sglebius SET_PORT(&s, port); 13290001Sglebius 14290001Sglebius return s; 15290001Sglebius} 16290001Sglebius 17290001Sglebius 18290001Sglebiusint 19290001SglebiusIsEqual(const sockaddr_u expected, const sockaddr_u actual) { 20290001Sglebius struct in_addr in; 21290001Sglebius struct in6_addr in6; 22290001Sglebius 23290001Sglebius if (expected.sa.sa_family != actual.sa.sa_family) { 24290001Sglebius printf("Expected sa_family: %d but got: %d", expected.sa.sa_family, actual.sa.sa_family); 25290001Sglebius return FALSE; 26290001Sglebius } 27290001Sglebius 28290001Sglebius if (actual.sa.sa_family == AF_INET) { // IPv4 29290001Sglebius if (expected.sa4.sin_port == actual.sa4.sin_port && 30290001Sglebius memcmp(&expected.sa4.sin_addr, &actual.sa4.sin_addr, 31290001Sglebius sizeof( in )) == 0) { 32290001Sglebius return TRUE; 33290001Sglebius } else { 34290001Sglebius 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)); 35290001Sglebius return FALSE; 36290001Sglebius } 37290001Sglebius } else if (actual.sa.sa_family == AF_INET6) { //IPv6 38290001Sglebius if (expected.sa6.sin6_port == actual.sa6.sin6_port && 39290001Sglebius memcmp(&expected.sa6.sin6_addr, &actual.sa6.sin6_addr, 40290001Sglebius sizeof(in6)) == 0) { 41290001Sglebius return TRUE; 42290001Sglebius } else { 43290001Sglebius printf("IPv6 comparision failed"); 44290001Sglebius return FALSE; 45290001Sglebius } 46290001Sglebius } else { // Unknown family 47290001Sglebius printf("Unknown sa_family: %d",actual.sa.sa_family); 48290001Sglebius return FALSE; 49290001Sglebius } 50290001Sglebius} 51290001Sglebius 52