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