31 static void         resolve_cache_close();
    32 static void        *resolve_cache_clean(
void *);
    36 static char        *mapname = 
ZE_WDBDIR "/ze-res-cache.db";
    37 static size_t       mapcachesize = 2 * 1024 * 1024;
    39 #define  VALUE_LEN_MAX        256    41 #define  RESOLVE_DT_REFRESH      (1 DAYS)    42 #define  RESOLVE_DT_EXPIRE       (3 DAYS)    43 #define  RESOLVE_DT_CHECK        (1 HOURS)    44 #define  RESOLVE_DT_LOOP         (1 MINUTES)    45 #define  RESOLVE_DT_SYNC         (2 MINUTES)    61 static int          resolve_cyclic_task(
void *arg);
    88   sz = strlen(prefix) + strlen(key) + 4;
    89   if ((s = malloc(sz)) != NULL) {
    94     snprintf(s, sz, 
"%s:%s", prefix, key);
   100       memset(argv, 0, 
sizeof (argv));
   141   sz = strlen(prefix) + strlen(key) + 4;
   142   if ((s = malloc(sz)) != NULL) {
   144     time_t              first, 
last, now;
   145     char               *hostname = value;
   147     first = now = time(NULL);
   154     memset(buf, 0, 
sizeof (buf));
   155     snprintf(s, sz, 
"%s:%s", prefix, key);
   163       memset(argv, 0, 
sizeof (argv));
   173     if (last + dt_refresh < now || !
STRCASEEQUAL(value, hostname)) {
   178       snprintf(buf, 
sizeof (buf), 
"%lu;%lu;%s", first, last, value);
   179       res = 
zeMap_Add(&map, s, buf, strlen(buf) + 1);
   202   if (p_expire > 6 
HOURS)
   203     dt_expire = p_expire;
   216 static char         browsekey[256];
   229     if (dbdir == NULL || strlen(dbdir) == 0)
   231     snprintf(name, 
sizeof (name), 
"%s/%s", dbdir, 
"ze-res-cache.db");
   238       (void) atexit(resolve_cache_close);
   240       memset(browsekey, 0, 
sizeof (browsekey));
   241       ZE_MessageInfo(10, 
"*** Registering resolve cache cyclic task...");
   254 resolve_cache_close()
   284 clean_up_cache(key, val, arg)
   290   time_t             *now = (time_t *) arg;
   292   if (key == NULL || val == NULL)
   303     first = last = (time_t) 0;
   304     memset(argv, 0, 
sizeof (argv));
   312     if (last + dt_expire < *now) {
   313       ZE_MessageInfo(11, 
"Resolve cache entry expired %s %lu %lu", key, last);
   329 resolve_cyclic_task(arg)
   332   static time_t       last_check = 0, last_sync = 0;
   345   if (last_check + dt_check <= now) {
   350     zeMap_Browse(&map, clean_up_cache, &now, browsekey, 
sizeof (browsekey),
   361   if (last_sync + dt_sync <= now) {
   367     resolve_cache_sync();
 #define RESOLVE_DT_REFRESH
#define ZEMAP_INITIALIZER
#define ZEMAP_BROWSE_CONTINUE
bool zeMap_Flush(ZEMAP_T *map)
bool zeMap_OK(ZEMAP_T *map)
bool resolve_cache_show_cyclic_task
#define ZEMAP_BROWSE_DELETE
bool zeMap_Lookup(ZEMAP_T *map, char *key, char *value, size_t size)
int zeStr2Tokens(char *, int, char **, char *)
bool CycTasks_Register(CYCLIC_F task, void *arg, time_t period)
bool zeMap_Browse(ZEMAP_T *map, ZEMAP_BROWSE_F func, void *arg, char *key, size_t ksz, time_t tmax)
bool zeMap_Open(ZEMAP_T *map, ZEDB_ENV_T *env, char *name, int rdonly, size_t cache_size)
#define ZE_MessageInfo(level,...)
#define RESOLVE_DT_EXPIRE
void resolve_cache_log_enable(bool enable)
bool resolve_cache_init(char *dbdir, int rwmode)
bool zeMap_Add(ZEMAP_T *map, char *key, char *value, size_t size)
bool resolve_cache_check(char *prefix, char *key, char *value, size_t size)
#define ZE_LogSysError(...)
bool zeMap_Unlock(ZEMAP_T *map)
bool resolve_cache_times(time_t p_sync, time_t p_check, time_t p_expire)
#define STRCASEEQUAL(a, b)
unsigned long zeStr2ulong(char *s, int *error, unsigned long dval)
bool zeMap_Lock(ZEMAP_T *map)
bool resolve_cache_add(char *prefix, char *key, char *value)
bool zeMap_Close(ZEMAP_T *map)