2 * wire2str.h - txt presentation of RRs
4 * (c) NLnet Labs, 2005-2006
6 * See the file LICENSE for the license
12 * Contains functions to translate the wireformat to text
13 * representation, as well as functions to print them.
16 #ifndef LDNS_WIRE2STR_H
17 #define LDNS_WIRE2STR_H
22 struct sldns_struct_lookup_table
;
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
;
32 extern struct sldns_struct_lookup_table
* sldns_rcodes
;
33 /** Operation codes */
34 extern struct sldns_struct_lookup_table
* sldns_opcodes
;
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
;
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.
48 char* sldns_wire2str_pkt(uint8_t* data
, size_t len
);
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.
57 char* sldns_wire2str_rr(uint8_t* rr
, size_t len
);
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.
65 char* sldns_wire2str_dname(uint8_t* dname
, size_t dname_len
);
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.
72 char* sldns_wire2str_type(uint16_t rrtype
);
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.
79 char* sldns_wire2str_class(uint16_t rrclass
);
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.
86 char* sldns_wire2str_rcode(int rcode
);
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.
96 int sldns_str_vprint(char** str
, size_t* slen
, const char* format
, va_list args
);
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.
105 int sldns_str_print(char** str
, size_t* slen
, const char* format
, ...)
106 ATTR_FORMAT(printf
, 3, 4);
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.
123 int sldns_wire2str_pkt_buf(uint8_t* data
, size_t data_len
, char* str
,
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.
145 int sldns_wire2str_pkt_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
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
);
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.
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
);
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.
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
);
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
199 * @param rrtype: type of the RR, host format.
200 * @return number of characters (except null) needed to print.
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
);
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.
214 int sldns_wire2str_header_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
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
);
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.
243 int sldns_wire2str_rdata_unknown_scan(uint8_t** data
, size_t* data_len
,
244 char** str
, size_t* str_len
);
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.
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
);
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.
269 int sldns_wire2str_type_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
281 int sldns_wire2str_class_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
293 int sldns_wire2str_ttl_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
304 int sldns_wire2str_type_print(char** str
, size_t* str_len
, uint16_t rrtype
);
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.
313 int sldns_wire2str_class_print(char** str
, size_t* str_len
, uint16_t rrclass
);
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.
322 int sldns_wire2str_rcode_print(char** str
, size_t* str_len
, int rcode
);
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.
331 int sldns_wire2str_opcode_print(char** str
, size_t* str_len
, int opcode
);
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.
340 int sldns_wire2str_edns_option_code_print(char** str
, size_t* str_len
,
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.
356 int sldns_wire2str_rr_buf(uint8_t* rr
, size_t rr_len
, char* str
,
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.
374 int sldns_wire2str_rr_unknown_buf(uint8_t* rr
, size_t rr_len
, char* str
,
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.
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
);
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.
411 int sldns_wire2str_rdata_buf(uint8_t* rdata
, size_t rdata_len
, char* str
,
412 size_t str_len
, uint16_t rrtype
);
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.
422 int sldns_wire2str_type_buf(uint16_t rrtype
, char* str
, size_t len
);
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.
432 int sldns_wire2str_class_buf(uint16_t rrclass
, char* str
, size_t len
);
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.
442 int sldns_wire2str_rcode_buf(int rcode
, char* str
, size_t len
);
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.
453 int sldns_wire2str_dname_buf(uint8_t* dname
, size_t dname_len
, char* str
,
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.
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
);
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.
482 int sldns_wire2str_int8_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
495 int sldns_wire2str_int16_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
508 int sldns_wire2str_int32_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
521 int sldns_wire2str_period_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
534 int sldns_wire2str_tsigtime_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
547 int sldns_wire2str_a_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
560 int sldns_wire2str_aaaa_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
573 int sldns_wire2str_str_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
586 int sldns_wire2str_apl_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
599 int sldns_wire2str_b32_ext_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
612 int sldns_wire2str_b64_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
625 int sldns_wire2str_hex_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
638 int sldns_wire2str_nsec_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
651 int sldns_wire2str_nsec3_salt_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
664 int sldns_wire2str_cert_alg_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
677 int sldns_wire2str_alg_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
690 int sldns_wire2str_unknown_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
703 int sldns_wire2str_time_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
716 int sldns_wire2str_loc_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
729 int sldns_wire2str_wks_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
742 int sldns_wire2str_nsap_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
755 int sldns_wire2str_atma_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
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
);
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.
783 int sldns_wire2str_hip_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
796 int sldns_wire2str_int16_data_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
809 int sldns_wire2str_nsec3_next_owner_scan(uint8_t** data
, size_t* data_len
,
810 char** str
, size_t* str_len
);
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.
822 int sldns_wire2str_ilnp64_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
835 int sldns_wire2str_eui48_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
848 int sldns_wire2str_eui64_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
861 int sldns_wire2str_tag_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
874 int sldns_wire2str_long_str_scan(uint8_t** data
, size_t* data_len
, char** str
,
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.
885 int sldns_wire2str_edns_llq_print(char** str
, size_t* str_len
,
886 uint8_t* option_data
, size_t option_len
);
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.
896 int sldns_wire2str_edns_ul_print(char** str
, size_t* str_len
,
897 uint8_t* option_data
, size_t option_len
);
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.
907 int sldns_wire2str_edns_nsid_print(char** str
, size_t* str_len
,
908 uint8_t* option_data
, size_t option_len
);
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.
918 int sldns_wire2str_edns_dau_print(char** str
, size_t* str_len
,
919 uint8_t* option_data
, size_t option_len
);
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.
929 int sldns_wire2str_edns_dhu_print(char** str
, size_t* str_len
,
930 uint8_t* option_data
, size_t option_len
);
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.
940 int sldns_wire2str_edns_n3u_print(char** str
, size_t* str_len
,
941 uint8_t* option_data
, size_t option_len
);
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.
951 int sldns_wire2str_edns_subnet_print(char** str
, size_t* str_len
,
952 uint8_t* option_data
, size_t option_len
);
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.
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
);
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.
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
);
984 #endif /* LDNS_WIRE2STR_H */