diff options
Diffstat (limited to 'src/lib/libc/net/res_debug_syms.c')
-rw-r--r-- | src/lib/libc/net/res_debug_syms.c | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/src/lib/libc/net/res_debug_syms.c b/src/lib/libc/net/res_debug_syms.c new file mode 100644 index 0000000000..7e7d22c914 --- /dev/null +++ b/src/lib/libc/net/res_debug_syms.c | |||
@@ -0,0 +1,189 @@ | |||
1 | /* $OpenBSD: res_debug_syms.c,v 1.1 2005/08/06 20:30:04 espie Exp $ */ | ||
2 | |||
3 | /* | ||
4 | * ++Copyright++ 1985, 1990, 1993 | ||
5 | * - | ||
6 | * Copyright (c) 1985, 1990, 1993 | ||
7 | * The Regents of the University of California. All rights reserved. | ||
8 | * | ||
9 | * Redistribution and use in source and binary forms, with or without | ||
10 | * modification, are permitted provided that the following conditions | ||
11 | * are met: | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * 2. Redistributions in binary form must reproduce the above copyright | ||
15 | * notice, this list of conditions and the following disclaimer in the | ||
16 | * documentation and/or other materials provided with the distribution. | ||
17 | * 3. Neither the name of the University nor the names of its contributors | ||
18 | * may be used to endorse or promote products derived from this software | ||
19 | * without specific prior written permission. | ||
20 | * | ||
21 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND | ||
22 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
23 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
24 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | ||
25 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
26 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
27 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
28 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
29 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
30 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
31 | * SUCH DAMAGE. | ||
32 | * - | ||
33 | * Portions Copyright (c) 1993 by Digital Equipment Corporation. | ||
34 | * | ||
35 | * Permission to use, copy, modify, and distribute this software for any | ||
36 | * purpose with or without fee is hereby granted, provided that the above | ||
37 | * copyright notice and this permission notice appear in all copies, and that | ||
38 | * the name of Digital Equipment Corporation not be used in advertising or | ||
39 | * publicity pertaining to distribution of the document or software without | ||
40 | * specific, written prior permission. | ||
41 | * | ||
42 | * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL | ||
43 | * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES | ||
44 | * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT | ||
45 | * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | ||
46 | * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR | ||
47 | * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS | ||
48 | * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS | ||
49 | * SOFTWARE. | ||
50 | * - | ||
51 | * Portions Copyright (c) 1995 by International Business Machines, Inc. | ||
52 | * | ||
53 | * International Business Machines, Inc. (hereinafter called IBM) grants | ||
54 | * permission under its copyrights to use, copy, modify, and distribute this | ||
55 | * Software with or without fee, provided that the above copyright notice and | ||
56 | * all paragraphs of this notice appear in all copies, and that the name of IBM | ||
57 | * not be used in connection with the marketing of any product incorporating | ||
58 | * the Software or modifications thereof, without specific, written prior | ||
59 | * permission. | ||
60 | * | ||
61 | * To the extent it has a right to do so, IBM grants an immunity from suit | ||
62 | * under its patents, if any, for the use, sale or manufacture of products to | ||
63 | * the extent that such products are used for performing Domain Name System | ||
64 | * dynamic updates in TCP/IP networks by means of the Software. No immunity is | ||
65 | * granted for any product per se or for any other function of any product. | ||
66 | * | ||
67 | * THE SOFTWARE IS PROVIDED "AS IS", AND IBM DISCLAIMS ALL WARRANTIES, | ||
68 | * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A | ||
69 | * PARTICULAR PURPOSE. IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, | ||
70 | * DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER ARISING | ||
71 | * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE, EVEN | ||
72 | * IF IBM IS APPRISED OF THE POSSIBILITY OF SUCH DAMAGES. | ||
73 | * --Copyright-- | ||
74 | */ | ||
75 | |||
76 | |||
77 | #include <sys/types.h> | ||
78 | #include <netinet/in.h> | ||
79 | #include <arpa/nameser.h> | ||
80 | |||
81 | #include <resolv.h> | ||
82 | #include <stdio.h> | ||
83 | |||
84 | /* | ||
85 | * Names of RR classes and qclasses. Classes and qclasses are the same, except | ||
86 | * that C_ANY is a qclass but not a class. (You can ask for records of class | ||
87 | * C_ANY, but you can't have any records of that class in the database.) | ||
88 | */ | ||
89 | const struct res_sym __p_class_syms[] = { | ||
90 | {C_IN, "IN"}, | ||
91 | {C_CHAOS, "CHAOS"}, | ||
92 | {C_HS, "HS"}, | ||
93 | {C_HS, "HESIOD"}, | ||
94 | {C_ANY, "ANY"}, | ||
95 | {C_IN, (char *)0} | ||
96 | }; | ||
97 | |||
98 | /* | ||
99 | * Names of RR types and qtypes. Types and qtypes are the same, except | ||
100 | * that T_ANY is a qtype but not a type. (You can ask for records of type | ||
101 | * T_ANY, but you can't have any records of that type in the database.) | ||
102 | */ | ||
103 | const struct res_sym __p_type_syms[] = { | ||
104 | {T_A, "A", "address"}, | ||
105 | {T_NS, "NS", "name server"}, | ||
106 | {T_MD, "MD", "mail destination (deprecated)"}, | ||
107 | {T_MF, "MF", "mail forwarder (deprecated)"}, | ||
108 | {T_CNAME, "CNAME", "canonical name"}, | ||
109 | {T_SOA, "SOA", "start of authority"}, | ||
110 | {T_MB, "MB", "mailbox"}, | ||
111 | {T_MG, "MG", "mail group member"}, | ||
112 | {T_MR, "MR", "mail rename"}, | ||
113 | {T_NULL, "NULL", "null"}, | ||
114 | {T_WKS, "WKS", "well-known service (deprecated)"}, | ||
115 | {T_PTR, "PTR", "domain name pointer"}, | ||
116 | {T_HINFO, "HINFO", "host information"}, | ||
117 | {T_MINFO, "MINFO", "mailbox information"}, | ||
118 | {T_MX, "MX", "mail exchanger"}, | ||
119 | {T_TXT, "TXT", "text"}, | ||
120 | {T_RP, "RP", "responsible person"}, | ||
121 | {T_AFSDB, "AFSDB", "DCE or AFS server"}, | ||
122 | {T_X25, "X25", "X25 address"}, | ||
123 | {T_ISDN, "ISDN", "ISDN address"}, | ||
124 | {T_RT, "RT", "router"}, | ||
125 | {T_NSAP, "NSAP", "nsap address"}, | ||
126 | {T_NSAP_PTR, "NSAP_PTR", "domain name pointer"}, | ||
127 | {T_SIG, "SIG", "signature"}, | ||
128 | {T_KEY, "KEY", "key"}, | ||
129 | {T_PX, "PX", "mapping information"}, | ||
130 | {T_GPOS, "GPOS", "geographical position (withdrawn)"}, | ||
131 | {T_AAAA, "AAAA", "IPv6 address"}, | ||
132 | {T_LOC, "LOC", "location"}, | ||
133 | {T_NXT, "NXT", "next valid name (unimplemented)"}, | ||
134 | {T_EID, "EID", "endpoint identifier (unimplemented)"}, | ||
135 | {T_NIMLOC, "NIMLOC", "NIMROD locator (unimplemented)"}, | ||
136 | {T_SRV, "SRV", "server selection"}, | ||
137 | {T_ATMA, "ATMA", "ATM address (unimplemented)"}, | ||
138 | {T_IXFR, "IXFR", "incremental zone transfer"}, | ||
139 | {T_AXFR, "AXFR", "zone transfer"}, | ||
140 | {T_MAILB, "MAILB", "mailbox-related data (deprecated)"}, | ||
141 | {T_MAILA, "MAILA", "mail agent (deprecated)"}, | ||
142 | {T_UINFO, "UINFO", "user information (nonstandard)"}, | ||
143 | {T_UID, "UID", "user ID (nonstandard)"}, | ||
144 | {T_GID, "GID", "group ID (nonstandard)"}, | ||
145 | {T_NAPTR, "NAPTR", "URN Naming Authority"}, | ||
146 | #ifdef ALLOW_T_UNSPEC | ||
147 | {T_UNSPEC, "UNSPEC", "unspecified data (nonstandard)"}, | ||
148 | #endif /* ALLOW_T_UNSPEC */ | ||
149 | {T_ANY, "ANY", "\"any\""}, | ||
150 | {0, NULL, NULL} | ||
151 | }; | ||
152 | |||
153 | const char * | ||
154 | __sym_ntos(const struct res_sym *syms, int number, int *success) | ||
155 | { | ||
156 | static char unname[20]; | ||
157 | |||
158 | for (; syms->name != 0; syms++) { | ||
159 | if (number == syms->number) { | ||
160 | if (success) | ||
161 | *success = 1; | ||
162 | return (syms->name); | ||
163 | } | ||
164 | } | ||
165 | |||
166 | snprintf(unname, sizeof unname, "%d", number); | ||
167 | if (success) | ||
168 | *success = 0; | ||
169 | return (unname); | ||
170 | } | ||
171 | |||
172 | /* | ||
173 | * Return a string for the type | ||
174 | */ | ||
175 | const char * | ||
176 | __p_type(int type) | ||
177 | { | ||
178 | return (__sym_ntos (__p_type_syms, type, (int *)0)); | ||
179 | } | ||
180 | |||
181 | /* | ||
182 | * Return a mnemonic for class | ||
183 | */ | ||
184 | const char * | ||
185 | __p_class(int class) | ||
186 | { | ||
187 | return (__sym_ntos (__p_class_syms, class, (int *)0)); | ||
188 | } | ||
189 | |||