xref: /freebsd/contrib/unbound/sldns/wire2str.h (revision 103ba509e72e3949d22485666949e9705d4af8cd)
109a3aaf3SDag-Erling Smørgrav /**
209a3aaf3SDag-Erling Smørgrav  * wire2str.h -  txt presentation of RRs
309a3aaf3SDag-Erling Smørgrav  *
409a3aaf3SDag-Erling Smørgrav  * (c) NLnet Labs, 2005-2006
509a3aaf3SDag-Erling Smørgrav  *
609a3aaf3SDag-Erling Smørgrav  * See the file LICENSE for the license
709a3aaf3SDag-Erling Smørgrav  */
809a3aaf3SDag-Erling Smørgrav 
909a3aaf3SDag-Erling Smørgrav /**
1009a3aaf3SDag-Erling Smørgrav  * \file
1109a3aaf3SDag-Erling Smørgrav  *
1209a3aaf3SDag-Erling Smørgrav  * Contains functions to translate the wireformat to text
1309a3aaf3SDag-Erling Smørgrav  * representation, as well as functions to print them.
1409a3aaf3SDag-Erling Smørgrav  */
1509a3aaf3SDag-Erling Smørgrav 
1609a3aaf3SDag-Erling Smørgrav #ifndef LDNS_WIRE2STR_H
1709a3aaf3SDag-Erling Smørgrav #define LDNS_WIRE2STR_H
1809a3aaf3SDag-Erling Smørgrav 
1909a3aaf3SDag-Erling Smørgrav #ifdef __cplusplus
2009a3aaf3SDag-Erling Smørgrav extern "C" {
2109a3aaf3SDag-Erling Smørgrav #endif
2209a3aaf3SDag-Erling Smørgrav struct sldns_struct_lookup_table;
2309a3aaf3SDag-Erling Smørgrav 
2409a3aaf3SDag-Erling Smørgrav /* lookup tables for standard DNS stuff  */
2509a3aaf3SDag-Erling Smørgrav /** Taken from RFC 2535, section 7.  */
2609a3aaf3SDag-Erling Smørgrav extern struct sldns_struct_lookup_table* sldns_algorithms;
2709a3aaf3SDag-Erling Smørgrav /** DS record hash algorithms */
2809a3aaf3SDag-Erling Smørgrav extern struct sldns_struct_lookup_table* sldns_hashes;
2909a3aaf3SDag-Erling Smørgrav /** Taken from RFC 2538, section 2.1.  */
3009a3aaf3SDag-Erling Smørgrav extern struct sldns_struct_lookup_table* sldns_cert_algorithms;
3109a3aaf3SDag-Erling Smørgrav /** Response codes */
3209a3aaf3SDag-Erling Smørgrav extern struct sldns_struct_lookup_table* sldns_rcodes;
3309a3aaf3SDag-Erling Smørgrav /** Operation codes */
3409a3aaf3SDag-Erling Smørgrav extern struct sldns_struct_lookup_table* sldns_opcodes;
3509a3aaf3SDag-Erling Smørgrav /** EDNS flags */
3609a3aaf3SDag-Erling Smørgrav extern struct sldns_struct_lookup_table* sldns_edns_flags;
3709a3aaf3SDag-Erling Smørgrav /** EDNS option codes */
3809a3aaf3SDag-Erling Smørgrav extern struct sldns_struct_lookup_table* sldns_edns_options;
39*103ba509SCy Schubert /** EDNS EDE codes */
40*103ba509SCy Schubert extern struct sldns_struct_lookup_table* sldns_edns_ede_codes;
4109a3aaf3SDag-Erling Smørgrav /** error string from wireparse */
4209a3aaf3SDag-Erling Smørgrav extern struct sldns_struct_lookup_table* sldns_wireparse_errors;
43c7f4d7adSDag-Erling Smørgrav /** tsig errors are the rcodes with extra (higher) values */
44c7f4d7adSDag-Erling Smørgrav extern struct sldns_struct_lookup_table* sldns_tsig_errors;
4509a3aaf3SDag-Erling Smørgrav 
4609a3aaf3SDag-Erling Smørgrav /**
4709a3aaf3SDag-Erling Smørgrav  * Convert wireformat packet to a string representation
4809a3aaf3SDag-Erling Smørgrav  * @param data: wireformat packet data (starting at ID bytes).
4909a3aaf3SDag-Erling Smørgrav  * @param len: length of packet.
5009a3aaf3SDag-Erling Smørgrav  * @return string(malloced) or NULL on failure.
5109a3aaf3SDag-Erling Smørgrav  */
5209a3aaf3SDag-Erling Smørgrav char* sldns_wire2str_pkt(uint8_t* data, size_t len);
5309a3aaf3SDag-Erling Smørgrav 
5409a3aaf3SDag-Erling Smørgrav /**
5509a3aaf3SDag-Erling Smørgrav  * Convert wireformat RR to a string representation.
5609a3aaf3SDag-Erling Smørgrav  * @param rr: the wireformat RR, in uncompressed form.  Starts at the domain
5709a3aaf3SDag-Erling Smørgrav  * 	name start, ends with the rdata of the RR.
5809a3aaf3SDag-Erling Smørgrav  * @param len: length of the rr wireformat.
5909a3aaf3SDag-Erling Smørgrav  * @return string(malloced) or NULL on failure.
6009a3aaf3SDag-Erling Smørgrav  */
6109a3aaf3SDag-Erling Smørgrav char* sldns_wire2str_rr(uint8_t* rr, size_t len);
6209a3aaf3SDag-Erling Smørgrav 
6309a3aaf3SDag-Erling Smørgrav /**
6424e36522SCy Schubert  * Convert wire dname to a string.
6509a3aaf3SDag-Erling Smørgrav  * @param dname: the dname in uncompressed wireformat.
6609a3aaf3SDag-Erling Smørgrav  * @param dname_len: length of the dname.
6709a3aaf3SDag-Erling Smørgrav  * @return string or NULL on failure.
6809a3aaf3SDag-Erling Smørgrav  */
6909a3aaf3SDag-Erling Smørgrav char* sldns_wire2str_dname(uint8_t* dname, size_t dname_len);
7009a3aaf3SDag-Erling Smørgrav 
7109a3aaf3SDag-Erling Smørgrav /**
7209a3aaf3SDag-Erling Smørgrav  * Convert wire RR type to a string, 'MX', 'TYPE1234'...
7309a3aaf3SDag-Erling Smørgrav  * @param rrtype: the RR type in host order.
7409a3aaf3SDag-Erling Smørgrav  * @return malloced string with the RR type or NULL on malloc failure.
7509a3aaf3SDag-Erling Smørgrav  */
7609a3aaf3SDag-Erling Smørgrav char* sldns_wire2str_type(uint16_t rrtype);
7709a3aaf3SDag-Erling Smørgrav 
7809a3aaf3SDag-Erling Smørgrav /**
7909a3aaf3SDag-Erling Smørgrav  * Convert wire RR class to a string, 'IN', 'CLASS1'.
8009a3aaf3SDag-Erling Smørgrav  * @param rrclass: the RR class in host order.
8109a3aaf3SDag-Erling Smørgrav  * @return malloced string with the RR class or NULL on malloc failure.
8209a3aaf3SDag-Erling Smørgrav  */
8309a3aaf3SDag-Erling Smørgrav char* sldns_wire2str_class(uint16_t rrclass);
8409a3aaf3SDag-Erling Smørgrav 
8509a3aaf3SDag-Erling Smørgrav /**
8609a3aaf3SDag-Erling Smørgrav  * Convert wire packet rcode to a string, 'NOERROR', 'NXDOMAIN'...
8709a3aaf3SDag-Erling Smørgrav  * @param rcode: as integer, host order
8809a3aaf3SDag-Erling Smørgrav  * @return malloced string with the rcode or NULL on malloc failure.
8909a3aaf3SDag-Erling Smørgrav  */
9009a3aaf3SDag-Erling Smørgrav char* sldns_wire2str_rcode(int rcode);
9109a3aaf3SDag-Erling Smørgrav 
9209a3aaf3SDag-Erling Smørgrav /**
9309a3aaf3SDag-Erling Smørgrav  * Print to string, move string along for next content. With va_list.
9409a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.  Adjusted at end to after the output.
9509a3aaf3SDag-Erling Smørgrav  * @param slen: length of the string buffer.  Adjusted at end.
9609a3aaf3SDag-Erling Smørgrav  * @param format: printf format string.
9709a3aaf3SDag-Erling Smørgrav  * @param args: arguments for printf.
9809a3aaf3SDag-Erling Smørgrav  * @return number of characters needed. Can be larger than slen.
9909a3aaf3SDag-Erling Smørgrav  */
10009a3aaf3SDag-Erling Smørgrav int sldns_str_vprint(char** str, size_t* slen, const char* format, va_list args);
10109a3aaf3SDag-Erling Smørgrav 
10209a3aaf3SDag-Erling Smørgrav /**
10309a3aaf3SDag-Erling Smørgrav  * Print to string, move string along for next content.
10409a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.  Adjusted at end to after the output.
10509a3aaf3SDag-Erling Smørgrav  * @param slen: length of the string buffer.  Adjusted at end.
10609a3aaf3SDag-Erling Smørgrav  * @param format: printf format string and arguments for it.
10709a3aaf3SDag-Erling Smørgrav  * @return number of characters needed. Can be larger than slen.
10809a3aaf3SDag-Erling Smørgrav  */
10909a3aaf3SDag-Erling Smørgrav int sldns_str_print(char** str, size_t* slen, const char* format, ...)
11009a3aaf3SDag-Erling Smørgrav 	ATTR_FORMAT(printf, 3, 4);
11109a3aaf3SDag-Erling Smørgrav 
11209a3aaf3SDag-Erling Smørgrav /**
11309a3aaf3SDag-Erling Smørgrav  * Convert wireformat packet to a string representation with user buffer
11409a3aaf3SDag-Erling Smørgrav  * It appends every RR with default comments.
11509a3aaf3SDag-Erling Smørgrav  * For more formatter options use the function: TBD(TODO)
11609a3aaf3SDag-Erling Smørgrav  * @param data: wireformat packet data (starting at ID bytes).
11709a3aaf3SDag-Erling Smørgrav  * @param data_len: length of packet.
11809a3aaf3SDag-Erling Smørgrav  * @param str: the string buffer for the output.
11909a3aaf3SDag-Erling Smørgrav  * 	If you pass NULL as the str the return value of the function is
12009a3aaf3SDag-Erling Smørgrav  * 	the str_len you need for the entire packet.  It does not include
12109a3aaf3SDag-Erling Smørgrav  * 	the 0 byte at the end.
12209a3aaf3SDag-Erling Smørgrav  * @param str_len: the size of the string buffer.  If more is needed, it'll
12309a3aaf3SDag-Erling Smørgrav  * 	silently truncate the output to fit in the buffer.
12409a3aaf3SDag-Erling Smørgrav  * @return the number of characters for this element, excluding zerobyte.
125b5663de9SDag-Erling Smørgrav  * 	Is larger or equal than str_len if output was truncated.
12609a3aaf3SDag-Erling Smørgrav  */
12709a3aaf3SDag-Erling Smørgrav int sldns_wire2str_pkt_buf(uint8_t* data, size_t data_len, char* str,
12809a3aaf3SDag-Erling Smørgrav 	size_t str_len);
12909a3aaf3SDag-Erling Smørgrav 
13009a3aaf3SDag-Erling Smørgrav /**
13109a3aaf3SDag-Erling Smørgrav  * Scan wireformat packet to a string representation with user buffer
13209a3aaf3SDag-Erling Smørgrav  * It appends every RR with default comments.
13309a3aaf3SDag-Erling Smørgrav  * For more formatter options use the function: TBD(TODO)
13409a3aaf3SDag-Erling Smørgrav  * @param data: wireformat packet data (starting at ID bytes).
13509a3aaf3SDag-Erling Smørgrav  * @param data_len: length of packet.
13609a3aaf3SDag-Erling Smørgrav  * @param str: the string buffer for the output.
13709a3aaf3SDag-Erling Smørgrav  * @param str_len: the size of the string buffer.
13809a3aaf3SDag-Erling Smørgrav  * @return number of characters for string.
13909a3aaf3SDag-Erling Smørgrav  * returns the number of characters that are needed (except terminating null),
14009a3aaf3SDag-Erling Smørgrav  * so it may return a value larger than str_len.
14109a3aaf3SDag-Erling Smørgrav  * On error you get less output (i.e. shorter output in str (null terminated))
14209a3aaf3SDag-Erling Smørgrav  * On exit the data, data_len, str and str_len values are adjusted to move them
14309a3aaf3SDag-Erling Smørgrav  * from their original position along the input and output for the content
14409a3aaf3SDag-Erling Smørgrav  * that has been consumed (and produced) by this function.  If the end of the
14509a3aaf3SDag-Erling Smørgrav  * output string is reached, *str_len is set to 0.  The output string is null
14609a3aaf3SDag-Erling Smørgrav  * terminated (shortening the output if necessary).  If the end of the input
14709a3aaf3SDag-Erling Smørgrav  * is reached *data_len is set to 0.
14809a3aaf3SDag-Erling Smørgrav  */
14909a3aaf3SDag-Erling Smørgrav int sldns_wire2str_pkt_scan(uint8_t** data, size_t* data_len, char** str,
15009a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
15109a3aaf3SDag-Erling Smørgrav 
15209a3aaf3SDag-Erling Smørgrav /**
15309a3aaf3SDag-Erling Smørgrav  * Scan wireformat rr to string, with user buffers.  It shifts the arguments
15409a3aaf3SDag-Erling Smørgrav  * to move along (see sldns_wire2str_pkt_scan).
15509a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
15609a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
15709a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
15809a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
15909a3aaf3SDag-Erling Smørgrav  * @param pkt: packet for decompression, if NULL no decompression.
16009a3aaf3SDag-Erling Smørgrav  * @param pktlen: length of packet buffer.
1610eefd307SCy Schubert  * @param comprloop: if pkt, bool detects compression loops.
16209a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
16309a3aaf3SDag-Erling Smørgrav  */
16409a3aaf3SDag-Erling Smørgrav int sldns_wire2str_rr_scan(uint8_t** data, size_t* data_len, char** str,
1650eefd307SCy Schubert 	size_t* str_len, uint8_t* pkt, size_t pktlen, int* comprloop);
16609a3aaf3SDag-Erling Smørgrav 
16709a3aaf3SDag-Erling Smørgrav /**
16809a3aaf3SDag-Erling Smørgrav  * Scan wireformat question rr to string, with user buffers.
16909a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
17009a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
17109a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
17209a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
17309a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
17409a3aaf3SDag-Erling Smørgrav  * @param pkt: packet for decompression, if NULL no decompression.
17509a3aaf3SDag-Erling Smørgrav  * @param pktlen: length of packet buffer.
1760eefd307SCy Schubert  * @param comprloop: if pkt, bool detects compression loops.
17709a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
17809a3aaf3SDag-Erling Smørgrav  */
17909a3aaf3SDag-Erling Smørgrav int sldns_wire2str_rrquestion_scan(uint8_t** data, size_t* data_len, char** str,
1800eefd307SCy Schubert 	size_t* str_len, uint8_t* pkt, size_t pktlen, int* comprloop);
18109a3aaf3SDag-Erling Smørgrav 
18209a3aaf3SDag-Erling Smørgrav /**
18309a3aaf3SDag-Erling Smørgrav  * Scan wireformat RR to string in unknown RR format, with user buffers.
18409a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
18509a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
18609a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
18709a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
18809a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
18909a3aaf3SDag-Erling Smørgrav  * @param pkt: packet for decompression, if NULL no decompression.
19009a3aaf3SDag-Erling Smørgrav  * @param pktlen: length of packet buffer.
1910eefd307SCy Schubert  * @param comprloop: if pkt, bool detects compression loops.
19209a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
19309a3aaf3SDag-Erling Smørgrav  */
19409a3aaf3SDag-Erling Smørgrav int sldns_wire2str_rr_unknown_scan(uint8_t** data, size_t* data_len, char** str,
1950eefd307SCy Schubert 	size_t* str_len, uint8_t* pkt, size_t pktlen, int* comprloop);
19609a3aaf3SDag-Erling Smørgrav 
19709a3aaf3SDag-Erling Smørgrav /**
19809a3aaf3SDag-Erling Smørgrav  * Print to string the RR-information comment in default format,
19909a3aaf3SDag-Erling Smørgrav  * with user buffers.  Moves string along.
20009a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
20109a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
20209a3aaf3SDag-Erling Smørgrav  * @param rr: wireformat data.
20309a3aaf3SDag-Erling Smørgrav  * @param rrlen: length of data buffer.
20409a3aaf3SDag-Erling Smørgrav  * @param dname_off: offset in buffer behind owner dname, the compressed size
20509a3aaf3SDag-Erling Smørgrav  * 	of the owner name.
20609a3aaf3SDag-Erling Smørgrav  * @param rrtype: type of the RR, host format.
20709a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
20809a3aaf3SDag-Erling Smørgrav  */
20909a3aaf3SDag-Erling Smørgrav int sldns_wire2str_rr_comment_print(char** str, size_t* str_len, uint8_t* rr,
21009a3aaf3SDag-Erling Smørgrav 	size_t rrlen, size_t dname_off, uint16_t rrtype);
21109a3aaf3SDag-Erling Smørgrav 
21209a3aaf3SDag-Erling Smørgrav /**
21309a3aaf3SDag-Erling Smørgrav  * Scan wireformat packet header to string, with user buffers.
21409a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
21509a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
21609a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
21709a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
21809a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
21909a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
22009a3aaf3SDag-Erling Smørgrav  */
22109a3aaf3SDag-Erling Smørgrav int sldns_wire2str_header_scan(uint8_t** data, size_t* data_len, char** str,
22209a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
22309a3aaf3SDag-Erling Smørgrav 
22409a3aaf3SDag-Erling Smørgrav /**
22509a3aaf3SDag-Erling Smørgrav  * Scan wireformat rdata to string, with user buffers.
22609a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
22709a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
22809a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.  The length of the rdata in the
22909a3aaf3SDag-Erling Smørgrav  * 	buffer.  The rdatalen itself has already been scanned, the data
23009a3aaf3SDag-Erling Smørgrav  * 	points to the rdata after the rdatalen.
23109a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
23209a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
23309a3aaf3SDag-Erling Smørgrav  * @param rrtype: RR type of Rdata, host format.
23409a3aaf3SDag-Erling Smørgrav  * @param pkt: packet for decompression, if NULL no decompression.
23509a3aaf3SDag-Erling Smørgrav  * @param pktlen: length of packet buffer.
2360eefd307SCy Schubert  * @param comprloop: if pkt, bool detects compression loops.
23709a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
23809a3aaf3SDag-Erling Smørgrav  */
23909a3aaf3SDag-Erling Smørgrav int sldns_wire2str_rdata_scan(uint8_t** data, size_t* data_len, char** str,
2400eefd307SCy Schubert 	size_t* str_len, uint16_t rrtype, uint8_t* pkt, size_t pktlen,
2410eefd307SCy Schubert 	int* comprloop);
24209a3aaf3SDag-Erling Smørgrav 
24309a3aaf3SDag-Erling Smørgrav /**
24409a3aaf3SDag-Erling Smørgrav  * Scan wireformat rdata to string in unknown format, with user buffers.
24509a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
24609a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
24709a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer, the length of the rdata in buffer.
24809a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
24909a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
25009a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
25109a3aaf3SDag-Erling Smørgrav  */
25209a3aaf3SDag-Erling Smørgrav int sldns_wire2str_rdata_unknown_scan(uint8_t** data, size_t* data_len,
25309a3aaf3SDag-Erling Smørgrav 	char** str, size_t* str_len);
25409a3aaf3SDag-Erling Smørgrav 
25509a3aaf3SDag-Erling Smørgrav /**
25609a3aaf3SDag-Erling Smørgrav  * Scan wireformat domain name to string, with user buffers.
25709a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
25809a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
25909a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
26009a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
26109a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
26209a3aaf3SDag-Erling Smørgrav  * @param pkt: packet for decompression, if NULL no decompression.
26309a3aaf3SDag-Erling Smørgrav  * @param pktlen: length of packet buffer.
2640eefd307SCy Schubert  * @param comprloop: inout bool, that is set true if compression loop failure
2650eefd307SCy Schubert  * 	happens.  Pass in 0, if passsed in as true, a lower bound is set
2660eefd307SCy Schubert  * 	on compression loops to stop arbitrary long packet parse times.
2670eefd307SCy Schubert  * 	This is meant so you can set it to 0 at the start of a list of dnames,
2680eefd307SCy Schubert  * 	and then scan all of them in sequence, if a loop happens, it becomes
2690eefd307SCy Schubert  * 	true and then it becomes more strict for the next dnames in the list.
2700eefd307SCy Schubert  * 	You can leave it at NULL if there is no pkt (pkt is NULL too).
27109a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
27209a3aaf3SDag-Erling Smørgrav  */
27309a3aaf3SDag-Erling Smørgrav int sldns_wire2str_dname_scan(uint8_t** data, size_t* data_len, char** str,
2740eefd307SCy Schubert 	size_t* str_len, uint8_t* pkt, size_t pktlen, int* comprloop);
27509a3aaf3SDag-Erling Smørgrav 
27609a3aaf3SDag-Erling Smørgrav /**
27709a3aaf3SDag-Erling Smørgrav  * Scan wireformat rr type to string, with user buffers.
27809a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
27909a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
28009a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
28109a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
28209a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
28309a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
28409a3aaf3SDag-Erling Smørgrav  */
28509a3aaf3SDag-Erling Smørgrav int sldns_wire2str_type_scan(uint8_t** data, size_t* data_len, char** str,
28609a3aaf3SDag-Erling Smørgrav         size_t* str_len);
28709a3aaf3SDag-Erling Smørgrav 
28809a3aaf3SDag-Erling Smørgrav /**
28909a3aaf3SDag-Erling Smørgrav  * Scan wireformat rr class to string, with user buffers.
29009a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
29109a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
29209a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
29309a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
29409a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
29509a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
29609a3aaf3SDag-Erling Smørgrav  */
29709a3aaf3SDag-Erling Smørgrav int sldns_wire2str_class_scan(uint8_t** data, size_t* data_len, char** str,
29809a3aaf3SDag-Erling Smørgrav         size_t* str_len);
29909a3aaf3SDag-Erling Smørgrav 
30009a3aaf3SDag-Erling Smørgrav /**
30109a3aaf3SDag-Erling Smørgrav  * Scan wireformat rr ttl to string, with user buffers.
30209a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
30309a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
30409a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
30509a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
30609a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
30709a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
30809a3aaf3SDag-Erling Smørgrav  */
30909a3aaf3SDag-Erling Smørgrav int sldns_wire2str_ttl_scan(uint8_t** data, size_t* data_len, char** str,
31009a3aaf3SDag-Erling Smørgrav         size_t* str_len);
31109a3aaf3SDag-Erling Smørgrav 
31209a3aaf3SDag-Erling Smørgrav 
31309a3aaf3SDag-Erling Smørgrav /**
31409a3aaf3SDag-Erling Smørgrav  * Print host format rr type to string.  Moves string along, user buffers.
31509a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
31609a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
31709a3aaf3SDag-Erling Smørgrav  * @param rrtype: host format rr type.
31809a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
31909a3aaf3SDag-Erling Smørgrav  */
32009a3aaf3SDag-Erling Smørgrav int sldns_wire2str_type_print(char** str, size_t* str_len, uint16_t rrtype);
32109a3aaf3SDag-Erling Smørgrav 
32209a3aaf3SDag-Erling Smørgrav /**
32309a3aaf3SDag-Erling Smørgrav  * Print host format rr class to string.  Moves string along, user buffers.
32409a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
32509a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
32609a3aaf3SDag-Erling Smørgrav  * @param rrclass: host format rr class.
32709a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
32809a3aaf3SDag-Erling Smørgrav  */
32909a3aaf3SDag-Erling Smørgrav int sldns_wire2str_class_print(char** str, size_t* str_len, uint16_t rrclass);
33009a3aaf3SDag-Erling Smørgrav 
33109a3aaf3SDag-Erling Smørgrav /**
33209a3aaf3SDag-Erling Smørgrav  * Print host format rcode to string.  Moves string along, user buffers.
33309a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
33409a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
33509a3aaf3SDag-Erling Smørgrav  * @param rcode: host format rcode number.
33609a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
33709a3aaf3SDag-Erling Smørgrav  */
33809a3aaf3SDag-Erling Smørgrav int sldns_wire2str_rcode_print(char** str, size_t* str_len, int rcode);
33909a3aaf3SDag-Erling Smørgrav 
34009a3aaf3SDag-Erling Smørgrav /**
34109a3aaf3SDag-Erling Smørgrav  * Print host format opcode to string.  Moves string along, user buffers.
34209a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
34309a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
34409a3aaf3SDag-Erling Smørgrav  * @param opcode: host format opcode number.
34509a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
34609a3aaf3SDag-Erling Smørgrav  */
34709a3aaf3SDag-Erling Smørgrav int sldns_wire2str_opcode_print(char** str, size_t* str_len, int opcode);
34809a3aaf3SDag-Erling Smørgrav 
34909a3aaf3SDag-Erling Smørgrav /**
35009a3aaf3SDag-Erling Smørgrav  * Print host format EDNS0 option to string.  Moves string along, user buffers.
35109a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
35209a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
35309a3aaf3SDag-Erling Smørgrav  * @param opcode: host format option number.
35409a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
35509a3aaf3SDag-Erling Smørgrav  */
35609a3aaf3SDag-Erling Smørgrav int sldns_wire2str_edns_option_code_print(char** str, size_t* str_len,
35709a3aaf3SDag-Erling Smørgrav 	uint16_t opcode);
35809a3aaf3SDag-Erling Smørgrav 
35909a3aaf3SDag-Erling Smørgrav /**
36009a3aaf3SDag-Erling Smørgrav  * Convert RR to string presentation format, on one line.  User buffer.
36109a3aaf3SDag-Erling Smørgrav  * @param rr: wireformat RR data
36209a3aaf3SDag-Erling Smørgrav  * @param rr_len: length of the rr wire data.
36309a3aaf3SDag-Erling Smørgrav  * @param str: the string buffer to write to.
36409a3aaf3SDag-Erling Smørgrav  * 	If you pass NULL as the str, the return value of the function is
36509a3aaf3SDag-Erling Smørgrav  * 	the str_len you need for the entire packet.  It does not include
36609a3aaf3SDag-Erling Smørgrav  * 	the 0 byte at the end.
36709a3aaf3SDag-Erling Smørgrav  * @param str_len: the size of the string buffer.  If more is needed, it'll
36809a3aaf3SDag-Erling Smørgrav  * 	silently truncate the output to fit in the buffer.
36909a3aaf3SDag-Erling Smørgrav  * @return the number of characters for this element, excluding zerobyte.
370b5663de9SDag-Erling Smørgrav  * 	Is larger or equal than str_len if output was truncated.
37109a3aaf3SDag-Erling Smørgrav  */
37209a3aaf3SDag-Erling Smørgrav int sldns_wire2str_rr_buf(uint8_t* rr, size_t rr_len, char* str,
37309a3aaf3SDag-Erling Smørgrav 	size_t str_len);
37409a3aaf3SDag-Erling Smørgrav 
37509a3aaf3SDag-Erling Smørgrav /**
37657bddd21SDag-Erling Smørgrav  * Convert question RR to string presentation format, on one line.  User buffer.
37757bddd21SDag-Erling Smørgrav  * @param rr: wireformat RR data
37857bddd21SDag-Erling Smørgrav  * @param rr_len: length of the rr wire data.
37957bddd21SDag-Erling Smørgrav  * @param str: the string buffer to write to.
38057bddd21SDag-Erling Smørgrav  * 	If you pass NULL as the str, the return value of the function is
38157bddd21SDag-Erling Smørgrav  * 	the str_len you need for the entire packet.  It does not include
38257bddd21SDag-Erling Smørgrav  * 	the 0 byte at the end.
38357bddd21SDag-Erling Smørgrav  * @param str_len: the size of the string buffer.  If more is needed, it'll
38457bddd21SDag-Erling Smørgrav  * 	silently truncate the output to fit in the buffer.
38557bddd21SDag-Erling Smørgrav  * @return the number of characters for this element, excluding zerobyte.
38657bddd21SDag-Erling Smørgrav  * 	Is larger or equal than str_len if output was truncated.
38757bddd21SDag-Erling Smørgrav  */
38857bddd21SDag-Erling Smørgrav int sldns_wire2str_rrquestion_buf(uint8_t* rr, size_t rr_len, char* str,
38957bddd21SDag-Erling Smørgrav 	size_t str_len);
39057bddd21SDag-Erling Smørgrav 
39157bddd21SDag-Erling Smørgrav /**
39209a3aaf3SDag-Erling Smørgrav  * 3597 printout of an RR in unknown rr format.
39309a3aaf3SDag-Erling Smørgrav  * There are more format and comment options available for printout
39409a3aaf3SDag-Erling Smørgrav  * with the function: TBD(TODO)
39509a3aaf3SDag-Erling Smørgrav  * @param rr: wireformat RR data
39609a3aaf3SDag-Erling Smørgrav  * @param rr_len: length of the rr wire data.
39709a3aaf3SDag-Erling Smørgrav  * @param str: the string buffer to write to.
39809a3aaf3SDag-Erling Smørgrav  * 	If you pass NULL as the str, the return value of the function is
39909a3aaf3SDag-Erling Smørgrav  * 	the str_len you need for the entire rr.  It does not include
40009a3aaf3SDag-Erling Smørgrav  * 	the 0 byte at the end.
40109a3aaf3SDag-Erling Smørgrav  * @param str_len: the size of the string buffer.  If more is needed, it'll
40209a3aaf3SDag-Erling Smørgrav  * 	silently truncate the output to fit in the buffer.
40309a3aaf3SDag-Erling Smørgrav  * @return the number of characters for this element, excluding zerobyte.
404b5663de9SDag-Erling Smørgrav  * 	Is larger or equal than str_len if output was truncated.
40509a3aaf3SDag-Erling Smørgrav  */
40609a3aaf3SDag-Erling Smørgrav int sldns_wire2str_rr_unknown_buf(uint8_t* rr, size_t rr_len, char* str,
40709a3aaf3SDag-Erling Smørgrav 	size_t str_len);
40809a3aaf3SDag-Erling Smørgrav 
40909a3aaf3SDag-Erling Smørgrav /**
41009a3aaf3SDag-Erling Smørgrav  * This creates the comment to print after the RR. ; keytag=... , and other
41109a3aaf3SDag-Erling Smørgrav  * basic comments for RRs.
41209a3aaf3SDag-Erling Smørgrav  * There are more format and comment options available for printout
41309a3aaf3SDag-Erling Smørgrav  * with the function: TBD(TODO)
41409a3aaf3SDag-Erling Smørgrav  * @param rr: wireformat RR data
41509a3aaf3SDag-Erling Smørgrav  * @param rr_len: length of the rr wire data.
41609a3aaf3SDag-Erling Smørgrav  * @param dname_len: length of the dname in front of the RR.
41709a3aaf3SDag-Erling Smørgrav  * @param str: the string buffer to write to.
41809a3aaf3SDag-Erling Smørgrav  * 	If you pass NULL as the str, the return value of the function is
41909a3aaf3SDag-Erling Smørgrav  * 	the str_len you need for the entire comment.  It does not include
42009a3aaf3SDag-Erling Smørgrav  * 	the 0 byte at the end.
42109a3aaf3SDag-Erling Smørgrav  * @param str_len: the size of the string buffer.  If more is needed, it'll
42209a3aaf3SDag-Erling Smørgrav  * 	silently truncate the output to fit in the buffer.
42309a3aaf3SDag-Erling Smørgrav  * @return the number of characters for this element, excluding zerobyte.
424b5663de9SDag-Erling Smørgrav  * 	Is larger or equal than str_len if output was truncated.
42509a3aaf3SDag-Erling Smørgrav  */
42609a3aaf3SDag-Erling Smørgrav int sldns_wire2str_rr_comment_buf(uint8_t* rr, size_t rr_len, size_t dname_len,
42709a3aaf3SDag-Erling Smørgrav 	char* str, size_t str_len);
42809a3aaf3SDag-Erling Smørgrav 
42909a3aaf3SDag-Erling Smørgrav /**
43009a3aaf3SDag-Erling Smørgrav  * Convert RDATA to string presentation format, on one line.  User buffer.
43109a3aaf3SDag-Erling Smørgrav  * @param rdata: wireformat rdata part of an RR.
43209a3aaf3SDag-Erling Smørgrav  * @param rdata_len: length of the rr wire data.
43309a3aaf3SDag-Erling Smørgrav  * @param str: the string buffer to write to.
43409a3aaf3SDag-Erling Smørgrav  * 	If you pass NULL as the str, the return value of the function is
43509a3aaf3SDag-Erling Smørgrav  * 	the str_len you need for the entire packet.  It does not include
43609a3aaf3SDag-Erling Smørgrav  * 	the 0 byte at the end.
43709a3aaf3SDag-Erling Smørgrav  * @param str_len: the size of the string buffer.  If more is needed, it'll
43809a3aaf3SDag-Erling Smørgrav  * 	silently truncate the output to fit in the buffer.
43909a3aaf3SDag-Erling Smørgrav  * @param rrtype: rr type of the data
44009a3aaf3SDag-Erling Smørgrav  * @return the number of characters for this element, excluding zerobyte.
441b5663de9SDag-Erling Smørgrav  * 	Is larger or equal than str_len if output was truncated.
44209a3aaf3SDag-Erling Smørgrav  */
44309a3aaf3SDag-Erling Smørgrav int sldns_wire2str_rdata_buf(uint8_t* rdata, size_t rdata_len, char* str,
44409a3aaf3SDag-Erling Smørgrav 	size_t str_len, uint16_t rrtype);
44509a3aaf3SDag-Erling Smørgrav 
44609a3aaf3SDag-Erling Smørgrav /**
44709a3aaf3SDag-Erling Smørgrav  * Convert wire RR type to a string, 'MX', 'TYPE12'.  With user buffer.
44809a3aaf3SDag-Erling Smørgrav  * @param rrtype: the RR type in host order.
44909a3aaf3SDag-Erling Smørgrav  * @param str: the string to write to.
45009a3aaf3SDag-Erling Smørgrav  * @param len: length of str.
45109a3aaf3SDag-Erling Smørgrav  * @return the number of characters for this element, excluding zerobyte.
452b5663de9SDag-Erling Smørgrav  * 	Is larger or equal than str_len if output was truncated.
45309a3aaf3SDag-Erling Smørgrav  */
45409a3aaf3SDag-Erling Smørgrav int sldns_wire2str_type_buf(uint16_t rrtype, char* str, size_t len);
45509a3aaf3SDag-Erling Smørgrav 
45609a3aaf3SDag-Erling Smørgrav /**
45709a3aaf3SDag-Erling Smørgrav  * Convert wire RR class to a string, 'IN', 'CLASS12'.  With user buffer.
45809a3aaf3SDag-Erling Smørgrav  * @param rrclass: the RR class in host order.
45909a3aaf3SDag-Erling Smørgrav  * @param str: the string to write to.
46009a3aaf3SDag-Erling Smørgrav  * @param len: length of str.
46109a3aaf3SDag-Erling Smørgrav  * @return the number of characters for this element, excluding zerobyte.
462b5663de9SDag-Erling Smørgrav  * 	Is larger or equal than str_len if output was truncated.
46309a3aaf3SDag-Erling Smørgrav  */
46409a3aaf3SDag-Erling Smørgrav int sldns_wire2str_class_buf(uint16_t rrclass, char* str, size_t len);
46509a3aaf3SDag-Erling Smørgrav 
46609a3aaf3SDag-Erling Smørgrav /**
46709a3aaf3SDag-Erling Smørgrav  * Convert wire RR rcode to a string, 'NOERROR', 'NXDOMAIN'.  With user buffer.
46809a3aaf3SDag-Erling Smørgrav  * @param rcode: rcode as integer in host order
46909a3aaf3SDag-Erling Smørgrav  * @param str: the string to write to.
47009a3aaf3SDag-Erling Smørgrav  * @param len: length of str.
47109a3aaf3SDag-Erling Smørgrav  * @return the number of characters for this element, excluding zerobyte.
472b5663de9SDag-Erling Smørgrav  * 	Is larger or equal than str_len if output was truncated.
47309a3aaf3SDag-Erling Smørgrav  */
47409a3aaf3SDag-Erling Smørgrav int sldns_wire2str_rcode_buf(int rcode, char* str, size_t len);
47509a3aaf3SDag-Erling Smørgrav 
47609a3aaf3SDag-Erling Smørgrav /**
47765b390aaSDag-Erling Smørgrav  * Convert host format opcode to a string. 'QUERY', 'NOTIFY', 'UPDATE'.
47865b390aaSDag-Erling Smørgrav  * With user buffer.
47965b390aaSDag-Erling Smørgrav  * @param opcode: opcode as integer in host order
48065b390aaSDag-Erling Smørgrav  * @param str: the string to write to.
48165b390aaSDag-Erling Smørgrav  * @param len: length of str.
48265b390aaSDag-Erling Smørgrav  * @return the number of characters for this element, excluding zerobyte.
48365b390aaSDag-Erling Smørgrav  * 	Is larger or equal than str_len if output was truncated.
48465b390aaSDag-Erling Smørgrav  */
48565b390aaSDag-Erling Smørgrav int sldns_wire2str_opcode_buf(int opcode, char* str, size_t len);
48665b390aaSDag-Erling Smørgrav 
48765b390aaSDag-Erling Smørgrav /**
48809a3aaf3SDag-Erling Smørgrav  * Convert wire dname to a string, "example.com.".  With user buffer.
48909a3aaf3SDag-Erling Smørgrav  * @param dname: the dname in uncompressed wireformat.
49009a3aaf3SDag-Erling Smørgrav  * @param dname_len: length of the dname.
49109a3aaf3SDag-Erling Smørgrav  * @param str: the string to write to.
49209a3aaf3SDag-Erling Smørgrav  * @param len: length of string.
49309a3aaf3SDag-Erling Smørgrav  * @return the number of characters for this element, excluding zerobyte.
494b5663de9SDag-Erling Smørgrav  * 	Is larger or equal than str_len if output was truncated.
49509a3aaf3SDag-Erling Smørgrav  */
49609a3aaf3SDag-Erling Smørgrav int sldns_wire2str_dname_buf(uint8_t* dname, size_t dname_len, char* str,
49709a3aaf3SDag-Erling Smørgrav 	size_t len);
49809a3aaf3SDag-Erling Smørgrav 
49909a3aaf3SDag-Erling Smørgrav /**
5005469a995SCy Schubert  * Convert wire SVCB to a string with user buffer.
5015469a995SCy Schubert  * @param d: the SVCB data in uncompressed wireformat.
5025469a995SCy Schubert  * @param dlen: length of the SVCB data.
5035469a995SCy Schubert  * @param s: the string to write to.
5045469a995SCy Schubert  * @param slen: length of string.
5055469a995SCy Schubert  * @return the number of characters for this element, excluding zerobyte.
5065469a995SCy Schubert  * 	Is larger or equal than str_len if output was truncated.
5075469a995SCy Schubert  */
5085469a995SCy Schubert int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s,
5095469a995SCy Schubert 	size_t* slen);
5105469a995SCy Schubert 
5115469a995SCy Schubert /**
51209a3aaf3SDag-Erling Smørgrav  * Scan wireformat rdf field to string, with user buffers.
51309a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
51409a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
51509a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
51609a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
51709a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
51809a3aaf3SDag-Erling Smørgrav  * @param rdftype: the type of the rdata field, enum sldns_rdf_type.
51909a3aaf3SDag-Erling Smørgrav  * @param pkt: packet for decompression, if NULL no decompression.
52009a3aaf3SDag-Erling Smørgrav  * @param pktlen: length of packet buffer.
5210eefd307SCy Schubert  * @param comprloop: if pkt, bool detects compression loops.
52209a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
52309a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
52409a3aaf3SDag-Erling Smørgrav  */
52509a3aaf3SDag-Erling Smørgrav int sldns_wire2str_rdf_scan(uint8_t** data, size_t* data_len, char** str,
5260eefd307SCy Schubert 	size_t* str_len, int rdftype, uint8_t* pkt, size_t pktlen,
5270eefd307SCy Schubert 	int* comprloop);
52809a3aaf3SDag-Erling Smørgrav 
52909a3aaf3SDag-Erling Smørgrav /**
53009a3aaf3SDag-Erling Smørgrav  * Scan wireformat int8 field to string, with user buffers.
53109a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
53209a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
53309a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
53409a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
53509a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
53609a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
53709a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
53809a3aaf3SDag-Erling Smørgrav  */
53909a3aaf3SDag-Erling Smørgrav int sldns_wire2str_int8_scan(uint8_t** data, size_t* data_len, char** str,
54009a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
54109a3aaf3SDag-Erling Smørgrav 
54209a3aaf3SDag-Erling Smørgrav /**
54309a3aaf3SDag-Erling Smørgrav  * Scan wireformat int16 field to string, with user buffers.
54409a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
54509a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
54609a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
54709a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
54809a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
54909a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
55009a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
55109a3aaf3SDag-Erling Smørgrav  */
55209a3aaf3SDag-Erling Smørgrav int sldns_wire2str_int16_scan(uint8_t** data, size_t* data_len, char** str,
55309a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
55409a3aaf3SDag-Erling Smørgrav 
55509a3aaf3SDag-Erling Smørgrav /**
55609a3aaf3SDag-Erling Smørgrav  * Scan wireformat int32 field to string, with user buffers.
55709a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
55809a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
55909a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
56009a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
56109a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
56209a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
56309a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
56409a3aaf3SDag-Erling Smørgrav  */
56509a3aaf3SDag-Erling Smørgrav int sldns_wire2str_int32_scan(uint8_t** data, size_t* data_len, char** str,
56609a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
56709a3aaf3SDag-Erling Smørgrav 
56809a3aaf3SDag-Erling Smørgrav /**
56909a3aaf3SDag-Erling Smørgrav  * Scan wireformat period field to string, with user buffers.
57009a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
57109a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
57209a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
57309a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
57409a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
57509a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
57609a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
57709a3aaf3SDag-Erling Smørgrav  */
57809a3aaf3SDag-Erling Smørgrav int sldns_wire2str_period_scan(uint8_t** data, size_t* data_len, char** str,
57909a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
58009a3aaf3SDag-Erling Smørgrav 
58109a3aaf3SDag-Erling Smørgrav /**
58209a3aaf3SDag-Erling Smørgrav  * Scan wireformat tsigtime field to string, with user buffers.
58309a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
58409a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
58509a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
58609a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
58709a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
58809a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
58909a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
59009a3aaf3SDag-Erling Smørgrav  */
59109a3aaf3SDag-Erling Smørgrav int sldns_wire2str_tsigtime_scan(uint8_t** data, size_t* data_len, char** str,
59209a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
59309a3aaf3SDag-Erling Smørgrav 
59409a3aaf3SDag-Erling Smørgrav /**
59509a3aaf3SDag-Erling Smørgrav  * Scan wireformat ip4 A field to string, with user buffers.
59609a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
59709a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
59809a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
59909a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
60009a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
60109a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
60209a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
60309a3aaf3SDag-Erling Smørgrav  */
60409a3aaf3SDag-Erling Smørgrav int sldns_wire2str_a_scan(uint8_t** data, size_t* data_len, char** str,
60509a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
60609a3aaf3SDag-Erling Smørgrav 
60709a3aaf3SDag-Erling Smørgrav /**
60809a3aaf3SDag-Erling Smørgrav  * Scan wireformat ip6 AAAA field to string, with user buffers.
60909a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
61009a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
61109a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
61209a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
61309a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
61409a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
61509a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
61609a3aaf3SDag-Erling Smørgrav  */
61709a3aaf3SDag-Erling Smørgrav int sldns_wire2str_aaaa_scan(uint8_t** data, size_t* data_len, char** str,
61809a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
61909a3aaf3SDag-Erling Smørgrav 
62009a3aaf3SDag-Erling Smørgrav /**
62109a3aaf3SDag-Erling Smørgrav  * Scan wireformat str field to string, with user buffers.
62209a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
62309a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
62409a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
62509a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
62609a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
62709a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
62809a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
62909a3aaf3SDag-Erling Smørgrav  */
63009a3aaf3SDag-Erling Smørgrav int sldns_wire2str_str_scan(uint8_t** data, size_t* data_len, char** str,
63109a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
63209a3aaf3SDag-Erling Smørgrav 
63309a3aaf3SDag-Erling Smørgrav /**
63409a3aaf3SDag-Erling Smørgrav  * Scan wireformat apl field to string, with user buffers.
63509a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
63609a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
63709a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
63809a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
63909a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
64009a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
64109a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
64209a3aaf3SDag-Erling Smørgrav  */
64309a3aaf3SDag-Erling Smørgrav int sldns_wire2str_apl_scan(uint8_t** data, size_t* data_len, char** str,
64409a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
64509a3aaf3SDag-Erling Smørgrav 
64609a3aaf3SDag-Erling Smørgrav /**
64709a3aaf3SDag-Erling Smørgrav  * Scan wireformat b32_ext field to string, with user buffers.
64809a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
64909a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
65009a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
65109a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
65209a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
65309a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
65409a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
65509a3aaf3SDag-Erling Smørgrav  */
65609a3aaf3SDag-Erling Smørgrav int sldns_wire2str_b32_ext_scan(uint8_t** data, size_t* data_len, char** str,
65709a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
65809a3aaf3SDag-Erling Smørgrav 
65909a3aaf3SDag-Erling Smørgrav /**
66009a3aaf3SDag-Erling Smørgrav  * Scan wireformat b64 field to string, with user buffers.
66109a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
66209a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
66309a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
66409a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
66509a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
66609a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
66709a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
66809a3aaf3SDag-Erling Smørgrav  */
66909a3aaf3SDag-Erling Smørgrav int sldns_wire2str_b64_scan(uint8_t** data, size_t* data_len, char** str,
67009a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
67109a3aaf3SDag-Erling Smørgrav 
67209a3aaf3SDag-Erling Smørgrav /**
67309a3aaf3SDag-Erling Smørgrav  * Scan wireformat hex field to string, with user buffers.
67409a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
67509a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
67609a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
67709a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
67809a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
67909a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
68009a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
68109a3aaf3SDag-Erling Smørgrav  */
68209a3aaf3SDag-Erling Smørgrav int sldns_wire2str_hex_scan(uint8_t** data, size_t* data_len, char** str,
68309a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
68409a3aaf3SDag-Erling Smørgrav 
68509a3aaf3SDag-Erling Smørgrav /**
68609a3aaf3SDag-Erling Smørgrav  * Scan wireformat nsec bitmap field to string, with user buffers.
68709a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
68809a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
68909a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
69009a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
69109a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
69209a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
69309a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
69409a3aaf3SDag-Erling Smørgrav  */
69509a3aaf3SDag-Erling Smørgrav int sldns_wire2str_nsec_scan(uint8_t** data, size_t* data_len, char** str,
69609a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
69709a3aaf3SDag-Erling Smørgrav 
69809a3aaf3SDag-Erling Smørgrav /**
69909a3aaf3SDag-Erling Smørgrav  * Scan wireformat nsec3_salt field to string, with user buffers.
70009a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
70109a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
70209a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
70309a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
70409a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
70509a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
70609a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
70709a3aaf3SDag-Erling Smørgrav  */
70809a3aaf3SDag-Erling Smørgrav int sldns_wire2str_nsec3_salt_scan(uint8_t** data, size_t* data_len, char** str,
70909a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
71009a3aaf3SDag-Erling Smørgrav 
71109a3aaf3SDag-Erling Smørgrav /**
71209a3aaf3SDag-Erling Smørgrav  * Scan wireformat cert_alg field to string, with user buffers.
71309a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
71409a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
71509a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
71609a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
71709a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
71809a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
71909a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
72009a3aaf3SDag-Erling Smørgrav  */
72109a3aaf3SDag-Erling Smørgrav int sldns_wire2str_cert_alg_scan(uint8_t** data, size_t* data_len, char** str,
72209a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
72309a3aaf3SDag-Erling Smørgrav 
72409a3aaf3SDag-Erling Smørgrav /**
72509a3aaf3SDag-Erling Smørgrav  * Scan wireformat alg field to string, with user buffers.
72609a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
72709a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
72809a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
72909a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
73009a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
73109a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
73209a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
73309a3aaf3SDag-Erling Smørgrav  */
73409a3aaf3SDag-Erling Smørgrav int sldns_wire2str_alg_scan(uint8_t** data, size_t* data_len, char** str,
73509a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
73609a3aaf3SDag-Erling Smørgrav 
73709a3aaf3SDag-Erling Smørgrav /**
73809a3aaf3SDag-Erling Smørgrav  * Scan wireformat type unknown field to string, with user buffers.
73909a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
74009a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
74109a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
74209a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
74309a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
74409a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
74509a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
74609a3aaf3SDag-Erling Smørgrav  */
74709a3aaf3SDag-Erling Smørgrav int sldns_wire2str_unknown_scan(uint8_t** data, size_t* data_len, char** str,
74809a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
74909a3aaf3SDag-Erling Smørgrav 
75009a3aaf3SDag-Erling Smørgrav /**
75109a3aaf3SDag-Erling Smørgrav  * Scan wireformat time field to string, with user buffers.
75209a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
75309a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
75409a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
75509a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
75609a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
75709a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
75809a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
75909a3aaf3SDag-Erling Smørgrav  */
76009a3aaf3SDag-Erling Smørgrav int sldns_wire2str_time_scan(uint8_t** data, size_t* data_len, char** str,
76109a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
76209a3aaf3SDag-Erling Smørgrav 
76309a3aaf3SDag-Erling Smørgrav /**
76409a3aaf3SDag-Erling Smørgrav  * Scan wireformat LOC field to string, with user buffers.
76509a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
76609a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
76709a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
76809a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
76909a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
77009a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
77109a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
77209a3aaf3SDag-Erling Smørgrav  */
77309a3aaf3SDag-Erling Smørgrav int sldns_wire2str_loc_scan(uint8_t** data, size_t* data_len, char** str,
77409a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
77509a3aaf3SDag-Erling Smørgrav 
77609a3aaf3SDag-Erling Smørgrav /**
77709a3aaf3SDag-Erling Smørgrav  * Scan wireformat WKS field to string, with user buffers.
77809a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
77909a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
78009a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
78109a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
78209a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
78309a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
78409a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
78509a3aaf3SDag-Erling Smørgrav  */
78609a3aaf3SDag-Erling Smørgrav int sldns_wire2str_wks_scan(uint8_t** data, size_t* data_len, char** str,
78709a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
78809a3aaf3SDag-Erling Smørgrav 
78909a3aaf3SDag-Erling Smørgrav /**
79009a3aaf3SDag-Erling Smørgrav  * Scan wireformat NSAP field to string, with user buffers.
79109a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
79209a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
79309a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
79409a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
79509a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
79609a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
79709a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
79809a3aaf3SDag-Erling Smørgrav  */
79909a3aaf3SDag-Erling Smørgrav int sldns_wire2str_nsap_scan(uint8_t** data, size_t* data_len, char** str,
80009a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
80109a3aaf3SDag-Erling Smørgrav 
80209a3aaf3SDag-Erling Smørgrav /**
80309a3aaf3SDag-Erling Smørgrav  * Scan wireformat ATMA field to string, with user buffers.
80409a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
80509a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
80609a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
80709a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
80809a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
80909a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
81009a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
81109a3aaf3SDag-Erling Smørgrav  */
81209a3aaf3SDag-Erling Smørgrav int sldns_wire2str_atma_scan(uint8_t** data, size_t* data_len, char** str,
81309a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
81409a3aaf3SDag-Erling Smørgrav 
81509a3aaf3SDag-Erling Smørgrav /**
81609a3aaf3SDag-Erling Smørgrav  * Scan wireformat IPSECKEY field to string, with user buffers.
81709a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
81809a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
81909a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
82009a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
82109a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
82209a3aaf3SDag-Erling Smørgrav  * @param pkt: packet for decompression, if NULL no decompression.
82309a3aaf3SDag-Erling Smørgrav  * @param pktlen: length of packet buffer.
8240eefd307SCy Schubert  * @param comprloop: if pkt, bool detects compression loops.
82509a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
82609a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
82709a3aaf3SDag-Erling Smørgrav  */
82809a3aaf3SDag-Erling Smørgrav int sldns_wire2str_ipseckey_scan(uint8_t** data, size_t* data_len, char** str,
8290eefd307SCy Schubert 	size_t* str_len, uint8_t* pkt, size_t pktlen, int* comprloop);
83009a3aaf3SDag-Erling Smørgrav 
83109a3aaf3SDag-Erling Smørgrav /**
83209a3aaf3SDag-Erling Smørgrav  * Scan wireformat HIP (algo, HIT, pubkey) field to string, with user buffers.
83309a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
83409a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
83509a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
83609a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
83709a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
83809a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
83909a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
84009a3aaf3SDag-Erling Smørgrav  */
84109a3aaf3SDag-Erling Smørgrav int sldns_wire2str_hip_scan(uint8_t** data, size_t* data_len, char** str,
84209a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
84309a3aaf3SDag-Erling Smørgrav 
84409a3aaf3SDag-Erling Smørgrav /**
84509a3aaf3SDag-Erling Smørgrav  * Scan wireformat int16_data field to string, with user buffers.
84609a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
84709a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
84809a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
84909a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
85009a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
85109a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
85209a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
85309a3aaf3SDag-Erling Smørgrav  */
85409a3aaf3SDag-Erling Smørgrav int sldns_wire2str_int16_data_scan(uint8_t** data, size_t* data_len, char** str,
85509a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
85609a3aaf3SDag-Erling Smørgrav 
85709a3aaf3SDag-Erling Smørgrav /**
858c7f4d7adSDag-Erling Smørgrav  * Scan wireformat tsigerror field to string, with user buffers.
859c7f4d7adSDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
860c7f4d7adSDag-Erling Smørgrav  * @param data: wireformat data.
861c7f4d7adSDag-Erling Smørgrav  * @param data_len: length of data buffer.
862c7f4d7adSDag-Erling Smørgrav  * @param str: string buffer.
863c7f4d7adSDag-Erling Smørgrav  * @param str_len: length of string buffer.
864c7f4d7adSDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
865c7f4d7adSDag-Erling Smørgrav  * 	Can return -1 on failure.
866c7f4d7adSDag-Erling Smørgrav  */
867c7f4d7adSDag-Erling Smørgrav int sldns_wire2str_tsigerror_scan(uint8_t** data, size_t* data_len, char** str,
868c7f4d7adSDag-Erling Smørgrav 	size_t* str_len);
869c7f4d7adSDag-Erling Smørgrav 
870c7f4d7adSDag-Erling Smørgrav /**
87109a3aaf3SDag-Erling Smørgrav  * Scan wireformat nsec3_next_owner field to string, with user buffers.
87209a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
87309a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
87409a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
87509a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
87609a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
87709a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
87809a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
87909a3aaf3SDag-Erling Smørgrav  */
88009a3aaf3SDag-Erling Smørgrav int sldns_wire2str_nsec3_next_owner_scan(uint8_t** data, size_t* data_len,
88109a3aaf3SDag-Erling Smørgrav 	char** str, size_t* str_len);
88209a3aaf3SDag-Erling Smørgrav 
88309a3aaf3SDag-Erling Smørgrav /**
88409a3aaf3SDag-Erling Smørgrav  * Scan wireformat ILNP64 field to string, with user buffers.
88509a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
88609a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
88709a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
88809a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
88909a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
89009a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
89109a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
89209a3aaf3SDag-Erling Smørgrav  */
89309a3aaf3SDag-Erling Smørgrav int sldns_wire2str_ilnp64_scan(uint8_t** data, size_t* data_len, char** str,
89409a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
89509a3aaf3SDag-Erling Smørgrav 
89609a3aaf3SDag-Erling Smørgrav /**
89709a3aaf3SDag-Erling Smørgrav  * Scan wireformat EUI48 field to string, with user buffers.
89809a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
89909a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
90009a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
90109a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
90209a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
90309a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
90409a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
90509a3aaf3SDag-Erling Smørgrav  */
90609a3aaf3SDag-Erling Smørgrav int sldns_wire2str_eui48_scan(uint8_t** data, size_t* data_len, char** str,
90709a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
90809a3aaf3SDag-Erling Smørgrav 
90909a3aaf3SDag-Erling Smørgrav /**
91009a3aaf3SDag-Erling Smørgrav  * Scan wireformat EUI64 field to string, with user buffers.
91109a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
91209a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
91309a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
91409a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
91509a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
91609a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
91709a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
91809a3aaf3SDag-Erling Smørgrav  */
91909a3aaf3SDag-Erling Smørgrav int sldns_wire2str_eui64_scan(uint8_t** data, size_t* data_len, char** str,
92009a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
92109a3aaf3SDag-Erling Smørgrav 
92209a3aaf3SDag-Erling Smørgrav /**
92309a3aaf3SDag-Erling Smørgrav  * Scan wireformat TAG field to string, with user buffers.
92409a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
92509a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
92609a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
92709a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
92809a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
92909a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
93009a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
93109a3aaf3SDag-Erling Smørgrav  */
93209a3aaf3SDag-Erling Smørgrav int sldns_wire2str_tag_scan(uint8_t** data, size_t* data_len, char** str,
93309a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
93409a3aaf3SDag-Erling Smørgrav 
93509a3aaf3SDag-Erling Smørgrav /**
93609a3aaf3SDag-Erling Smørgrav  * Scan wireformat long_str field to string, with user buffers.
93709a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
93809a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
93909a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
94009a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
94109a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
94209a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
94309a3aaf3SDag-Erling Smørgrav  * 	Can return -1 on failure.
94409a3aaf3SDag-Erling Smørgrav  */
94509a3aaf3SDag-Erling Smørgrav int sldns_wire2str_long_str_scan(uint8_t** data, size_t* data_len, char** str,
94609a3aaf3SDag-Erling Smørgrav 	size_t* str_len);
94709a3aaf3SDag-Erling Smørgrav 
94809a3aaf3SDag-Erling Smørgrav /**
94909a3aaf3SDag-Erling Smørgrav  * Print EDNS LLQ option data to string.  User buffers, moves string pointers.
95009a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
95109a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
95209a3aaf3SDag-Erling Smørgrav  * @param option_data: buffer with EDNS option code data.
95309a3aaf3SDag-Erling Smørgrav  * @param option_len: length of the data for this option.
95409a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
95509a3aaf3SDag-Erling Smørgrav  */
95609a3aaf3SDag-Erling Smørgrav int sldns_wire2str_edns_llq_print(char** str, size_t* str_len,
95709a3aaf3SDag-Erling Smørgrav 	uint8_t* option_data, size_t option_len);
95809a3aaf3SDag-Erling Smørgrav 
95909a3aaf3SDag-Erling Smørgrav /**
96009a3aaf3SDag-Erling Smørgrav  * Print EDNS UL option data to string.  User buffers, moves string pointers.
96109a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
96209a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
96309a3aaf3SDag-Erling Smørgrav  * @param option_data: buffer with EDNS option code data.
96409a3aaf3SDag-Erling Smørgrav  * @param option_len: length of the data for this option.
96509a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
96609a3aaf3SDag-Erling Smørgrav  */
96709a3aaf3SDag-Erling Smørgrav int sldns_wire2str_edns_ul_print(char** str, size_t* str_len,
96809a3aaf3SDag-Erling Smørgrav 	uint8_t* option_data, size_t option_len);
96909a3aaf3SDag-Erling Smørgrav 
97009a3aaf3SDag-Erling Smørgrav /**
97109a3aaf3SDag-Erling Smørgrav  * Print EDNS NSID option data to string.  User buffers, moves string pointers.
97209a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
97309a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
97409a3aaf3SDag-Erling Smørgrav  * @param option_data: buffer with EDNS option code data.
97509a3aaf3SDag-Erling Smørgrav  * @param option_len: length of the data for this option.
97609a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
97709a3aaf3SDag-Erling Smørgrav  */
97809a3aaf3SDag-Erling Smørgrav int sldns_wire2str_edns_nsid_print(char** str, size_t* str_len,
97909a3aaf3SDag-Erling Smørgrav 	uint8_t* option_data, size_t option_len);
98009a3aaf3SDag-Erling Smørgrav 
98109a3aaf3SDag-Erling Smørgrav /**
98209a3aaf3SDag-Erling Smørgrav  * Print EDNS DAU option data to string.  User buffers, moves string pointers.
98309a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
98409a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
98509a3aaf3SDag-Erling Smørgrav  * @param option_data: buffer with EDNS option code data.
98609a3aaf3SDag-Erling Smørgrav  * @param option_len: length of the data for this option.
98709a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
98809a3aaf3SDag-Erling Smørgrav  */
98909a3aaf3SDag-Erling Smørgrav int sldns_wire2str_edns_dau_print(char** str, size_t* str_len,
99009a3aaf3SDag-Erling Smørgrav 	uint8_t* option_data, size_t option_len);
99109a3aaf3SDag-Erling Smørgrav 
99209a3aaf3SDag-Erling Smørgrav /**
99309a3aaf3SDag-Erling Smørgrav  * Print EDNS DHU option data to string.  User buffers, moves string pointers.
99409a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
99509a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
99609a3aaf3SDag-Erling Smørgrav  * @param option_data: buffer with EDNS option code data.
99709a3aaf3SDag-Erling Smørgrav  * @param option_len: length of the data for this option.
99809a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
99909a3aaf3SDag-Erling Smørgrav  */
100009a3aaf3SDag-Erling Smørgrav int sldns_wire2str_edns_dhu_print(char** str, size_t* str_len,
100109a3aaf3SDag-Erling Smørgrav 	uint8_t* option_data, size_t option_len);
100209a3aaf3SDag-Erling Smørgrav 
100309a3aaf3SDag-Erling Smørgrav /**
100409a3aaf3SDag-Erling Smørgrav  * Print EDNS N3U option data to string.  User buffers, moves string pointers.
100509a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
100609a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
100709a3aaf3SDag-Erling Smørgrav  * @param option_data: buffer with EDNS option code data.
100809a3aaf3SDag-Erling Smørgrav  * @param option_len: length of the data for this option.
100909a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
101009a3aaf3SDag-Erling Smørgrav  */
101109a3aaf3SDag-Erling Smørgrav int sldns_wire2str_edns_n3u_print(char** str, size_t* str_len,
101209a3aaf3SDag-Erling Smørgrav 	uint8_t* option_data, size_t option_len);
101309a3aaf3SDag-Erling Smørgrav 
101409a3aaf3SDag-Erling Smørgrav /**
101509a3aaf3SDag-Erling Smørgrav  * Print EDNS SUBNET option data to string. User buffers, moves string pointers.
101609a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
101709a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
101809a3aaf3SDag-Erling Smørgrav  * @param option_data: buffer with EDNS option code data.
101909a3aaf3SDag-Erling Smørgrav  * @param option_len: length of the data for this option.
102009a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
102109a3aaf3SDag-Erling Smørgrav  */
102209a3aaf3SDag-Erling Smørgrav int sldns_wire2str_edns_subnet_print(char** str, size_t* str_len,
102309a3aaf3SDag-Erling Smørgrav 	uint8_t* option_data, size_t option_len);
102409a3aaf3SDag-Erling Smørgrav 
102509a3aaf3SDag-Erling Smørgrav /**
1026*103ba509SCy Schubert  * Print EDNS EDE option data to string. User buffers, moves string pointers.
1027*103ba509SCy Schubert  * @param str: string buffer.
1028*103ba509SCy Schubert  * @param str_len: length of string buffer.
1029*103ba509SCy Schubert  * @param option_data: buffer with EDNS option code data.
1030*103ba509SCy Schubert  * @param option_len: length of the data for this option.
1031*103ba509SCy Schubert  * @return number of characters (except null) needed to print.
1032*103ba509SCy Schubert  */
1033*103ba509SCy Schubert int sldns_wire2str_edns_ede_print(char** str, size_t* str_len,
1034*103ba509SCy Schubert 	uint8_t* option_data, size_t option_len);
1035*103ba509SCy Schubert 
1036*103ba509SCy Schubert /**
103709a3aaf3SDag-Erling Smørgrav  * Print an EDNS option as OPT: VALUE.  User buffers, moves string pointers.
103809a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
103909a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
104009a3aaf3SDag-Erling Smørgrav  * @param option_code: host format EDNS option code.
104109a3aaf3SDag-Erling Smørgrav  * @param option_data: buffer with EDNS option code data.
104209a3aaf3SDag-Erling Smørgrav  * @param option_len: length of the data for this option.
104309a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
104409a3aaf3SDag-Erling Smørgrav  */
104509a3aaf3SDag-Erling Smørgrav int sldns_wire2str_edns_option_print(char** str, size_t* str_len,
104609a3aaf3SDag-Erling Smørgrav 	uint16_t option_code, uint8_t* option_data, size_t option_len);
104709a3aaf3SDag-Erling Smørgrav 
104809a3aaf3SDag-Erling Smørgrav /**
104909a3aaf3SDag-Erling Smørgrav  * Scan wireformat EDNS OPT to string, with user buffers.
105009a3aaf3SDag-Erling Smørgrav  * It shifts the arguments to move along (see sldns_wire2str_pkt_scan).
105109a3aaf3SDag-Erling Smørgrav  * @param data: wireformat data.
105209a3aaf3SDag-Erling Smørgrav  * @param data_len: length of data buffer.
105309a3aaf3SDag-Erling Smørgrav  * @param str: string buffer.
105409a3aaf3SDag-Erling Smørgrav  * @param str_len: length of string buffer.
105509a3aaf3SDag-Erling Smørgrav  * @param pkt: packet with header and other info (may be NULL)
105609a3aaf3SDag-Erling Smørgrav  * @param pktlen: length of packet buffer.
105709a3aaf3SDag-Erling Smørgrav  * @return number of characters (except null) needed to print.
105809a3aaf3SDag-Erling Smørgrav  */
105909a3aaf3SDag-Erling Smørgrav int sldns_wire2str_edns_scan(uint8_t** data, size_t* data_len, char** str,
106009a3aaf3SDag-Erling Smørgrav 	size_t* str_len, uint8_t* pkt, size_t pktlen);
106109a3aaf3SDag-Erling Smørgrav 
106209a3aaf3SDag-Erling Smørgrav #ifdef __cplusplus
106309a3aaf3SDag-Erling Smørgrav }
106409a3aaf3SDag-Erling Smørgrav #endif
106509a3aaf3SDag-Erling Smørgrav 
106609a3aaf3SDag-Erling Smørgrav #endif /* LDNS_WIRE2STR_H */
1067