1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <stdint.h>
4 #include <inttypes.h>
5 #include <ctype.h>
6 
7 #include "test-common.h"
8 
9 #include <libmy/ubuf.h>
10 #include <wdns.h>
11 
12 #define NAME "test-str_to_rrtype"
13 
14 static struct u16str {
15     uint16_t u16;
16     const char *str;
17 } rrtypes[] = {
18 	{ WDNS_TYPE_A, "A" },
19 	{ WDNS_TYPE_A6, "A6" },
20 	{ WDNS_TYPE_AAAA, "AAAA" },
21 	{ WDNS_TYPE_AFSDB, "AFSDB" },
22 	{ WDNS_TYPE_ANY, "ANY" },
23 	{ WDNS_TYPE_APL, "APL" },
24 	{ WDNS_TYPE_ATMA, "ATMA" },
25 	{ WDNS_TYPE_AXFR, "AXFR" },
26 	{ WDNS_TYPE_CAA, "CAA" },
27 	{ WDNS_TYPE_CDNSKEY, "CDNSKEY" },
28 	{ WDNS_TYPE_CDS, "CDS" },
29 	{ WDNS_TYPE_CERT, "CERT" },
30 	{ WDNS_TYPE_CNAME, "CNAME" },
31 	{ WDNS_TYPE_CSYNC, "CSYNC" },
32 	{ WDNS_TYPE_DHCID, "DHCID" },
33 	{ WDNS_TYPE_DLV, "DLV" },
34 	{ WDNS_TYPE_DNAME, "DNAME" },
35 	{ WDNS_TYPE_DNSKEY, "DNSKEY" },
36 	{ WDNS_TYPE_DS, "DS" },
37 	{ WDNS_TYPE_EID, "EID" },
38 	{ WDNS_TYPE_EUI48, "EUI48" },
39 	{ WDNS_TYPE_EUI64, "EUI64" },
40 	{ WDNS_TYPE_GID, "GID" },
41 	{ WDNS_TYPE_GPOS, "GPOS" },
42 	{ WDNS_TYPE_HINFO, "HINFO" },
43 	{ WDNS_TYPE_HIP, "HIP" },
44 	{ WDNS_TYPE_IPSECKEY, "IPSECKEY" },
45 	{ WDNS_TYPE_ISDN, "ISDN" },
46 	{ WDNS_TYPE_IXFR, "IXFR" },
47 	{ WDNS_TYPE_KEY, "KEY" },
48 	{ WDNS_TYPE_KX, "KX" },
49 	{ WDNS_TYPE_L32, "L32" },
50 	{ WDNS_TYPE_L64, "L64" },
51 	{ WDNS_TYPE_LOC, "LOC" },
52 	{ WDNS_TYPE_LP, "LP" },
53 	{ WDNS_TYPE_MAILA, "MAILA" },
54 	{ WDNS_TYPE_MAILB, "MAILB" },
55 	{ WDNS_TYPE_MB, "MB" },
56 	{ WDNS_TYPE_MD, "MD" },
57 	{ WDNS_TYPE_MF, "MF" },
58 	{ WDNS_TYPE_MG, "MG" },
59 	{ WDNS_TYPE_MINFO, "MINFO" },
60 	{ WDNS_TYPE_MR, "MR" },
61 	{ WDNS_TYPE_MX, "MX" },
62 	{ WDNS_TYPE_NAPTR, "NAPTR" },
63 	{ WDNS_TYPE_NID, "NID" },
64 	{ WDNS_TYPE_NIMLOC, "NIMLOC" },
65 	{ WDNS_TYPE_NINFO, "NINFO" },
66 	{ WDNS_TYPE_NS, "NS" },
67 	{ WDNS_TYPE_NSAP, "NSAP" },
68 	{ WDNS_TYPE_NSAP_PTR, "NSAP-PTR" },
69 	{ WDNS_TYPE_NSEC, "NSEC" },
70 	{ WDNS_TYPE_NSEC3, "NSEC3" },
71 	{ WDNS_TYPE_NSEC3PARAM, "NSEC3PARAM" },
72 	{ WDNS_TYPE_NULL, "NULL" },
73 	{ WDNS_TYPE_NXT, "NXT" },
74 	{ WDNS_TYPE_OPENPGPKEY, "OPENPGPKEY" },
75 	{ WDNS_TYPE_OPT, "OPT" },
76 	{ WDNS_TYPE_PTR, "PTR" },
77 	{ WDNS_TYPE_PX, "PX" },
78 	{ WDNS_TYPE_RKEY, "RKEY" },
79 	{ WDNS_TYPE_RP, "RP" },
80 	{ WDNS_TYPE_RRSIG, "RRSIG" },
81 	{ WDNS_TYPE_RT, "RT" },
82 	{ WDNS_TYPE_SIG, "SIG" },
83 	{ WDNS_TYPE_SINK, "SINK" },
84 	{ WDNS_TYPE_SOA, "SOA" },
85 	{ WDNS_TYPE_SPF, "SPF" },
86 	{ WDNS_TYPE_SRV, "SRV" },
87 	{ WDNS_TYPE_SSHFP, "SSHFP" },
88 	{ WDNS_TYPE_TA, "TA" },
89 	{ WDNS_TYPE_TALINK, "TALINK" },
90 	{ WDNS_TYPE_TKEY, "TKEY" },
91 	{ WDNS_TYPE_TLSA, "TLSA" },
92 	{ WDNS_TYPE_TSIG, "TSIG" },
93 	{ WDNS_TYPE_TXT, "TXT" },
94 	{ WDNS_TYPE_UID, "UID" },
95 	{ WDNS_TYPE_UINFO, "UINFO" },
96 	{ WDNS_TYPE_UNSPEC, "UNSPEC" },
97 	{ WDNS_TYPE_URI, "URI" },
98 	{ WDNS_TYPE_WKS, "WKS" },
99 	{ WDNS_TYPE_X25, "X25" },
100 };
101 
102 #define num_rrtypes (sizeof(rrtypes) / sizeof(struct u16str))
103 
104 static size_t
test_str_to_rrtype(void)105 test_str_to_rrtype(void) {
106 	size_t n;
107 	size_t failures = 0;
108 
109 	for(n = 0; n < num_rrtypes; n++) {
110 		uint16_t rrtype;
111 		rrtype = wdns_str_to_rrtype(rrtypes[n].str);
112 		if (rrtype != rrtypes[n].u16) {
113 			fprintf (stderr, "FAIL: %s %d != %d\n", rrtypes[n].str, rrtype, rrtypes[n].u16);
114 			failures++;
115 		} else {
116 			fprintf (stderr, "PASS: %s = %d\n", rrtypes[n].str, rrtype);
117 		}
118 	}
119 
120 	return failures;
121 }
122 
main(void)123 int main (void) {
124 	int ret = 0;
125 
126 	ret |= check(test_str_to_rrtype(), "test_cname", NAME);
127 
128 	if (ret)
129 		return (EXIT_FAILURE);
130 	return (EXIT_SUCCESS);
131 }
132