ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/src/vendor/ldns/dist/ldns/host2str.h
Revision: 11065
Committed: Tue Jun 19 13:21:16 2018 UTC (5 years, 10 months ago) by laffer1
Content type: text/plain
File size: 31516 byte(s)
Log Message:
add ldns

File Contents

# Content
1 /**
2 * host2str.h - txt presentation of RRs
3 *
4 * a Net::DNS like library for C
5 *
6 * (c) NLnet Labs, 2005-2006
7 *
8 * See the file LICENSE for the license
9 */
10
11 /**
12 * \file
13 *
14 * Contains functions to translate the main structures to their text
15 * representation, as well as functions to print them.
16 */
17
18 #ifndef LDNS_HOST2STR_H
19 #define LDNS_HOST2STR_H
20
21 #include <ldns/common.h>
22 #include <ldns/error.h>
23 #include <ldns/rr.h>
24 #include <ldns/rdata.h>
25 #include <ldns/packet.h>
26 #include <ldns/buffer.h>
27 #include <ldns/resolver.h>
28 #include <ldns/zone.h>
29 #include <ctype.h>
30
31 #include "ldns/util.h"
32
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36
37 #define LDNS_APL_IP4 1
38 #define LDNS_APL_IP6 2
39 #define LDNS_APL_MASK 0x7f
40 #define LDNS_APL_NEGATION 0x80
41
42 /**
43 * Represent a NULL pointer (instead of a pointer to a ldns_rr as "; (null)"
44 * as opposed to outputting nothing at all in such a case.
45 */
46 /* Flag Name Flag Nr. Has data associated
47 ---------------------------------------------------------------------*/
48 #define LDNS_COMMENT_NULLS (1 << 0)
49 /** Show key id with DNSKEY RR's as comment */
50 #define LDNS_COMMENT_KEY_ID (1 << 1)
51 /** Show if a DNSKEY is a ZSK or KSK as comment */
52 #define LDNS_COMMENT_KEY_TYPE (1 << 2)
53 /** Show DNSKEY key size as comment */
54 #define LDNS_COMMENT_KEY_SIZE (1 << 3)
55 /** Provide bubblebabble representation for DS RR's as comment */
56 #define LDNS_COMMENT_BUBBLEBABBLE (1 << 4)
57 /** Show when a NSEC3 RR has the optout flag set as comment */
58 #define LDNS_COMMENT_FLAGS (1 << 5)
59 /** Show the unhashed owner and next owner names for NSEC3 RR's as comment */
60 #define LDNS_COMMENT_NSEC3_CHAIN (1 << 6) /* yes */
61 /** Print mark up */
62 #define LDNS_COMMENT_LAYOUT (1 << 7)
63 /** Also comment KEY_ID with RRSIGS **/
64 #define LDNS_COMMENT_RRSIGS (1 << 8)
65 #define LDNS_FMT_ZEROIZE_RRSIGS (1 << 9)
66 #define LDNS_FMT_PAD_SOA_SERIAL (1 << 10)
67 #define LDNS_FMT_RFC3597 (1 << 11) /* yes */
68
69 #define LDNS_FMT_FLAGS_WITH_DATA 2
70
71 /** Show key id, type and size as comment for DNSKEY RR's */
72 #define LDNS_COMMENT_KEY (LDNS_COMMENT_KEY_ID \
73 |LDNS_COMMENT_KEY_TYPE\
74 |LDNS_COMMENT_KEY_SIZE)
75
76 /**
77 * Output format specifier
78 *
79 * Determines how Packets, Resource Records and Resource record data fiels are
80 * formatted when printing or converting to string.
81 * Currently it is only used to specify what aspects of a Resource Record are
82 * annotated in the comment section of the textual representation the record.
83 * This is speciefed with flags and potential exra data (such as for example
84 * a lookup map of hashes to real names for annotation NSEC3 records).
85 */
86 struct ldns_struct_output_format
87 {
88 /** Specification of how RR's should be formatted in text */
89 int flags;
90 /** Potential extra data to be used with formatting RR's in text */
91 void *data;
92 };
93 typedef struct ldns_struct_output_format ldns_output_format;
94
95 /**
96 * Output format struct with additional data for flags that use them.
97 * This struct may not be initialized directly. Use ldns_output_format_init
98 * to initialize.
99 */
100 struct ldns_struct_output_format_storage
101 { int flags;
102 ldns_rbtree_t* hashmap; /* for LDNS_COMMENT_NSEC3_CHAIN */
103 ldns_rdf* bitmap; /* for LDNS_FMT_RFC3597 */
104 };
105 typedef struct ldns_struct_output_format_storage ldns_output_format_storage;
106
107 /**
108 * Standard output format record that disables commenting in the textual
109 * representation of Resource Records completely.
110 */
111 extern const ldns_output_format *ldns_output_format_nocomments;
112 /**
113 * Standard output format record that annotated only DNSKEY RR's with commenti
114 * text.
115 */
116 extern const ldns_output_format *ldns_output_format_onlykeyids;
117 /**
118 * The default output format record. Same as ldns_output_format_onlykeyids.
119 */
120 extern const ldns_output_format *ldns_output_format_default;
121 /**
122 * Standard output format record that shows all DNSKEY related information in
123 * the comment text, plus the optout flag when set with NSEC3's, plus the
124 * bubblebabble representation of DS RR's.
125 */
126 extern const ldns_output_format *ldns_output_format_bubblebabble;
127
128 /**
129 * Initialize output format storage to the default value.
130 * \param[in] fmt A reference to an output_format_ storage struct
131 * \return The initialized storage struct typecasted to ldns_output_format
132 */
133 INLINE
134 ldns_output_format* ldns_output_format_init(ldns_output_format_storage* fmt) {
135 fmt->flags = ldns_output_format_default->flags;
136 fmt->hashmap = NULL;
137 fmt->bitmap = NULL;
138 return (ldns_output_format*)fmt;
139 }
140
141 /**
142 * Set an ouput format flag.
143 */
144 INLINE void ldns_output_format_set(ldns_output_format* fmt, int flag) {
145 fmt->flags |= flag;
146 }
147
148 /**
149 * Clear an ouput format flag.
150 */
151 INLINE void ldns_output_format_clear(ldns_output_format* fmt, int flag) {
152 fmt->flags &= !flag;
153 }
154
155 /**
156 * Makes sure the LDNS_FMT_RFC3597 is set in the output format.
157 * Marks the type to be printed in RFC3597 format.
158 * /param[in] fmt the output format to update
159 * /param[in] the type to be printed in RFC3597 format
160 * /return LDNS_STATUS_OK on success
161 */
162 ldns_status
163 ldns_output_format_set_type(ldns_output_format* fmt, ldns_rr_type type);
164
165 /**
166 * Makes sure the LDNS_FMT_RFC3597 is set in the output format.
167 * Marks the type to not be printed in RFC3597 format. When no other types
168 * have been marked before, all known types (except the given one) will be
169 * marked for printing in RFC3597 format.
170 * /param[in] fmt the output format to update
171 * /param[in] the type not to be printed in RFC3597 format
172 * /return LDNS_STATUS_OK on success
173 */
174 ldns_status
175 ldns_output_format_clear_type(ldns_output_format* fmt, ldns_rr_type type);
176
177 /**
178 * Converts an ldns packet opcode value to its mnemonic, and adds that
179 * to the output buffer
180 * \param[in] *output the buffer to add the data to
181 * \param[in] opcode to find the string representation of
182 * \return LDNS_STATUS_OK on success, or a buffer failure mode on error
183 */
184 ldns_status
185 ldns_pkt_opcode2buffer_str(ldns_buffer *output, ldns_pkt_opcode opcode);
186
187 /**
188 * Converts an ldns packet rcode value to its mnemonic, and adds that
189 * to the output buffer
190 * \param[in] *output the buffer to add the data to
191 * \param[in] rcode to find the string representation of
192 * \return LDNS_STATUS_OK on success, or a buffer failure mode on error
193 */
194 ldns_status
195 ldns_pkt_rcode2buffer_str(ldns_buffer *output, ldns_pkt_rcode rcode);
196
197 /**
198 * Converts an ldns algorithm type to its mnemonic, and adds that
199 * to the output buffer
200 * \param[in] *output the buffer to add the data to
201 * \param[in] algorithm to find the string representation of
202 * \return LDNS_STATUS_OK on success, or a buffer failure mode on error
203 */
204 ldns_status
205 ldns_algorithm2buffer_str(ldns_buffer *output,
206 ldns_algorithm algorithm);
207
208 /**
209 * Converts an ldns certificate algorithm type to its mnemonic,
210 * and adds that to the output buffer
211 * \param[in] *output the buffer to add the data to
212 * \param[in] cert_algorithm to find the string representation of
213 * \return LDNS_STATUS_OK on success, or a buffer failure mode on error
214 */
215 ldns_status
216 ldns_cert_algorithm2buffer_str(ldns_buffer *output,
217 ldns_cert_algorithm cert_algorithm);
218
219
220 /**
221 * Converts a packet opcode to its mnemonic and returns that as
222 * an allocated null-terminated string.
223 * Remember to free it.
224 *
225 * \param[in] opcode the opcode to convert to text
226 * \return null terminated char * data, or NULL on error
227 */
228 char *ldns_pkt_opcode2str(ldns_pkt_opcode opcode);
229
230 /**
231 * Converts a packet rcode to its mnemonic and returns that as
232 * an allocated null-terminated string.
233 * Remember to free it.
234 *
235 * \param[in] rcode the rcode to convert to text
236 * \return null terminated char * data, or NULL on error
237 */
238 char *ldns_pkt_rcode2str(ldns_pkt_rcode rcode);
239
240 /**
241 * Converts a signing algorithms to its mnemonic and returns that as
242 * an allocated null-terminated string.
243 * Remember to free it.
244 *
245 * \param[in] algorithm the algorithm to convert to text
246 * \return null terminated char * data, or NULL on error
247 */
248 char *ldns_pkt_algorithm2str(ldns_algorithm algorithm);
249
250 /**
251 * Converts a cert algorithm to its mnemonic and returns that as
252 * an allocated null-terminated string.
253 * Remember to free it.
254 *
255 * \param[in] cert_algorithm to convert to text
256 * \return null terminated char * data, or NULL on error
257 */
258 char *ldns_pkt_cert_algorithm2str(ldns_cert_algorithm cert_algorithm);
259
260 /**
261 * Converts an LDNS_RDF_TYPE_A rdata element to string format and adds it to the output buffer
262 * \param[in] *rdf The rdata to convert
263 * \param[in] *output The buffer to add the data to
264 * \return LDNS_STATUS_OK on success, and error status on failure
265 */
266 ldns_status ldns_rdf2buffer_str_a(ldns_buffer *output, const ldns_rdf *rdf);
267
268 /**
269 * Converts an LDNS_RDF_TYPE_AAAA rdata element to string format and adds it to the output buffer
270 * \param[in] *rdf The rdata to convert
271 * \param[in] *output The buffer to add the data to
272 * \return LDNS_STATUS_OK on success, and error status on failure
273 */
274 ldns_status ldns_rdf2buffer_str_aaaa(ldns_buffer *output, const ldns_rdf *rdf);
275
276 /**
277 * Converts an LDNS_RDF_TYPE_STR rdata element to string format and adds it to the output buffer
278 * \param[in] *rdf The rdata to convert
279 * \param[in] *output The buffer to add the data to
280 * \return LDNS_STATUS_OK on success, and error status on failure
281 */
282 ldns_status ldns_rdf2buffer_str_str(ldns_buffer *output, const ldns_rdf *rdf);
283
284 /**
285 * Converts an LDNS_RDF_TYPE_B64 rdata element to string format and adds it to the output buffer
286 * \param[in] *rdf The rdata to convert
287 * \param[in] *output The buffer to add the data to
288 * \return LDNS_STATUS_OK on success, and error status on failure
289 */
290 ldns_status ldns_rdf2buffer_str_b64(ldns_buffer *output, const ldns_rdf *rdf);
291
292 /**
293 * Converts an LDNS_RDF_TYPE_B32_EXT rdata element to string format and adds it to the output buffer
294 * \param[in] *rdf The rdata to convert
295 * \param[in] *output The buffer to add the data to
296 * \return LDNS_STATUS_OK on success, and error status on failure
297 */
298 ldns_status ldns_rdf2buffer_str_b32_ext(ldns_buffer *output, const ldns_rdf *rdf);
299
300 /**
301 * Converts an LDNS_RDF_TYPE_HEX rdata element to string format and adds it to the output buffer
302 * \param[in] *rdf The rdata to convert
303 * \param[in] *output The buffer to add the data to
304 * \return LDNS_STATUS_OK on success, and error status on failure
305 */
306 ldns_status ldns_rdf2buffer_str_hex(ldns_buffer *output, const ldns_rdf *rdf);
307
308 /**
309 * Converts an LDNS_RDF_TYPE_TYPE rdata element to string format and adds it to the output buffer
310 * \param[in] *rdf The rdata to convert
311 * \param[in] *output The buffer to add the data to
312 * \return LDNS_STATUS_OK on success, and error status on failure
313 */
314 ldns_status ldns_rdf2buffer_str_type(ldns_buffer *output, const ldns_rdf *rdf);
315
316 /**
317 * Converts an LDNS_RDF_TYPE_CLASS rdata element to string format and adds it to the output buffer
318 * \param[in] *rdf The rdata to convert
319 * \param[in] *output The buffer to add the data to
320 * \return LDNS_STATUS_OK on success, and error status on failure
321 */
322 ldns_status ldns_rdf2buffer_str_class(ldns_buffer *output, const ldns_rdf *rdf);
323
324 /**
325 * Converts an LDNS_RDF_TYPE_ALG rdata element to string format and adds it to the output buffer
326 * \param[in] *rdf The rdata to convert
327 * \param[in] *output The buffer to add the data to
328 * \return LDNS_STATUS_OK on success, and error status on failure
329 */
330 ldns_status ldns_rdf2buffer_str_alg(ldns_buffer *output, const ldns_rdf *rdf);
331
332 /**
333 * Converts an ldns_rr_type value to its string representation,
334 * and places it in the given buffer
335 * \param[in] *output The buffer to add the data to
336 * \param[in] type the ldns_rr_type to convert
337 * \return LDNS_STATUS_OK on success, and error status on failure
338 */
339 ldns_status ldns_rr_type2buffer_str(ldns_buffer *output,
340 const ldns_rr_type type);
341
342 /**
343 * Converts an ldns_rr_type value to its string representation,
344 * and returns that string. For unknown types, the string
345 * "TYPE<id>" is returned. This function allocates data that must be
346 * freed by the caller
347 * \param[in] type the ldns_rr_type to convert
348 * \return a newly allocated string
349 */
350 char *ldns_rr_type2str(const ldns_rr_type type);
351
352 /**
353 * Converts an ldns_rr_class value to its string representation,
354 * and places it in the given buffer
355 * \param[in] *output The buffer to add the data to
356 * \param[in] klass the ldns_rr_class to convert
357 * \return LDNS_STATUS_OK on success, and error status on failure
358 */
359 ldns_status ldns_rr_class2buffer_str(ldns_buffer *output,
360 const ldns_rr_class klass);
361
362 /**
363 * Converts an ldns_rr_class value to its string representation,
364 * and returns that string. For unknown types, the string
365 * "CLASS<id>" is returned. This function allocates data that must be
366 * freed by the caller
367 * \param[in] klass the ldns_rr_class to convert
368 * \return a newly allocated string
369 */
370 char *ldns_rr_class2str(const ldns_rr_class klass);
371
372
373 /**
374 * Converts an LDNS_RDF_TYPE_CERT rdata element to string format and adds it to the output buffer
375 * \param[in] *rdf The rdata to convert
376 * \param[in] *output The buffer to add the data to
377 * \return LDNS_STATUS_OK on success, and error status on failure
378 */
379 ldns_status ldns_rdf2buffer_str_cert_alg(ldns_buffer *output, const ldns_rdf *rdf);
380
381 /**
382 * Converts an LDNS_RDF_TYPE_LOC rdata element to string format and adds it to the output buffer
383 * \param[in] *rdf The rdata to convert
384 * \param[in] *output The buffer to add the data to
385 * \return LDNS_STATUS_OK on success, and error status on failure
386 */
387 ldns_status ldns_rdf2buffer_str_loc(ldns_buffer *output, const ldns_rdf *rdf);
388
389 /**
390 * Converts an LDNS_RDF_TYPE_UNKNOWN rdata element to string format and adds it to the output buffer
391 * \param[in] *rdf The rdata to convert
392 * \param[in] *output The buffer to add the data to
393 * \return LDNS_STATUS_OK on success, and error status on failure
394 */
395 ldns_status ldns_rdf2buffer_str_unknown(ldns_buffer *output, const ldns_rdf *rdf);
396
397 /**
398 * Converts an LDNS_RDF_TYPE_NSAP rdata element to string format and adds it to the output buffer
399 * \param[in] *rdf The rdata to convert
400 * \param[in] *output The buffer to add the data to
401 * \return LDNS_STATUS_OK on success, and error status on failure
402 */
403 ldns_status ldns_rdf2buffer_str_nsap(ldns_buffer *output, const ldns_rdf *rdf);
404
405 /**
406 * Converts an LDNS_RDF_TYPE_ATMA rdata element to string format and adds it to the output buffer
407 * \param[in] *rdf The rdata to convert
408 * \param[in] *output The buffer to add the data to
409 * \return LDNS_STATUS_OK on success, and error status on failure
410 */
411 ldns_status ldns_rdf2buffer_str_atma(ldns_buffer *output, const ldns_rdf *rdf);
412
413 /**
414 * Converts an LDNS_RDF_TYPE_WKS rdata element to string format and adds it to the output buffer
415 * \param[in] *rdf The rdata to convert
416 * \param[in] *output The buffer to add the data to
417 * \return LDNS_STATUS_OK on success, and error status on failure
418 */
419 ldns_status ldns_rdf2buffer_str_wks(ldns_buffer *output, const ldns_rdf *rdf);
420
421 /**
422 * Converts an LDNS_RDF_TYPE_NSEC rdata element to string format and adds it to the output buffer
423 * \param[in] *rdf The rdata to convert
424 * \param[in] *output The buffer to add the data to
425 * \return LDNS_STATUS_OK on success, and error status on failure
426 */
427 ldns_status ldns_rdf2buffer_str_nsec(ldns_buffer *output, const ldns_rdf *rdf);
428
429 /**
430 * Converts an LDNS_RDF_TYPE_PERIOD rdata element to string format and adds it to the output buffer
431 * \param[in] *rdf The rdata to convert
432 * \param[in] *output The buffer to add the data to
433 * \return LDNS_STATUS_OK on success, and error status on failure
434 */
435 ldns_status ldns_rdf2buffer_str_period(ldns_buffer *output, const ldns_rdf *rdf);
436
437 /**
438 * Converts an LDNS_RDF_TYPE_TSIGTIME rdata element to string format and adds it to the output buffer
439 * \param[in] *rdf The rdata to convert
440 * \param[in] *output The buffer to add the data to
441 * \return LDNS_STATUS_OK on success, and error status on failure
442 */
443 ldns_status ldns_rdf2buffer_str_tsigtime(ldns_buffer *output, const ldns_rdf *rdf);
444
445 /**
446 * Converts an LDNS_RDF_TYPE_APL rdata element to string format and adds it to the output buffer
447 * \param[in] *rdf The rdata to convert
448 * \param[in] *output The buffer to add the data to
449 * \return LDNS_STATUS_OK on success, and error status on failure
450 */
451 ldns_status ldns_rdf2buffer_str_apl(ldns_buffer *output, const ldns_rdf *rdf);
452
453 /**
454 * Converts an LDNS_RDF_TYPE_INT16_DATA rdata element to string format and adds it to the output buffer
455 * \param[in] *rdf The rdata to convert
456 * \param[in] *output The buffer to add the data to
457 * \return LDNS_STATUS_OK on success, and error status on failure
458 */
459 ldns_status ldns_rdf2buffer_str_int16_data(ldns_buffer *output, const ldns_rdf *rdf);
460
461 /**
462 * Converts an LDNS_RDF_TYPE_IPSECKEY rdata element to string format and adds it to the output buffer
463 * \param[in] *rdf The rdata to convert
464 * \param[in] *output The buffer to add the data to
465 * \return LDNS_STATUS_OK on success, and error status on failure
466 */
467 ldns_status ldns_rdf2buffer_str_ipseckey(ldns_buffer *output, const ldns_rdf *rdf);
468
469 /**
470 * Converts the data in the rdata field to presentation
471 * format (as char *) and appends it to the given buffer
472 *
473 * \param[in] output pointer to the buffer to append the data to
474 * \param[in] rdf the pointer to the rdafa field containing the data
475 * \return status
476 */
477 ldns_status ldns_rdf2buffer_str(ldns_buffer *output, const ldns_rdf *rdf);
478
479 /**
480 * Converts the data in the resource record to presentation
481 * format (as char *) and appends it to the given buffer.
482 * The presentation format of DNSKEY record is annotated with comments giving
483 * the id, type and size of the key.
484 *
485 * \param[in] output pointer to the buffer to append the data to
486 * \param[in] rr the pointer to the rr field to convert
487 * \return status
488 */
489 ldns_status ldns_rr2buffer_str(ldns_buffer *output, const ldns_rr *rr);
490
491 /**
492 * Converts the data in the resource record to presentation
493 * format (as char *) and appends it to the given buffer.
494 * The presentation format is annotated with comments giving
495 * additional information on the record.
496 *
497 * \param[in] output pointer to the buffer to append the data to
498 * \param[in] fmt how to format the textual representation of the
499 * resource record.
500 * \param[in] rr the pointer to the rr field to convert
501 * \return status
502 */
503 ldns_status ldns_rr2buffer_str_fmt(ldns_buffer *output,
504 const ldns_output_format *fmt, const ldns_rr *rr);
505
506 /**
507 * Converts the data in the DNS packet to presentation
508 * format (as char *) and appends it to the given buffer
509 *
510 * \param[in] output pointer to the buffer to append the data to
511 * \param[in] pkt the pointer to the packet to convert
512 * \return status
513 */
514 ldns_status ldns_pkt2buffer_str(ldns_buffer *output, const ldns_pkt *pkt);
515
516 /**
517 * Converts the data in the DNS packet to presentation
518 * format (as char *) and appends it to the given buffer
519 *
520 * \param[in] output pointer to the buffer to append the data to
521 * \param[in] fmt how to format the textual representation of the packet
522 * \param[in] pkt the pointer to the packet to convert
523 * \return status
524 */
525 ldns_status ldns_pkt2buffer_str_fmt(ldns_buffer *output,
526 const ldns_output_format *fmt, const ldns_pkt *pkt);
527
528 /**
529 * Converts an LDNS_RDF_TYPE_NSEC3_SALT rdata element to string format and adds it to the output buffer
530 * \param[in] *rdf The rdata to convert
531 * \param[in] *output The buffer to add the data to
532 * \return LDNS_STATUS_OK on success, and error status on failure
533 */
534 ldns_status ldns_rdf2buffer_str_nsec3_salt(ldns_buffer *output, const ldns_rdf *rdf);
535
536
537 /**
538 * Converts the data in the DNS packet to presentation
539 * format (as char *) and appends it to the given buffer
540 *
541 * \param[in] output pointer to the buffer to append the data to
542 * \param[in] k the pointer to the private key to convert
543 * \return status
544 */
545 ldns_status ldns_key2buffer_str(ldns_buffer *output, const ldns_key *k);
546
547 /**
548 * Converts an LDNS_RDF_TYPE_INT8 rdata element to string format and adds it to the output buffer
549 * \param[in] *rdf The rdata to convert
550 * \param[in] *output The buffer to add the data to
551 * \return LDNS_STATUS_OK on success, and error status on failure
552 */
553 ldns_status ldns_rdf2buffer_str_int8(ldns_buffer *output, const ldns_rdf *rdf);
554
555 /**
556 * Converts an LDNS_RDF_TYPE_INT16 rdata element to string format and adds it to the output buffer
557 * \param[in] *rdf The rdata to convert
558 * \param[in] *output The buffer to add the data to
559 * \return LDNS_STATUS_OK on success, and error status on failure
560 */
561 ldns_status ldns_rdf2buffer_str_int16(ldns_buffer *output, const ldns_rdf *rdf);
562
563 /**
564 * Converts an LDNS_RDF_TYPE_INT32 rdata element to string format and adds it to the output buffer
565 * \param[in] *rdf The rdata to convert
566 * \param[in] *output The buffer to add the data to
567 * \return LDNS_STATUS_OK on success, and error status on failure
568 */
569 ldns_status ldns_rdf2buffer_str_int32(ldns_buffer *output, const ldns_rdf *rdf);
570
571 /**
572 * Converts an LDNS_RDF_TYPE_TIME rdata element to string format and adds it to the output buffer
573 * \param[in] *rdf The rdata to convert
574 * \param[in] *output The buffer to add the data to
575 * \return LDNS_STATUS_OK on success, and error status on failure
576 */
577 ldns_status ldns_rdf2buffer_str_time(ldns_buffer *output, const ldns_rdf *rdf);
578
579 /**
580 * Converts an LDNS_RDF_TYPE_ILNP64 rdata element to 4 hexadecimal numbers
581 * separated by colons and adds it to the output buffer
582 * \param[in] *rdf The rdata to convert
583 * \param[in] *output The buffer to add the data to
584 * \return LDNS_STATUS_OK on success, and error status on failure
585 */
586 ldns_status ldns_rdf2buffer_str_ilnp64(ldns_buffer *output,
587 const ldns_rdf *rdf);
588
589 /**
590 * Converts an LDNS_RDF_TYPE_EUI48 rdata element to 6 hexadecimal numbers
591 * separated by dashes and adds it to the output buffer
592 * \param[in] *rdf The rdata to convert
593 * \param[in] *output The buffer to add the data to
594 * \return LDNS_STATUS_OK on success, and error status on failure
595 */
596 ldns_status ldns_rdf2buffer_str_eui48(ldns_buffer *output,
597 const ldns_rdf *rdf);
598
599 /**
600 * Converts an LDNS_RDF_TYPE_EUI64 rdata element to 8 hexadecimal numbers
601 * separated by dashes and adds it to the output buffer
602 * \param[in] *rdf The rdata to convert
603 * \param[in] *output The buffer to add the data to
604 * \return LDNS_STATUS_OK on success, and error status on failure
605 */
606 ldns_status ldns_rdf2buffer_str_eui64(ldns_buffer *output,
607 const ldns_rdf *rdf);
608
609 /**
610 * Adds the LDNS_RDF_TYPE_TAG rdata to the output buffer,
611 * provided it contains only alphanumeric characters.
612 * \param[in] *rdf The rdata to convert
613 * \param[in] *output The buffer to add the data to
614 * \return LDNS_STATUS_OK on success, and error status on failure
615 */
616 ldns_status ldns_rdf2buffer_str_tag(ldns_buffer *output,
617 const ldns_rdf *rdf);
618
619 /**
620 * Adds the LDNS_RDF_TYPE_LONG_STR rdata to the output buffer, in-between
621 * double quotes and all non printable characters properly escaped.
622 * \param[in] *rdf The rdata to convert
623 * \param[in] *output The buffer to add the data to
624 * \return LDNS_STATUS_OK on success, and error status on failure
625 */
626 ldns_status ldns_rdf2buffer_str_long_str(ldns_buffer *output,
627 const ldns_rdf *rdf);
628
629 /**
630 * Converts an LDNS_RDF_TYPE_HIP rdata element to presentation format for
631 * the algorithm, HIT and Public Key and adds it the output buffer .
632 * \param[in] *rdf The rdata to convert
633 * \param[in] *output The buffer to add the data to
634 * \return LDNS_STATUS_OK on success, and error status on failure
635 */
636 ldns_status ldns_rdf2buffer_str_hip(ldns_buffer *output,
637 const ldns_rdf *rdf);
638
639 /**
640 * Converts the data in the rdata field to presentation format and
641 * returns that as a char *.
642 * Remember to free it.
643 *
644 * \param[in] rdf The rdata field to convert
645 * \return null terminated char * data, or NULL on error
646 */
647 char *ldns_rdf2str(const ldns_rdf *rdf);
648
649 /**
650 * Converts the data in the resource record to presentation format and
651 * returns that as a char *.
652 * Remember to free it.
653 *
654 * \param[in] rr The rdata field to convert
655 * \return null terminated char * data, or NULL on error
656 */
657 char *ldns_rr2str(const ldns_rr *rr);
658
659 /**
660 * Converts the data in the resource record to presentation format and
661 * returns that as a char *.
662 * Remember to free it.
663 *
664 * \param[in] fmt how to format the resource record
665 * \param[in] rr The rdata field to convert
666 * \return null terminated char * data, or NULL on error
667 */
668 char *ldns_rr2str_fmt(const ldns_output_format *fmt, const ldns_rr *rr);
669
670 /**
671 * Converts the data in the DNS packet to presentation format and
672 * returns that as a char *.
673 * Remember to free it.
674 *
675 * \param[in] pkt The rdata field to convert
676 * \return null terminated char * data, or NULL on error
677 */
678 char *ldns_pkt2str(const ldns_pkt *pkt);
679
680 /**
681 * Converts the data in the DNS packet to presentation format and
682 * returns that as a char *.
683 * Remember to free it.
684 *
685 * \param[in] fmt how to format the packet
686 * \param[in] pkt The rdata field to convert
687 * \return null terminated char * data, or NULL on error
688 */
689 char *ldns_pkt2str_fmt(const ldns_output_format *fmt, const ldns_pkt *pkt);
690
691 /**
692 * Converts a private key to the test presentation fmt and
693 * returns that as a char *.
694 * Remember to free it.
695 *
696 * \param[in] k the key to convert to text
697 * \return null terminated char * data, or NULL on error
698 */
699 char *ldns_key2str(const ldns_key *k);
700
701 /**
702 * Converts a list of resource records to presentation format
703 * and returns that as a char *.
704 * Remember to free it.
705 *
706 * \param[in] rr_list the rr_list to convert to text
707 * \return null terminated char * data, or NULL on error
708 */
709 char *ldns_rr_list2str(const ldns_rr_list *rr_list);
710
711 /**
712 * Converts a list of resource records to presentation format
713 * and returns that as a char *.
714 * Remember to free it.
715 *
716 * \param[in] fmt how to format the list of resource records
717 * \param[in] rr_list the rr_list to convert to text
718 * \return null terminated char * data, or NULL on error
719 */
720 char *ldns_rr_list2str_fmt(
721 const ldns_output_format *fmt, const ldns_rr_list *rr_list);
722
723 /**
724 * Returns a copy of the data in the buffer as a null terminated
725 * char * string. The returned string must be freed by the caller.
726 * The buffer must be in write modus and may thus not have been flipped.
727 *
728 * \param[in] buffer buffer containing char * data
729 * \return null terminated char * data, or NULL on error
730 */
731 char *ldns_buffer2str(ldns_buffer *buffer);
732
733 /**
734 * Exports and returns the data in the buffer as a null terminated
735 * char * string. The returned string must be freed by the caller.
736 * The buffer must be in write modus and may thus not have been flipped.
737 * The buffer is fixed after this function returns.
738 *
739 * \param[in] buffer buffer containing char * data
740 * \return null terminated char * data, or NULL on error
741 */
742 char *ldns_buffer_export2str(ldns_buffer *buffer);
743
744 /**
745 * Prints the data in the rdata field to the given file stream
746 * (in presentation format)
747 *
748 * \param[in] output the file stream to print to
749 * \param[in] rdf the rdata field to print
750 * \return void
751 */
752 void ldns_rdf_print(FILE *output, const ldns_rdf *rdf);
753
754 /**
755 * Prints the data in the resource record to the given file stream
756 * (in presentation format)
757 *
758 * \param[in] output the file stream to print to
759 * \param[in] rr the resource record to print
760 * \return void
761 */
762 void ldns_rr_print(FILE *output, const ldns_rr *rr);
763
764 /**
765 * Prints the data in the resource record to the given file stream
766 * (in presentation format)
767 *
768 * \param[in] output the file stream to print to
769 * \param[in] fmt format of the textual representation
770 * \param[in] rr the resource record to print
771 * \return void
772 */
773 void ldns_rr_print_fmt(FILE *output,
774 const ldns_output_format *fmt, const ldns_rr *rr);
775
776 /**
777 * Prints the data in the DNS packet to the given file stream
778 * (in presentation format)
779 *
780 * \param[in] output the file stream to print to
781 * \param[in] pkt the packet to print
782 * \return void
783 */
784 void ldns_pkt_print(FILE *output, const ldns_pkt *pkt);
785
786 /**
787 * Prints the data in the DNS packet to the given file stream
788 * (in presentation format)
789 *
790 * \param[in] output the file stream to print to
791 * \param[in] fmt format of the textual representation
792 * \param[in] pkt the packet to print
793 * \return void
794 */
795 void ldns_pkt_print_fmt(FILE *output,
796 const ldns_output_format *fmt, const ldns_pkt *pkt);
797
798 /**
799 * Converts a rr_list to presentation format and appends it to
800 * the output buffer
801 * \param[in] output the buffer to append output to
802 * \param[in] list the ldns_rr_list to print
803 * \return ldns_status
804 */
805 ldns_status ldns_rr_list2buffer_str(ldns_buffer *output, const ldns_rr_list *list);
806
807 /**
808 * Converts a rr_list to presentation format and appends it to
809 * the output buffer
810 * \param[in] output the buffer to append output to
811 * \param[in] fmt format of the textual representation
812 * \param[in] list the ldns_rr_list to print
813 * \return ldns_status
814 */
815 ldns_status ldns_rr_list2buffer_str_fmt(ldns_buffer *output,
816 const ldns_output_format *fmt, const ldns_rr_list *list);
817
818 /**
819 * Converts the header of a packet to presentation format and appends it to
820 * the output buffer
821 * \param[in] output the buffer to append output to
822 * \param[in] pkt the packet to convert the header of
823 * \return ldns_status
824 */
825 ldns_status ldns_pktheader2buffer_str(ldns_buffer *output, const ldns_pkt *pkt);
826
827 /**
828 * print a rr_list to output
829 * \param[in] output the fd to print to
830 * \param[in] list the rr_list to print
831 */
832 void ldns_rr_list_print(FILE *output, const ldns_rr_list *list);
833
834 /**
835 * print a rr_list to output
836 * \param[in] output the fd to print to
837 * \param[in] fmt format of the textual representation
838 * \param[in] list the rr_list to print
839 */
840 void ldns_rr_list_print_fmt(FILE *output,
841 const ldns_output_format *fmt, const ldns_rr_list *list);
842
843 /**
844 * Print a resolver (in sofar that is possible) state
845 * to output.
846 * \param[in] output the fd to print to
847 * \param[in] r the resolver to print
848 */
849 void ldns_resolver_print(FILE *output, const ldns_resolver *r);
850
851 /**
852 * Print a resolver (in sofar that is possible) state
853 * to output.
854 * \param[in] output the fd to print to
855 * \param[in] fmt format of the textual representation
856 * \param[in] r the resolver to print
857 */
858 void ldns_resolver_print_fmt(FILE *output,
859 const ldns_output_format *fmt, const ldns_resolver *r);
860
861 /**
862 * Print a zone structure * to output. Note the SOA record
863 * is included in this output
864 * \param[in] output the fd to print to
865 * \param[in] z the zone to print
866 */
867 void ldns_zone_print(FILE *output, const ldns_zone *z);
868
869 /**
870 * Print a zone structure * to output. Note the SOA record
871 * is included in this output
872 * \param[in] output the fd to print to
873 * \param[in] fmt format of the textual representation
874 * \param[in] z the zone to print
875 */
876 void ldns_zone_print_fmt(FILE *output,
877 const ldns_output_format *fmt, const ldns_zone *z);
878
879 /**
880 * Print the ldns_rdf containing a dname to the buffer
881 * \param[in] output the buffer to print to
882 * \param[in] dname the dname to print
883 * \return ldns_status message if the printing succeeded
884 */
885 ldns_status ldns_rdf2buffer_str_dname(ldns_buffer *output, const ldns_rdf *dname);
886
887 #ifdef __cplusplus
888 }
889 #endif
890
891 #endif /* LDNS_HOST2STR_H */