|
unbound
0.1
|
This is a debugging aid. More...
#include <ldns/ldns.h>Data Structures | |
| struct | reply_packet |
| struct to keep a linked list of reply packets for a query More... | |
| struct | entry |
| data structure to keep the canned queries in. More... | |
Enumerations | |
| enum | transport_type { transport_any = 0, transport_udp, transport_tcp } |
| Type of transport, since some entries match based on UDP or TCP of query. | |
Functions | |
| struct entry * | read_datafile (const char *name) |
| reads the canned reply file and returns a list of structs does an exit on error. | |
| void | delete_entry (struct entry *list) |
| Delete linked list of entries. | |
| struct entry * | read_entry (FILE *in, const char *name, int *lineno, uint32_t *default_ttl, ldns_rdf **origin, ldns_rdf **prev_rr) |
| Read one entry from the data file. | |
| struct entry * | find_match (struct entry *entries, ldns_pkt *query_pkt, enum transport_type transport) |
| finds entry in list, or returns NULL. | |
| void | adjust_packet (struct entry *match, ldns_pkt *answer_pkt, ldns_pkt *query_pkt) |
| copy & adjust packet | |
| void | handle_query (uint8_t *inbuf, ssize_t inlen, struct entry *entries, int *count, enum transport_type transport, void(*sendfunc)(uint8_t *, size_t, void *), void *userdata, FILE *verbose_out) |
| Parses data buffer to a query, finds the correct answer and calls the given function for every packet to send. | |
This is a debugging aid.
It is not efficient, especially with a long config file, but it can give any reply to any query. This can help the developer pre-script replies for queries.
You can specify a packet RR by RR with header flags to return.
Missing features:
| struct entry* read_entry | ( | FILE * | in, |
| const char * | name, | ||
| int * | lineno, | ||
| uint32_t * | default_ttl, | ||
| ldns_rdf ** | origin, | ||
| ldns_rdf ** | prev_rr | ||
| ) | [read] |
Read one entry from the data file.
| in,: | file to read from. Filepos must be at the start of a new line. |
| name,: | name of the file for prettier errors. |
| lineno,: | line number in file, incremented as lines are read. for prettier errors. |
| default_ttl,: | on first call set to default TTL for entries, later it stores the $TTL value last seen. Try 3600 first call. |
| origin,: | domain name for origin appending. Can be &NULL on first call. later it stores the $ORIGIN value last seen. Often &NULL or the zone name on first call. |
| prev_rr,: | previous rr name for correcter parsing. &NULL on first call. |
References adjustline(), data_buffer2wire(), entry_add_reply(), error(), get_origin(), isendline(), entry::lineno, matchline(), MAX_LINE, new_entry(), reply_packet::reply, reply_packet::reply_from_hex, replyline(), and str_keyword().
Referenced by read_datafile(), replay_moment_read(), and replay_range_read().
| void handle_query | ( | uint8_t * | inbuf, |
| ssize_t | inlen, | ||
| struct entry * | entries, | ||
| int * | count, | ||
| enum transport_type | transport, | ||
| void(*)(uint8_t *, size_t, void *) | sendfunc, | ||
| void * | userdata, | ||
| FILE * | verbose_out | ||
| ) |
Parses data buffer to a query, finds the correct answer and calls the given function for every packet to send.
if verbose_out filename is given, packets are dumped there.
| inbuf,: | the packet that came in |
| inlen,: | length of packet. |
| entries,: | entries read in from datafile. |
| count,: | is increased to count number of queries answered. |
| transport,: | set to UDP or TCP to match some types of entries. |
| sendfunc,: | called to send answer (buffer, size, userarg). |
| userdata,: | userarg to give to sendfunc. |
| verbose_out,: | if not NULL, verbose messages are printed there. |
References adjust_packet(), entry::copy_id, find_match(), reply_packet::next, reply_packet::packet_sleep, reply_packet::reply, reply_packet::reply_from_hex, entry::reply_list, and verbose().
1.7.6.1