X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fmdnsd.git;a=blobdiff_plain;f=cache.h;h=897d01b2bbc353cce7560d795386734e08e2210b;hp=2e921a1b9483efdc6b6b6a3fef70940975b3db22;hb=HEAD;hpb=be25ce4fe37ddc9c42df9558e2a13dae146dee79 diff --git a/cache.h b/cache.h index 2e921a1..897d01b 100644 --- a/cache.h +++ b/cache.h @@ -16,46 +16,49 @@ #include #include +#include #include "dns.h" +#include "interface.h" -struct cache_type { - struct avl_node avl; +struct cache_service { + struct avl_node avl; - char *key; - char *val; -}; - -struct cache_entry { - struct avl_node avl; - - char *entry; - char *host; + const char *entry; + const char *host; uint32_t ttl; time_t time; + struct interface *iface; + int refresh; }; struct cache_record { - struct avl_node avl; + struct avl_node avl; - char *record; + const char *record; uint16_t type; uint32_t ttl; int port; - char *txt; - uint8_t *rdata; + const char *txt; + const uint8_t *rdata; uint16_t rdlength; time_t time; + struct interface *iface; + struct sockaddr_storage from; + int refresh; }; -extern struct avl_tree records, entries; +extern struct avl_tree services; +extern struct avl_tree records; -extern int cache_init(void); -extern void cache_scan(void); -extern void cache_cleanup(void); -extern void cache_answer(struct uloop_fd *u, uint8_t *base, int blen, - char *name, struct dns_answer *a, uint8_t *rdata); -extern int cache_host_is_known(char *record); -extern char* cache_lookup_name(const char *key); +int cache_init(void); +void cache_update(void); +void cache_cleanup(struct interface *iface); +void cache_answer(struct interface *iface, struct sockaddr *from, uint8_t *base, + int blen, char *name, struct dns_answer *a, uint8_t *rdata, + int flush); +int cache_host_is_known(char *record); +void cache_dump_records(struct blob_buf *buf, const char *name); +void cache_dump_recursive(struct blob_buf *b, const char *name, uint16_t type, struct interface *iface); #endif