1*eabc0478Schristos /* $NetBSD: netof.c,v 1.4 2024/08/18 20:47:27 christos Exp $ */ 2067f5680Schristos 3f17b710fSchristos #include "config.h" 4f17b710fSchristos 5f17b710fSchristos #include "ntp_stdlib.h" 6f17b710fSchristos #include "ntp_calendar.h" 7f17b710fSchristos 8f17b710fSchristos #include "unity.h" 9f17b710fSchristos 10f17b710fSchristos #include "sockaddrtest.h" 11f17b710fSchristos 12a6f3f22fSchristos 134c290c01Schristos void setUp(void); 14a6f3f22fSchristos void test_ClassCAddress(void); 15a6f3f22fSchristos void test_IPv6Address(void); 16a6f3f22fSchristos 17a6f3f22fSchristos 184c290c01Schristos void 194c290c01Schristos setUp(void) 204c290c01Schristos { 214c290c01Schristos init_lib(); 22a6f3f22fSchristos 234c290c01Schristos return; 244c290c01Schristos } 254c290c01Schristos 264c290c01Schristos 274c290c01Schristos void 284c290c01Schristos test_ClassCAddress(void) 294c290c01Schristos { 30f17b710fSchristos sockaddr_u input = CreateSockaddr4("192.0.2.255", NTP_PORT); 31f17b710fSchristos sockaddr_u expected = CreateSockaddr4("192.0.2.0", NTP_PORT); 32f17b710fSchristos 33f17b710fSchristos sockaddr_u* actual = netof(&input); 34f17b710fSchristos 35f17b710fSchristos TEST_ASSERT_TRUE(actual != NULL); 36f17b710fSchristos TEST_ASSERT_TRUE(IsEqual(expected, *actual)); 374c290c01Schristos 384c290c01Schristos return; 39f17b710fSchristos } 40f17b710fSchristos 414c290c01Schristos 424c290c01Schristos void 434c290c01Schristos test_IPv6Address(void) 444c290c01Schristos { 45f17b710fSchristos /* IPv6 addresses are assumed to have 64-bit host- and 64-bit network parts. */ 464c290c01Schristos const struct in6_addr input_address = { { { 47f17b710fSchristos 0x20, 0x01, 0x0d, 0xb8, 48f17b710fSchristos 0x85, 0xa3, 0x08, 0xd3, 49f17b710fSchristos 0x13, 0x19, 0x8a, 0x2e, 50f17b710fSchristos 0x03, 0x70, 0x73, 0x34 514c290c01Schristos } } }; // 2001:0db8:85a3:08d3:1319:8a2e:0370:7334 52f17b710fSchristos 534c290c01Schristos const struct in6_addr expected_address = { { { 54f17b710fSchristos 0x20, 0x01, 0x0d, 0xb8, 55f17b710fSchristos 0x85, 0xa3, 0x08, 0xd3, 56f17b710fSchristos 0x00, 0x00, 0x00, 0x00, 57f17b710fSchristos 0x00, 0x00, 0x00, 0x00 584c290c01Schristos } } }; // 2001:0db8:85a3:08d3:0000:0000:0000:0000 59f17b710fSchristos 60f17b710fSchristos sockaddr_u input; 6150c1baceSchristos memset(&input, 0, sizeof(input)); 62f17b710fSchristos input.sa6.sin6_family = AF_INET6; 63f17b710fSchristos input.sa6.sin6_addr = input_address; 64f17b710fSchristos SET_PORT(&input, 3000); 65f17b710fSchristos 66f17b710fSchristos sockaddr_u expected; 6750c1baceSchristos memset(&expected, 0, sizeof(expected)); 68f17b710fSchristos expected.sa6.sin6_family = AF_INET6; 69f17b710fSchristos expected.sa6.sin6_addr = expected_address; 70f17b710fSchristos SET_PORT(&expected, 3000); 71f17b710fSchristos 72f17b710fSchristos sockaddr_u* actual = netof(&input); 73f17b710fSchristos 74f17b710fSchristos TEST_ASSERT_TRUE(actual != NULL); 75f17b710fSchristos TEST_ASSERT_TRUE(IsEqual(expected, *actual)); 76f17b710fSchristos 774c290c01Schristos return; 784c290c01Schristos } 79