netof.c revision 1.1.1.5
1/* $NetBSD: netof.c,v 1.1.1.5 2016/01/08 21:21:33 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 13void setUp(void); 14void test_ClassBAddress(void); 15void test_ClassCAddress(void); 16void test_ClassAAddress(void); 17void test_IPv6Address(void); 18 19 20void 21setUp(void) 22{ 23 init_lib(); 24 25 return; 26} 27 28 29void 30test_ClassBAddress(void) 31{ 32 sockaddr_u input = CreateSockaddr4("172.16.2.1", NTP_PORT); 33 sockaddr_u expected = CreateSockaddr4("172.16.0.0", NTP_PORT); 34 35 sockaddr_u* actual = netof(&input); 36 37 TEST_ASSERT_TRUE(actual != NULL); 38 TEST_ASSERT_TRUE(IsEqual(expected, *actual)); 39 40 return; 41} 42 43void 44test_ClassCAddress(void) 45{ 46 sockaddr_u input = CreateSockaddr4("192.0.2.255", NTP_PORT); 47 sockaddr_u expected = CreateSockaddr4("192.0.2.0", NTP_PORT); 48 49 sockaddr_u* actual = netof(&input); 50 51 TEST_ASSERT_TRUE(actual != NULL); 52 TEST_ASSERT_TRUE(IsEqual(expected, *actual)); 53 54 return; 55} 56 57 58void 59test_ClassAAddress(void) 60{ 61 /* Class A addresses are assumed to be classless, 62 * thus the same address should be returned. 63 */ 64 sockaddr_u input = CreateSockaddr4("10.20.30.40", NTP_PORT); 65 sockaddr_u expected = CreateSockaddr4("10.20.30.40", NTP_PORT); 66 67 sockaddr_u* actual = netof(&input); 68 69 TEST_ASSERT_TRUE(actual != NULL); 70 TEST_ASSERT_TRUE(IsEqual(expected, *actual)); 71 72 return; 73} 74 75void 76test_IPv6Address(void) 77{ 78 /* IPv6 addresses are assumed to have 64-bit host- and 64-bit network parts. */ 79 const struct in6_addr input_address = { { { 80 0x20, 0x01, 0x0d, 0xb8, 81 0x85, 0xa3, 0x08, 0xd3, 82 0x13, 0x19, 0x8a, 0x2e, 83 0x03, 0x70, 0x73, 0x34 84 } } }; // 2001:0db8:85a3:08d3:1319:8a2e:0370:7334 85 86 const struct in6_addr expected_address = { { { 87 0x20, 0x01, 0x0d, 0xb8, 88 0x85, 0xa3, 0x08, 0xd3, 89 0x00, 0x00, 0x00, 0x00, 90 0x00, 0x00, 0x00, 0x00 91 } } }; // 2001:0db8:85a3:08d3:0000:0000:0000:0000 92 93 sockaddr_u input; 94 input.sa6.sin6_family = AF_INET6; 95 input.sa6.sin6_addr = input_address; 96 SET_PORT(&input, 3000); 97 98 sockaddr_u expected; 99 expected.sa6.sin6_family = AF_INET6; 100 expected.sa6.sin6_addr = expected_address; 101 SET_PORT(&expected, 3000); 102 103 sockaddr_u* actual = netof(&input); 104 105 TEST_ASSERT_TRUE(actual != NULL); 106 TEST_ASSERT_TRUE(IsEqual(expected, *actual)); 107 108 return; 109} 110