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