1 /* $NetBSD: netof.c,v 1.4 2024/08/18 20:47:27 christos Exp $ */ 2 3 #include "config.h" 4 5 #include "ntp_stdlib.h" 6 #include "ntp_calendar.h" 7 8 #include "unity.h" 9 10 #include "sockaddrtest.h" 11 12 13 void setUp(void); 14 void test_ClassCAddress(void); 15 void test_IPv6Address(void); 16 17 18 void 19 setUp(void) 20 { 21 init_lib(); 22 23 return; 24 } 25 26 27 void 28 test_ClassCAddress(void) 29 { 30 sockaddr_u input = CreateSockaddr4("192.0.2.255", NTP_PORT); 31 sockaddr_u expected = CreateSockaddr4("192.0.2.0", NTP_PORT); 32 33 sockaddr_u* actual = netof(&input); 34 35 TEST_ASSERT_TRUE(actual != NULL); 36 TEST_ASSERT_TRUE(IsEqual(expected, *actual)); 37 38 return; 39 } 40 41 42 void 43 test_IPv6Address(void) 44 { 45 /* IPv6 addresses are assumed to have 64-bit host- and 64-bit network parts. */ 46 const struct in6_addr input_address = { { { 47 0x20, 0x01, 0x0d, 0xb8, 48 0x85, 0xa3, 0x08, 0xd3, 49 0x13, 0x19, 0x8a, 0x2e, 50 0x03, 0x70, 0x73, 0x34 51 } } }; // 2001:0db8:85a3:08d3:1319:8a2e:0370:7334 52 53 const struct in6_addr expected_address = { { { 54 0x20, 0x01, 0x0d, 0xb8, 55 0x85, 0xa3, 0x08, 0xd3, 56 0x00, 0x00, 0x00, 0x00, 57 0x00, 0x00, 0x00, 0x00 58 } } }; // 2001:0db8:85a3:08d3:0000:0000:0000:0000 59 60 sockaddr_u input; 61 memset(&input, 0, sizeof(input)); 62 input.sa6.sin6_family = AF_INET6; 63 input.sa6.sin6_addr = input_address; 64 SET_PORT(&input, 3000); 65 66 sockaddr_u expected; 67 memset(&expected, 0, sizeof(expected)); 68 expected.sa6.sin6_family = AF_INET6; 69 expected.sa6.sin6_addr = expected_address; 70 SET_PORT(&expected, 3000); 71 72 sockaddr_u* actual = netof(&input); 73 74 TEST_ASSERT_TRUE(actual != NULL); 75 TEST_ASSERT_TRUE(IsEqual(expected, *actual)); 76 77 return; 78 } 79