xref: /netbsd-src/external/bsd/ntp/dist/tests/libntp/netof.c (revision eabc0478de71e4e011a5b4e0392741e01d491794)
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