Home | History | Annotate | Line # | Download | only in libntp
decodenetnum.c revision 1.1.1.3.2.2
      1 /*	$NetBSD: decodenetnum.c,v 1.1.1.3.2.2 2015/11/07 22:26:46 snj Exp $	*/
      2 
      3 #include "config.h"
      4 #include "ntp_stdlib.h"
      5 #include "sockaddrtest.h"
      6 
      7 #include "unity.h"
      8 
      9 extern void test_IPv4AddressOnly(void);
     10 extern void test_IPv4AddressWithPort(void);
     11 //#ifdef ISC_PLATFORM_HAVEIPV6
     12 extern void test_IPv6AddressOnly(void);
     13 extern void test_IPv6AddressWithPort(void);
     14 //#endif /* ISC_PLATFORM_HAVEIPV6 */
     15 extern void test_IllegalAddress(void);
     16 extern void test_IllegalCharInPort(void);
     17 
     18 
     19 void
     20 test_IPv4AddressOnly(void) {
     21 	const char *str = "192.0.2.1";
     22 	sockaddr_u actual;
     23 
     24 	sockaddr_u expected;
     25 	expected.sa4.sin_family = AF_INET;
     26 	expected.sa4.sin_addr.s_addr = inet_addr("192.0.2.1");
     27 	SET_PORT(&expected, NTP_PORT);
     28 
     29 	TEST_ASSERT_TRUE(decodenetnum(str, &actual));
     30 	TEST_ASSERT_TRUE(IsEqual(expected, actual));
     31 }
     32 
     33 void
     34 test_IPv4AddressWithPort(void) {
     35 	const char *str = "192.0.2.2:2000";
     36 	sockaddr_u actual;
     37 
     38 	sockaddr_u expected;
     39 	expected.sa4.sin_family = AF_INET;
     40 	expected.sa4.sin_addr.s_addr = inet_addr("192.0.2.2");
     41 	SET_PORT(&expected, 2000);
     42 
     43 	TEST_ASSERT_TRUE(decodenetnum(str, &actual));
     44 	TEST_ASSERT_TRUE(IsEqual(expected, actual));
     45 }
     46 
     47 
     48 void
     49 test_IPv6AddressOnly(void) {
     50 
     51 //#ifdef ISC_PLATFORM_HAVEIPV6 //looks like HAVEIPV6 checks if system has IPV6 capabilies. WANTIPV6 can be changed with build --disable-ipv6
     52 #ifdef ISC_PLATFORM_WANTIPV6
     53 	const struct in6_addr address = {
     54 		0x20, 0x01, 0x0d, 0xb8,
     55         0x85, 0xa3, 0x08, 0xd3,
     56         0x13, 0x19, 0x8a, 0x2e,
     57         0x03, 0x70, 0x73, 0x34
     58 	};
     59 
     60 	const char *str = "2001:0db8:85a3:08d3:1319:8a2e:0370:7334";
     61 	sockaddr_u actual;
     62 
     63 	sockaddr_u expected;
     64 	expected.sa6.sin6_family = AF_INET6;
     65 	expected.sa6.sin6_addr = address;
     66 	SET_PORT(&expected, NTP_PORT);
     67 
     68 	TEST_ASSERT_TRUE(decodenetnum(str, &actual));
     69 	TEST_ASSERT_TRUE(IsEqual(expected, actual));
     70 
     71 #else
     72 	TEST_IGNORE_MESSAGE("IPV6 disabled in build, skipping.");
     73 #endif /* ISC_PLATFORM_HAVEIPV6 */
     74 
     75 
     76 }
     77 
     78 
     79 
     80 void
     81 test_IPv6AddressWithPort(void) {
     82 
     83 #ifdef ISC_PLATFORM_WANTIPV6
     84 
     85 	const struct in6_addr address = {
     86 		0x20, 0x01, 0x0d, 0xb8,
     87         0x85, 0xa3, 0x08, 0xd3,
     88         0x13, 0x19, 0x8a, 0x2e,
     89         0x03, 0x70, 0x73, 0x34
     90 	};
     91 
     92 	const char *str = "[2001:0db8:85a3:08d3:1319:8a2e:0370:7334]:3000";
     93 	sockaddr_u actual;
     94 
     95 	sockaddr_u expected;
     96 	expected.sa6.sin6_family = AF_INET6;
     97 	expected.sa6.sin6_addr = address;
     98 	SET_PORT(&expected, 3000);
     99 
    100 	TEST_ASSERT_TRUE(decodenetnum(str, &actual));
    101 	TEST_ASSERT_TRUE(IsEqual(expected, actual));
    102 
    103 #else
    104 	TEST_IGNORE_MESSAGE("IPV6 disabled in build, skipping.");
    105 #endif /* ISC_PLATFORM_HAVEIPV6 */
    106 }
    107 
    108 
    109 void
    110 test_IllegalAddress(void) {
    111 	const char *str = "192.0.2.270:2000";
    112 	sockaddr_u actual;
    113 
    114 	TEST_ASSERT_FALSE(decodenetnum(str, &actual));
    115 }
    116 
    117 void
    118 test_IllegalCharInPort(void) {
    119 	/* An illegal port does not make the decodenetnum fail, but instead
    120 	 * makes it use the standard port.
    121 	 */
    122 	const char *str = "192.0.2.1:a700";
    123 	sockaddr_u actual;
    124 
    125 	sockaddr_u expected;
    126 	expected.sa4.sin_family = AF_INET;
    127 	expected.sa4.sin_addr.s_addr = inet_addr("192.0.2.1");
    128 	SET_PORT(&expected, NTP_PORT);
    129 
    130 	TEST_ASSERT_TRUE(decodenetnum(str, &actual));
    131 	TEST_ASSERT_TRUE(IsEqual(expected, actual));
    132 }
    133