/* * Copyright (C) 2014 John Crispin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 2.1 * as published by the Free Software Foundation * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #ifndef _CACHE_H__ #define _CACHE_H__ #include #include #include #include "dns.h" struct cache_entry { struct avl_node avl; const char *entry; const char *host; uint32_t ttl; time_t time; }; struct cache_record { struct avl_node avl; const char *record; uint16_t type; uint32_t ttl; int port; const char *txt; const uint8_t *rdata; uint16_t rdlength; time_t time; }; extern struct avl_tree entries; int cache_init(void); void cache_scan(void); void cache_cleanup(void); void cache_answer(struct interface *iface, uint8_t *base, int blen, char *name, struct dns_answer *a, uint8_t *rdata); int cache_host_is_known(char *record); char *cache_lookup_name(const char *key); void cache_dump_records(struct blob_buf *buf, const char *name); #endif