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