ldns_pkt * read_hex_pkt(char *filename) { uint8_t *wire; size_t wiresize; ldns_pkt *pkt = NULL; ldns_status status = LDNS_STATUS_ERR; wire = xmalloc(LDNS_MAX_PACKETLEN); wiresize = packetbuffromfile(filename, wire); if (wiresize > 0) { status = ldns_wire2pkt(&pkt, wire, wiresize); } xfree(wire); if (status == LDNS_STATUS_OK) { return pkt; } else { fprintf(stderr, "Error parsing hex file: %s\n", ldns_get_errorstr_by_id(status)); return NULL; } }
ldns_pkt * read_hex_pkt(char *hex_data) { uint8_t *wire; size_t wiresize; ldns_status status = LDNS_STATUS_ERR; ldns_pkt *pkt = NULL; wire = malloc(LDNS_MAX_PACKETLEN); wiresize = packetbuffromfile(hex_data, wire); if (wiresize > 0) { status = ldns_wire2pkt(&pkt, wire, wiresize); } free(wire); if (status == LDNS_STATUS_OK) { return pkt; } else { if (verbosity > 0) { fprintf(stderr, "Parse error: %s\n", ldns_get_errorstr_by_id(status)); fprintf(stderr, "%s\n", hex_data); } return NULL; } }
ldns_buffer * read_hex_buffer(char *filename) { uint8_t *wire; size_t wiresize; ldns_buffer *result_buffer = NULL; wire = xmalloc(LDNS_MAX_PACKETLEN); wiresize = packetbuffromfile(filename, wire); result_buffer = LDNS_MALLOC(ldns_buffer); ldns_buffer_new_frm_data(result_buffer, wire, wiresize); ldns_buffer_set_position(result_buffer, ldns_buffer_capacity(result_buffer)); xfree(wire); return result_buffer; }