]> git.saurik.com Git - apple/network_cmds.git/blob - unbound/ldns/wire2str.h
67f543566267414757894ddb02547bf51d8ef00c
[apple/network_cmds.git] / unbound / ldns / wire2str.h
1 /**
2 * wire2str.h - txt presentation of RRs
3 *
4 * (c) NLnet Labs, 2005-2006
5 *
6 * See the file LICENSE for the license
7 */
8
9 /**
10 * \file
11 *
12 * Contains functions to translate the wireformat to text
13 * representation, as well as functions to print them.
14 */
15
16 #ifndef LDNS_WIRE2STR_H
17 #define LDNS_WIRE2STR_H
18
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 struct sldns_struct_lookup_table;
23
24 /* lookup tables for standard DNS stuff */
25 /** Taken from RFC 2535, section 7. */
26 extern struct sldns_struct_lookup_table* sldns_algorithms;
27 /** DS record hash algorithms */
28 extern struct sldns_struct_lookup_table* sldns_hashes;
29 /** Taken from RFC 2538, section 2.1. */
30 extern struct sldns_struct_lookup_table* sldns_cert_algorithms;
31 /** Response codes */
32 extern struct sldns_struct_lookup_table* sldns_rcodes;
33 /** Operation codes */
34 extern struct sldns_struct_lookup_table* sldns_opcodes;
35 /** EDNS flags */
36 extern struct sldns_struct_lookup_table* sldns_edns_flags;
37 /** EDNS option codes */
38 extern struct sldns_struct_lookup_table* sldns_edns_options;
39 /** error string from wireparse */
40 extern struct sldns_struct_lookup_table* sldns_wireparse_errors;
41
42 /**
43 * Convert wireformat packet to a string representation
44 * @param data: wireformat packet data (starting at ID bytes).
45 * @param len: length of packet.
46 * @return string(malloced) or NULL on failure.
47 */
48 char* sldns_wire2str_pkt(uint8_t* data, size_t len);
49
50 /**
51 * Convert wireformat RR to a string representation.
52 * @param rr: the wireformat RR, in uncompressed form. Starts at the domain
53 * name start, ends with the rdata of the RR.
54 * @param len: length of the rr wireformat.
55 * @return string(malloced) or NULL on failure.
56 */
57 char* sldns_wire2str_rr(uint8_t* rr, size_t len);
58
59 /**
60 * Conver wire dname to a string.
61 * @param dname: the dname in uncompressed wireformat.
62 * @param dname_len: length of the dname.
63 * @return string or NULL on failure.
64 */
65 char* sldns_wire2str_dname(uint8_t* dname, size_t dname_len);
66
67 /**
68 * Convert wire RR type to a string, 'MX', 'TYPE1234'...
69 * @param rrtype: the RR type in host order.
70 * @return malloced string with the RR type or NULL on malloc failure.
71 */
72 char* sldns_wire2str_type(uint16_t rrtype);
73
74 /**
75 * Convert wire RR class to a string, 'IN', 'CLASS1'.
76 * @param rrclass: the RR class in host order.
77 * @return malloced string with the RR class or NULL on malloc failure.
78 */
79 char* sldns_wire2str_class(uint16_t rrclass);
80
81 /**
82 * Convert wire packet rcode to a string, 'NOERROR', 'NXDOMAIN'...
83 * @param rcode: as integer, host order
84 * @return malloced string with the rcode or NULL on malloc failure.
85 */
86 char* sldns_wire2str_rcode(int rcode);
87
88 /**
89 * Print to string, move string along for next content. With va_list.
90 * @param str: string buffer. Adjusted at end to after the output.
91 * @param slen: length of the string buffer. Adjusted at end.
92 * @param format: printf format string.
93 * @param args: arguments for printf.
94 * @return number of characters needed. Can be larger than slen.
95 */
96 int sldns_str_vprint(char** str, size_t* slen, const char* format, va_list args);
97
98 /**
99 * Print to string, move string along for next content.
100 * @param str: string buffer. Adjusted at end to after the output.
101 * @param slen: length of the string buffer. Adjusted at end.
102 * @param format: printf format string and arguments for it.
103 * @return number of characters needed. Can be larger than slen.
104 */
105 int sldns_str_print(char** str, size_t* slen, const char* format, ...)
106 ATTR_FORMAT(printf, 3, 4);
107
108 /**
109 * Convert wireformat packet to a string representation with user buffer
110 * It appends every RR with default comments.
111 * For more formatter options use the function: TBD(TODO)
112 * @param data: wireformat packet data (starting at ID bytes).
113 * @param data_len: length of packet.
114 * @param str: the string buffer for the output.
115 * If you pass NULL as the str the return value of the function is
116 * the str_len you need for the entire packet. It does not include
117 * the 0 byte at the end.
118 * @param str_len: the size of the string buffer. If more is needed, it'll
119 * silently truncate the output to fit in the buffer.
120 * @return the number of characters for this element, excluding zerobyte.
121 * Is larger than str_len if output was truncated.
122 */
123 int sldns_wire2str_pkt_buf(uint8_t* data, size_t data_len, char* str,
124 size_t str_len);
125
126 /**
127 * Scan wireformat packet to a string representation with user buffer
128 * It appends every RR with default comments.
129 * For more formatter options use the function: TBD(TODO)
130 * @param data: wireformat packet data (starting at ID bytes).
131 * @param data_len: length of packet.
132 * @param str: the string buffer for the output.
133 * @param str_len: the size of the string buffer.
134 * @return number of characters for string.
135 * returns the number of characters that are needed (except terminating null),
136 * so it may return a value larger than str_len.
137 * On error you get less output (i.e. shorter output in str (null terminated))
138 * On exit the data, data_len, str and str_len values are adjusted to move them
139 * from their original position along the input and output for the content
140 * that has been consumed (and produced) by this function. If the end of the
141 * output string is reached, *str_len is set to 0. The output string is null
142 * terminated (shortening the output if necessary). If the end of the input
143 * is reached *data_len is set to 0.
144 */
145 int sldns_wire2str_pkt_scan(uint8_t** data, size_t* data_len, char** str,
146 size_t* str_len);
147
148 /**
149 * Scan wireformat rr to string, with user buffers. It shifts the arguments
150 * to move along (see sldns_wire2str_pkt_scan).
151 * @param data: wireformat data.
152 * @param data_len: length of data buffer.
153 * @param str: string buffer.
154 * @param str_len: length of string buffer.
155 * @param pkt: packet for decompression, if NULL no decompression.
156 * @param pktlen: length of packet buffer.
157 * @return number of characters (except null) needed to print.
158 */
159 int sldns_wire2str_rr_scan(uint8_t** data, size_t* data_len, char** str,
160 size_t* str_len, uint8_t* pkt, size_t pktlen);
161
162 /**
163 * Scan wireformat question rr to string, with user buffers.
164 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
165 * @param data: wireformat data.
166 * @param data_len: length of data buffer.
167 * @param str: string buffer.
168 * @param str_len: length of string buffer.
169 * @param pkt: packet for decompression, if NULL no decompression.
170 * @param pktlen: length of packet buffer.
171 * @return number of characters (except null) needed to print.
172 */
173 int sldns_wire2str_rrquestion_scan(uint8_t** data, size_t* data_len, char** str,
174 size_t* str_len, uint8_t* pkt, size_t pktlen);
175
176 /**
177 * Scan wireformat RR to string in unknown RR format, with user buffers.
178 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
179 * @param data: wireformat data.
180 * @param data_len: length of data buffer.
181 * @param str: string buffer.
182 * @param str_len: length of string buffer.
183 * @param pkt: packet for decompression, if NULL no decompression.
184 * @param pktlen: length of packet buffer.
185 * @return number of characters (except null) needed to print.
186 */
187 int sldns_wire2str_rr_unknown_scan(uint8_t** data, size_t* data_len, char** str,
188 size_t* str_len, uint8_t* pkt, size_t pktlen);
189
190 /**
191 * Print to string the RR-information comment in default format,
192 * with user buffers. Moves string along.
193 * @param str: string buffer.
194 * @param str_len: length of string buffer.
195 * @param rr: wireformat data.
196 * @param rrlen: length of data buffer.
197 * @param dname_off: offset in buffer behind owner dname, the compressed size
198 * of the owner name.
199 * @param rrtype: type of the RR, host format.
200 * @return number of characters (except null) needed to print.
201 */
202 int sldns_wire2str_rr_comment_print(char** str, size_t* str_len, uint8_t* rr,
203 size_t rrlen, size_t dname_off, uint16_t rrtype);
204
205 /**
206 * Scan wireformat packet header to string, with user buffers.
207 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
208 * @param data: wireformat data.
209 * @param data_len: length of data buffer.
210 * @param str: string buffer.
211 * @param str_len: length of string buffer.
212 * @return number of characters (except null) needed to print.
213 */
214 int sldns_wire2str_header_scan(uint8_t** data, size_t* data_len, char** str,
215 size_t* str_len);
216
217 /**
218 * Scan wireformat rdata to string, with user buffers.
219 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
220 * @param data: wireformat data.
221 * @param data_len: length of data buffer. The length of the rdata in the
222 * buffer. The rdatalen itself has already been scanned, the data
223 * points to the rdata after the rdatalen.
224 * @param str: string buffer.
225 * @param str_len: length of string buffer.
226 * @param rrtype: RR type of Rdata, host format.
227 * @param pkt: packet for decompression, if NULL no decompression.
228 * @param pktlen: length of packet buffer.
229 * @return number of characters (except null) needed to print.
230 */
231 int sldns_wire2str_rdata_scan(uint8_t** data, size_t* data_len, char** str,
232 size_t* str_len, uint16_t rrtype, uint8_t* pkt, size_t pktlen);
233
234 /**
235 * Scan wireformat rdata to string in unknown format, with user buffers.
236 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
237 * @param data: wireformat data.
238 * @param data_len: length of data buffer, the length of the rdata in buffer.
239 * @param str: string buffer.
240 * @param str_len: length of string buffer.
241 * @return number of characters (except null) needed to print.
242 */
243 int sldns_wire2str_rdata_unknown_scan(uint8_t** data, size_t* data_len,
244 char** str, size_t* str_len);
245
246 /**
247 * Scan wireformat domain name to string, with user buffers.
248 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
249 * @param data: wireformat data.
250 * @param data_len: length of data buffer.
251 * @param str: string buffer.
252 * @param str_len: length of string buffer.
253 * @param pkt: packet for decompression, if NULL no decompression.
254 * @param pktlen: length of packet buffer.
255 * @return number of characters (except null) needed to print.
256 */
257 int sldns_wire2str_dname_scan(uint8_t** data, size_t* data_len, char** str,
258 size_t* str_len, uint8_t* pkt, size_t pktlen);
259
260 /**
261 * Scan wireformat rr type to string, with user buffers.
262 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
263 * @param data: wireformat data.
264 * @param data_len: length of data buffer.
265 * @param str: string buffer.
266 * @param str_len: length of string buffer.
267 * @return number of characters (except null) needed to print.
268 */
269 int sldns_wire2str_type_scan(uint8_t** data, size_t* data_len, char** str,
270 size_t* str_len);
271
272 /**
273 * Scan wireformat rr class to string, with user buffers.
274 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
275 * @param data: wireformat data.
276 * @param data_len: length of data buffer.
277 * @param str: string buffer.
278 * @param str_len: length of string buffer.
279 * @return number of characters (except null) needed to print.
280 */
281 int sldns_wire2str_class_scan(uint8_t** data, size_t* data_len, char** str,
282 size_t* str_len);
283
284 /**
285 * Scan wireformat rr ttl to string, with user buffers.
286 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
287 * @param data: wireformat data.
288 * @param data_len: length of data buffer.
289 * @param str: string buffer.
290 * @param str_len: length of string buffer.
291 * @return number of characters (except null) needed to print.
292 */
293 int sldns_wire2str_ttl_scan(uint8_t** data, size_t* data_len, char** str,
294 size_t* str_len);
295
296
297 /**
298 * Print host format rr type to string. Moves string along, user buffers.
299 * @param str: string buffer.
300 * @param str_len: length of string buffer.
301 * @param rrtype: host format rr type.
302 * @return number of characters (except null) needed to print.
303 */
304 int sldns_wire2str_type_print(char** str, size_t* str_len, uint16_t rrtype);
305
306 /**
307 * Print host format rr class to string. Moves string along, user buffers.
308 * @param str: string buffer.
309 * @param str_len: length of string buffer.
310 * @param rrclass: host format rr class.
311 * @return number of characters (except null) needed to print.
312 */
313 int sldns_wire2str_class_print(char** str, size_t* str_len, uint16_t rrclass);
314
315 /**
316 * Print host format rcode to string. Moves string along, user buffers.
317 * @param str: string buffer.
318 * @param str_len: length of string buffer.
319 * @param rcode: host format rcode number.
320 * @return number of characters (except null) needed to print.
321 */
322 int sldns_wire2str_rcode_print(char** str, size_t* str_len, int rcode);
323
324 /**
325 * Print host format opcode to string. Moves string along, user buffers.
326 * @param str: string buffer.
327 * @param str_len: length of string buffer.
328 * @param opcode: host format opcode number.
329 * @return number of characters (except null) needed to print.
330 */
331 int sldns_wire2str_opcode_print(char** str, size_t* str_len, int opcode);
332
333 /**
334 * Print host format EDNS0 option to string. Moves string along, user buffers.
335 * @param str: string buffer.
336 * @param str_len: length of string buffer.
337 * @param opcode: host format option number.
338 * @return number of characters (except null) needed to print.
339 */
340 int sldns_wire2str_edns_option_code_print(char** str, size_t* str_len,
341 uint16_t opcode);
342
343 /**
344 * Convert RR to string presentation format, on one line. User buffer.
345 * @param rr: wireformat RR data
346 * @param rr_len: length of the rr wire data.
347 * @param str: the string buffer to write to.
348 * If you pass NULL as the str, the return value of the function is
349 * the str_len you need for the entire packet. It does not include
350 * the 0 byte at the end.
351 * @param str_len: the size of the string buffer. If more is needed, it'll
352 * silently truncate the output to fit in the buffer.
353 * @return the number of characters for this element, excluding zerobyte.
354 * Is larger than str_len if output was truncated.
355 */
356 int sldns_wire2str_rr_buf(uint8_t* rr, size_t rr_len, char* str,
357 size_t str_len);
358
359 /**
360 * 3597 printout of an RR in unknown rr format.
361 * There are more format and comment options available for printout
362 * with the function: TBD(TODO)
363 * @param rr: wireformat RR data
364 * @param rr_len: length of the rr wire data.
365 * @param str: the string buffer to write to.
366 * If you pass NULL as the str, the return value of the function is
367 * the str_len you need for the entire rr. It does not include
368 * the 0 byte at the end.
369 * @param str_len: the size of the string buffer. If more is needed, it'll
370 * silently truncate the output to fit in the buffer.
371 * @return the number of characters for this element, excluding zerobyte.
372 * Is larger than str_len if output was truncated.
373 */
374 int sldns_wire2str_rr_unknown_buf(uint8_t* rr, size_t rr_len, char* str,
375 size_t str_len);
376
377 /**
378 * This creates the comment to print after the RR. ; keytag=... , and other
379 * basic comments for RRs.
380 * There are more format and comment options available for printout
381 * with the function: TBD(TODO)
382 * @param rr: wireformat RR data
383 * @param rr_len: length of the rr wire data.
384 * @param dname_len: length of the dname in front of the RR.
385 * @param str: the string buffer to write to.
386 * If you pass NULL as the str, the return value of the function is
387 * the str_len you need for the entire comment. It does not include
388 * the 0 byte at the end.
389 * @param str_len: the size of the string buffer. If more is needed, it'll
390 * silently truncate the output to fit in the buffer.
391 * @return the number of characters for this element, excluding zerobyte.
392 * Is larger than str_len if output was truncated.
393 */
394 int sldns_wire2str_rr_comment_buf(uint8_t* rr, size_t rr_len, size_t dname_len,
395 char* str, size_t str_len);
396
397 /**
398 * Convert RDATA to string presentation format, on one line. User buffer.
399 * @param rdata: wireformat rdata part of an RR.
400 * @param rdata_len: length of the rr wire data.
401 * @param str: the string buffer to write to.
402 * If you pass NULL as the str, the return value of the function is
403 * the str_len you need for the entire packet. It does not include
404 * the 0 byte at the end.
405 * @param str_len: the size of the string buffer. If more is needed, it'll
406 * silently truncate the output to fit in the buffer.
407 * @param rrtype: rr type of the data
408 * @return the number of characters for this element, excluding zerobyte.
409 * Is larger than str_len if output was truncated.
410 */
411 int sldns_wire2str_rdata_buf(uint8_t* rdata, size_t rdata_len, char* str,
412 size_t str_len, uint16_t rrtype);
413
414 /**
415 * Convert wire RR type to a string, 'MX', 'TYPE12'. With user buffer.
416 * @param rrtype: the RR type in host order.
417 * @param str: the string to write to.
418 * @param len: length of str.
419 * @return the number of characters for this element, excluding zerobyte.
420 * Is larger than str_len if output was truncated.
421 */
422 int sldns_wire2str_type_buf(uint16_t rrtype, char* str, size_t len);
423
424 /**
425 * Convert wire RR class to a string, 'IN', 'CLASS12'. With user buffer.
426 * @param rrclass: the RR class in host order.
427 * @param str: the string to write to.
428 * @param len: length of str.
429 * @return the number of characters for this element, excluding zerobyte.
430 * Is larger than str_len if output was truncated.
431 */
432 int sldns_wire2str_class_buf(uint16_t rrclass, char* str, size_t len);
433
434 /**
435 * Convert wire RR rcode to a string, 'NOERROR', 'NXDOMAIN'. With user buffer.
436 * @param rcode: rcode as integer in host order
437 * @param str: the string to write to.
438 * @param len: length of str.
439 * @return the number of characters for this element, excluding zerobyte.
440 * Is larger than str_len if output was truncated.
441 */
442 int sldns_wire2str_rcode_buf(int rcode, char* str, size_t len);
443
444 /**
445 * Convert wire dname to a string, "example.com.". With user buffer.
446 * @param dname: the dname in uncompressed wireformat.
447 * @param dname_len: length of the dname.
448 * @param str: the string to write to.
449 * @param len: length of string.
450 * @return the number of characters for this element, excluding zerobyte.
451 * Is larger than str_len if output was truncated.
452 */
453 int sldns_wire2str_dname_buf(uint8_t* dname, size_t dname_len, char* str,
454 size_t len);
455
456 /**
457 * Scan wireformat rdf field to string, with user buffers.
458 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
459 * @param data: wireformat data.
460 * @param data_len: length of data buffer.
461 * @param str: string buffer.
462 * @param str_len: length of string buffer.
463 * @param rdftype: the type of the rdata field, enum sldns_rdf_type.
464 * @param pkt: packet for decompression, if NULL no decompression.
465 * @param pktlen: length of packet buffer.
466 * @return number of characters (except null) needed to print.
467 * Can return -1 on failure.
468 */
469 int sldns_wire2str_rdf_scan(uint8_t** data, size_t* data_len, char** str,
470 size_t* str_len, int rdftype, uint8_t* pkt, size_t pktlen);
471
472 /**
473 * Scan wireformat int8 field to string, with user buffers.
474 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
475 * @param data: wireformat data.
476 * @param data_len: length of data buffer.
477 * @param str: string buffer.
478 * @param str_len: length of string buffer.
479 * @return number of characters (except null) needed to print.
480 * Can return -1 on failure.
481 */
482 int sldns_wire2str_int8_scan(uint8_t** data, size_t* data_len, char** str,
483 size_t* str_len);
484
485 /**
486 * Scan wireformat int16 field to string, with user buffers.
487 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
488 * @param data: wireformat data.
489 * @param data_len: length of data buffer.
490 * @param str: string buffer.
491 * @param str_len: length of string buffer.
492 * @return number of characters (except null) needed to print.
493 * Can return -1 on failure.
494 */
495 int sldns_wire2str_int16_scan(uint8_t** data, size_t* data_len, char** str,
496 size_t* str_len);
497
498 /**
499 * Scan wireformat int32 field to string, with user buffers.
500 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
501 * @param data: wireformat data.
502 * @param data_len: length of data buffer.
503 * @param str: string buffer.
504 * @param str_len: length of string buffer.
505 * @return number of characters (except null) needed to print.
506 * Can return -1 on failure.
507 */
508 int sldns_wire2str_int32_scan(uint8_t** data, size_t* data_len, char** str,
509 size_t* str_len);
510
511 /**
512 * Scan wireformat period field to string, with user buffers.
513 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
514 * @param data: wireformat data.
515 * @param data_len: length of data buffer.
516 * @param str: string buffer.
517 * @param str_len: length of string buffer.
518 * @return number of characters (except null) needed to print.
519 * Can return -1 on failure.
520 */
521 int sldns_wire2str_period_scan(uint8_t** data, size_t* data_len, char** str,
522 size_t* str_len);
523
524 /**
525 * Scan wireformat tsigtime field to string, with user buffers.
526 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
527 * @param data: wireformat data.
528 * @param data_len: length of data buffer.
529 * @param str: string buffer.
530 * @param str_len: length of string buffer.
531 * @return number of characters (except null) needed to print.
532 * Can return -1 on failure.
533 */
534 int sldns_wire2str_tsigtime_scan(uint8_t** data, size_t* data_len, char** str,
535 size_t* str_len);
536
537 /**
538 * Scan wireformat ip4 A field to string, with user buffers.
539 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
540 * @param data: wireformat data.
541 * @param data_len: length of data buffer.
542 * @param str: string buffer.
543 * @param str_len: length of string buffer.
544 * @return number of characters (except null) needed to print.
545 * Can return -1 on failure.
546 */
547 int sldns_wire2str_a_scan(uint8_t** data, size_t* data_len, char** str,
548 size_t* str_len);
549
550 /**
551 * Scan wireformat ip6 AAAA field to string, with user buffers.
552 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
553 * @param data: wireformat data.
554 * @param data_len: length of data buffer.
555 * @param str: string buffer.
556 * @param str_len: length of string buffer.
557 * @return number of characters (except null) needed to print.
558 * Can return -1 on failure.
559 */
560 int sldns_wire2str_aaaa_scan(uint8_t** data, size_t* data_len, char** str,
561 size_t* str_len);
562
563 /**
564 * Scan wireformat str field to string, with user buffers.
565 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
566 * @param data: wireformat data.
567 * @param data_len: length of data buffer.
568 * @param str: string buffer.
569 * @param str_len: length of string buffer.
570 * @return number of characters (except null) needed to print.
571 * Can return -1 on failure.
572 */
573 int sldns_wire2str_str_scan(uint8_t** data, size_t* data_len, char** str,
574 size_t* str_len);
575
576 /**
577 * Scan wireformat apl field to string, with user buffers.
578 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
579 * @param data: wireformat data.
580 * @param data_len: length of data buffer.
581 * @param str: string buffer.
582 * @param str_len: length of string buffer.
583 * @return number of characters (except null) needed to print.
584 * Can return -1 on failure.
585 */
586 int sldns_wire2str_apl_scan(uint8_t** data, size_t* data_len, char** str,
587 size_t* str_len);
588
589 /**
590 * Scan wireformat b32_ext field to string, with user buffers.
591 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
592 * @param data: wireformat data.
593 * @param data_len: length of data buffer.
594 * @param str: string buffer.
595 * @param str_len: length of string buffer.
596 * @return number of characters (except null) needed to print.
597 * Can return -1 on failure.
598 */
599 int sldns_wire2str_b32_ext_scan(uint8_t** data, size_t* data_len, char** str,
600 size_t* str_len);
601
602 /**
603 * Scan wireformat b64 field to string, with user buffers.
604 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
605 * @param data: wireformat data.
606 * @param data_len: length of data buffer.
607 * @param str: string buffer.
608 * @param str_len: length of string buffer.
609 * @return number of characters (except null) needed to print.
610 * Can return -1 on failure.
611 */
612 int sldns_wire2str_b64_scan(uint8_t** data, size_t* data_len, char** str,
613 size_t* str_len);
614
615 /**
616 * Scan wireformat hex field to string, with user buffers.
617 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
618 * @param data: wireformat data.
619 * @param data_len: length of data buffer.
620 * @param str: string buffer.
621 * @param str_len: length of string buffer.
622 * @return number of characters (except null) needed to print.
623 * Can return -1 on failure.
624 */
625 int sldns_wire2str_hex_scan(uint8_t** data, size_t* data_len, char** str,
626 size_t* str_len);
627
628 /**
629 * Scan wireformat nsec bitmap field to string, with user buffers.
630 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
631 * @param data: wireformat data.
632 * @param data_len: length of data buffer.
633 * @param str: string buffer.
634 * @param str_len: length of string buffer.
635 * @return number of characters (except null) needed to print.
636 * Can return -1 on failure.
637 */
638 int sldns_wire2str_nsec_scan(uint8_t** data, size_t* data_len, char** str,
639 size_t* str_len);
640
641 /**
642 * Scan wireformat nsec3_salt field to string, with user buffers.
643 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
644 * @param data: wireformat data.
645 * @param data_len: length of data buffer.
646 * @param str: string buffer.
647 * @param str_len: length of string buffer.
648 * @return number of characters (except null) needed to print.
649 * Can return -1 on failure.
650 */
651 int sldns_wire2str_nsec3_salt_scan(uint8_t** data, size_t* data_len, char** str,
652 size_t* str_len);
653
654 /**
655 * Scan wireformat cert_alg field to string, with user buffers.
656 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
657 * @param data: wireformat data.
658 * @param data_len: length of data buffer.
659 * @param str: string buffer.
660 * @param str_len: length of string buffer.
661 * @return number of characters (except null) needed to print.
662 * Can return -1 on failure.
663 */
664 int sldns_wire2str_cert_alg_scan(uint8_t** data, size_t* data_len, char** str,
665 size_t* str_len);
666
667 /**
668 * Scan wireformat alg field to string, with user buffers.
669 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
670 * @param data: wireformat data.
671 * @param data_len: length of data buffer.
672 * @param str: string buffer.
673 * @param str_len: length of string buffer.
674 * @return number of characters (except null) needed to print.
675 * Can return -1 on failure.
676 */
677 int sldns_wire2str_alg_scan(uint8_t** data, size_t* data_len, char** str,
678 size_t* str_len);
679
680 /**
681 * Scan wireformat type unknown field to string, with user buffers.
682 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
683 * @param data: wireformat data.
684 * @param data_len: length of data buffer.
685 * @param str: string buffer.
686 * @param str_len: length of string buffer.
687 * @return number of characters (except null) needed to print.
688 * Can return -1 on failure.
689 */
690 int sldns_wire2str_unknown_scan(uint8_t** data, size_t* data_len, char** str,
691 size_t* str_len);
692
693 /**
694 * Scan wireformat time field to string, with user buffers.
695 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
696 * @param data: wireformat data.
697 * @param data_len: length of data buffer.
698 * @param str: string buffer.
699 * @param str_len: length of string buffer.
700 * @return number of characters (except null) needed to print.
701 * Can return -1 on failure.
702 */
703 int sldns_wire2str_time_scan(uint8_t** data, size_t* data_len, char** str,
704 size_t* str_len);
705
706 /**
707 * Scan wireformat LOC field to string, with user buffers.
708 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
709 * @param data: wireformat data.
710 * @param data_len: length of data buffer.
711 * @param str: string buffer.
712 * @param str_len: length of string buffer.
713 * @return number of characters (except null) needed to print.
714 * Can return -1 on failure.
715 */
716 int sldns_wire2str_loc_scan(uint8_t** data, size_t* data_len, char** str,
717 size_t* str_len);
718
719 /**
720 * Scan wireformat WKS field to string, with user buffers.
721 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
722 * @param data: wireformat data.
723 * @param data_len: length of data buffer.
724 * @param str: string buffer.
725 * @param str_len: length of string buffer.
726 * @return number of characters (except null) needed to print.
727 * Can return -1 on failure.
728 */
729 int sldns_wire2str_wks_scan(uint8_t** data, size_t* data_len, char** str,
730 size_t* str_len);
731
732 /**
733 * Scan wireformat NSAP field to string, with user buffers.
734 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
735 * @param data: wireformat data.
736 * @param data_len: length of data buffer.
737 * @param str: string buffer.
738 * @param str_len: length of string buffer.
739 * @return number of characters (except null) needed to print.
740 * Can return -1 on failure.
741 */
742 int sldns_wire2str_nsap_scan(uint8_t** data, size_t* data_len, char** str,
743 size_t* str_len);
744
745 /**
746 * Scan wireformat ATMA field to string, with user buffers.
747 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
748 * @param data: wireformat data.
749 * @param data_len: length of data buffer.
750 * @param str: string buffer.
751 * @param str_len: length of string buffer.
752 * @return number of characters (except null) needed to print.
753 * Can return -1 on failure.
754 */
755 int sldns_wire2str_atma_scan(uint8_t** data, size_t* data_len, char** str,
756 size_t* str_len);
757
758 /**
759 * Scan wireformat IPSECKEY field to string, with user buffers.
760 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
761 * @param data: wireformat data.
762 * @param data_len: length of data buffer.
763 * @param str: string buffer.
764 * @param str_len: length of string buffer.
765 * @param pkt: packet for decompression, if NULL no decompression.
766 * @param pktlen: length of packet buffer.
767 * @return number of characters (except null) needed to print.
768 * Can return -1 on failure.
769 */
770 int sldns_wire2str_ipseckey_scan(uint8_t** data, size_t* data_len, char** str,
771 size_t* str_len, uint8_t* pkt, size_t pktlen);
772
773 /**
774 * Scan wireformat HIP (algo, HIT, pubkey) field to string, with user buffers.
775 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
776 * @param data: wireformat data.
777 * @param data_len: length of data buffer.
778 * @param str: string buffer.
779 * @param str_len: length of string buffer.
780 * @return number of characters (except null) needed to print.
781 * Can return -1 on failure.
782 */
783 int sldns_wire2str_hip_scan(uint8_t** data, size_t* data_len, char** str,
784 size_t* str_len);
785
786 /**
787 * Scan wireformat int16_data field to string, with user buffers.
788 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
789 * @param data: wireformat data.
790 * @param data_len: length of data buffer.
791 * @param str: string buffer.
792 * @param str_len: length of string buffer.
793 * @return number of characters (except null) needed to print.
794 * Can return -1 on failure.
795 */
796 int sldns_wire2str_int16_data_scan(uint8_t** data, size_t* data_len, char** str,
797 size_t* str_len);
798
799 /**
800 * Scan wireformat nsec3_next_owner field to string, with user buffers.
801 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
802 * @param data: wireformat data.
803 * @param data_len: length of data buffer.
804 * @param str: string buffer.
805 * @param str_len: length of string buffer.
806 * @return number of characters (except null) needed to print.
807 * Can return -1 on failure.
808 */
809 int sldns_wire2str_nsec3_next_owner_scan(uint8_t** data, size_t* data_len,
810 char** str, size_t* str_len);
811
812 /**
813 * Scan wireformat ILNP64 field to string, with user buffers.
814 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
815 * @param data: wireformat data.
816 * @param data_len: length of data buffer.
817 * @param str: string buffer.
818 * @param str_len: length of string buffer.
819 * @return number of characters (except null) needed to print.
820 * Can return -1 on failure.
821 */
822 int sldns_wire2str_ilnp64_scan(uint8_t** data, size_t* data_len, char** str,
823 size_t* str_len);
824
825 /**
826 * Scan wireformat EUI48 field to string, with user buffers.
827 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
828 * @param data: wireformat data.
829 * @param data_len: length of data buffer.
830 * @param str: string buffer.
831 * @param str_len: length of string buffer.
832 * @return number of characters (except null) needed to print.
833 * Can return -1 on failure.
834 */
835 int sldns_wire2str_eui48_scan(uint8_t** data, size_t* data_len, char** str,
836 size_t* str_len);
837
838 /**
839 * Scan wireformat EUI64 field to string, with user buffers.
840 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
841 * @param data: wireformat data.
842 * @param data_len: length of data buffer.
843 * @param str: string buffer.
844 * @param str_len: length of string buffer.
845 * @return number of characters (except null) needed to print.
846 * Can return -1 on failure.
847 */
848 int sldns_wire2str_eui64_scan(uint8_t** data, size_t* data_len, char** str,
849 size_t* str_len);
850
851 /**
852 * Scan wireformat TAG field to string, with user buffers.
853 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
854 * @param data: wireformat data.
855 * @param data_len: length of data buffer.
856 * @param str: string buffer.
857 * @param str_len: length of string buffer.
858 * @return number of characters (except null) needed to print.
859 * Can return -1 on failure.
860 */
861 int sldns_wire2str_tag_scan(uint8_t** data, size_t* data_len, char** str,
862 size_t* str_len);
863
864 /**
865 * Scan wireformat long_str field to string, with user buffers.
866 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
867 * @param data: wireformat data.
868 * @param data_len: length of data buffer.
869 * @param str: string buffer.
870 * @param str_len: length of string buffer.
871 * @return number of characters (except null) needed to print.
872 * Can return -1 on failure.
873 */
874 int sldns_wire2str_long_str_scan(uint8_t** data, size_t* data_len, char** str,
875 size_t* str_len);
876
877 /**
878 * Print EDNS LLQ option data to string. User buffers, moves string pointers.
879 * @param str: string buffer.
880 * @param str_len: length of string buffer.
881 * @param option_data: buffer with EDNS option code data.
882 * @param option_len: length of the data for this option.
883 * @return number of characters (except null) needed to print.
884 */
885 int sldns_wire2str_edns_llq_print(char** str, size_t* str_len,
886 uint8_t* option_data, size_t option_len);
887
888 /**
889 * Print EDNS UL option data to string. User buffers, moves string pointers.
890 * @param str: string buffer.
891 * @param str_len: length of string buffer.
892 * @param option_data: buffer with EDNS option code data.
893 * @param option_len: length of the data for this option.
894 * @return number of characters (except null) needed to print.
895 */
896 int sldns_wire2str_edns_ul_print(char** str, size_t* str_len,
897 uint8_t* option_data, size_t option_len);
898
899 /**
900 * Print EDNS NSID option data to string. User buffers, moves string pointers.
901 * @param str: string buffer.
902 * @param str_len: length of string buffer.
903 * @param option_data: buffer with EDNS option code data.
904 * @param option_len: length of the data for this option.
905 * @return number of characters (except null) needed to print.
906 */
907 int sldns_wire2str_edns_nsid_print(char** str, size_t* str_len,
908 uint8_t* option_data, size_t option_len);
909
910 /**
911 * Print EDNS DAU option data to string. User buffers, moves string pointers.
912 * @param str: string buffer.
913 * @param str_len: length of string buffer.
914 * @param option_data: buffer with EDNS option code data.
915 * @param option_len: length of the data for this option.
916 * @return number of characters (except null) needed to print.
917 */
918 int sldns_wire2str_edns_dau_print(char** str, size_t* str_len,
919 uint8_t* option_data, size_t option_len);
920
921 /**
922 * Print EDNS DHU option data to string. User buffers, moves string pointers.
923 * @param str: string buffer.
924 * @param str_len: length of string buffer.
925 * @param option_data: buffer with EDNS option code data.
926 * @param option_len: length of the data for this option.
927 * @return number of characters (except null) needed to print.
928 */
929 int sldns_wire2str_edns_dhu_print(char** str, size_t* str_len,
930 uint8_t* option_data, size_t option_len);
931
932 /**
933 * Print EDNS N3U option data to string. User buffers, moves string pointers.
934 * @param str: string buffer.
935 * @param str_len: length of string buffer.
936 * @param option_data: buffer with EDNS option code data.
937 * @param option_len: length of the data for this option.
938 * @return number of characters (except null) needed to print.
939 */
940 int sldns_wire2str_edns_n3u_print(char** str, size_t* str_len,
941 uint8_t* option_data, size_t option_len);
942
943 /**
944 * Print EDNS SUBNET option data to string. User buffers, moves string pointers.
945 * @param str: string buffer.
946 * @param str_len: length of string buffer.
947 * @param option_data: buffer with EDNS option code data.
948 * @param option_len: length of the data for this option.
949 * @return number of characters (except null) needed to print.
950 */
951 int sldns_wire2str_edns_subnet_print(char** str, size_t* str_len,
952 uint8_t* option_data, size_t option_len);
953
954 /**
955 * Print an EDNS option as OPT: VALUE. User buffers, moves string pointers.
956 * @param str: string buffer.
957 * @param str_len: length of string buffer.
958 * @param option_code: host format EDNS option code.
959 * @param option_data: buffer with EDNS option code data.
960 * @param option_len: length of the data for this option.
961 * @return number of characters (except null) needed to print.
962 */
963 int sldns_wire2str_edns_option_print(char** str, size_t* str_len,
964 uint16_t option_code, uint8_t* option_data, size_t option_len);
965
966 /**
967 * Scan wireformat EDNS OPT to string, with user buffers.
968 * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
969 * @param data: wireformat data.
970 * @param data_len: length of data buffer.
971 * @param str: string buffer.
972 * @param str_len: length of string buffer.
973 * @param pkt: packet with header and other info (may be NULL)
974 * @param pktlen: length of packet buffer.
975 * @return number of characters (except null) needed to print.
976 */
977 int sldns_wire2str_edns_scan(uint8_t** data, size_t* data_len, char** str,
978 size_t* str_len, uint8_t* pkt, size_t pktlen);
979
980 #ifdef __cplusplus
981 }
982 #endif
983
984 #endif /* LDNS_WIRE2STR_H */