Added the new_dnscache routine to initialize the Ternary tree. Also,
removed the garbage collection routine.
This commit is contained in:
parent
21e4d8a9bd
commit
670fad4a41
@ -1,4 +1,4 @@
|
|||||||
/* $Id: dnscache.c,v 1.6 2000-09-26 04:59:48 rjkaes Exp $
|
/* $Id: dnscache.c,v 1.7 2000-10-23 21:42:31 rjkaes Exp $
|
||||||
*
|
*
|
||||||
* This is a caching DNS system. When a host name is needed we look it up here
|
* This is a caching DNS system. When a host name is needed we look it up here
|
||||||
* and see if there is already an answer for it. The domains are placed in a
|
* and see if there is already an answer for it. The domains are placed in a
|
||||||
@ -34,7 +34,6 @@
|
|||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
|
||||||
#define DNSEXPIRE (5 * 60)
|
#define DNSEXPIRE (5 * 60)
|
||||||
#define DNS_GARBAGE_COL 10
|
|
||||||
|
|
||||||
struct dnscache_s {
|
struct dnscache_s {
|
||||||
struct in_addr ipaddr;
|
struct in_addr ipaddr;
|
||||||
@ -43,14 +42,16 @@ struct dnscache_s {
|
|||||||
|
|
||||||
static TERNARY dns_tree;
|
static TERNARY dns_tree;
|
||||||
|
|
||||||
|
int new_dnscache(void)
|
||||||
|
{
|
||||||
|
dns_tree = ternary_new();
|
||||||
|
|
||||||
|
return dns_tree;
|
||||||
|
}
|
||||||
|
|
||||||
static int dns_lookup(struct in_addr *addr, char *domain)
|
static int dns_lookup(struct in_addr *addr, char *domain)
|
||||||
{
|
{
|
||||||
struct dnscache_s *ptr;
|
struct dnscache_s *ptr;
|
||||||
|
|
||||||
if (dns_tree == 0) {
|
|
||||||
if (TE_ISERROR(dns_tree = ternary_new()))
|
|
||||||
return dns_tree;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (TE_ISERROR(ternary_search(dns_tree, domain, (void *)&ptr)))
|
if (TE_ISERROR(ternary_search(dns_tree, domain, (void *)&ptr)))
|
||||||
return -1;
|
return -1;
|
||||||
@ -82,16 +83,7 @@ static int dns_insert(struct in_addr *addr, char *domain)
|
|||||||
|
|
||||||
int dnscache(struct in_addr *addr, char *domain)
|
int dnscache(struct in_addr *addr, char *domain)
|
||||||
{
|
{
|
||||||
static unsigned int dns_garbage_collect = 0;
|
|
||||||
struct hostent *resolv;
|
struct hostent *resolv;
|
||||||
|
|
||||||
#if 0
|
|
||||||
if (++dns_garbage_collect > DNS_GARBAGE_COL) {
|
|
||||||
ternary_destroy(&dns_root, &free);
|
|
||||||
DEBUG1("Doing garbage collection.");
|
|
||||||
dns_garbage_collect = 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (inet_aton(domain, (struct in_addr *) addr) != 0)
|
if (inet_aton(domain, (struct in_addr *) addr) != 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $Id: dnscache.h,v 1.2 2000-09-11 23:42:43 rjkaes Exp $
|
/* $Id: dnscache.h,v 1.3 2000-10-23 21:42:31 rjkaes Exp $
|
||||||
*
|
*
|
||||||
* See 'dnscache.c' for a detailed description.
|
* See 'dnscache.c' for a detailed description.
|
||||||
*
|
*
|
||||||
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
|
|
||||||
|
extern int new_dnscache(void);
|
||||||
extern int dnscache(struct in_addr *addr, char *domain);
|
extern int dnscache(struct in_addr *addr, char *domain);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user