1 /*	$NetBSD: dict_cache.h,v 1.2 2017/02/14 01:16:49 christos Exp $	*/
2 
3 #ifndef _DICT_CACHE_H_INCLUDED_
4 #define _DICT_CACHE_H_INCLUDED_
5 
6 /*++
7 /* NAME
8 /*	dict_cache 3h
9 /* SUMMARY
10 /*	External cache manager
11 /* SYNOPSIS
12 /*	#include <dict_cache.h>
13 /* DESCRIPTION
14 /* .nf
15 
16  /*
17   * Utility library.
18   */
19 #include <dict.h>
20 #include <check_arg.h>
21 
22  /*
23   * External interface.
24   */
25 typedef struct DICT_CACHE DICT_CACHE;
26 typedef int (*DICT_CACHE_VALIDATOR_FN) (const char *, const char *, void *);
27 
28 extern DICT_CACHE *dict_cache_open(const char *, int, int);
29 extern void dict_cache_close(DICT_CACHE *);
30 extern const char *dict_cache_lookup(DICT_CACHE *, const char *);
31 extern int dict_cache_update(DICT_CACHE *, const char *, const char *);
32 extern int dict_cache_delete(DICT_CACHE *, const char *);
33 extern int dict_cache_sequence(DICT_CACHE *, int, const char **, const char **);
34 extern void dict_cache_control(DICT_CACHE *,...);
35 extern const char *dict_cache_name(DICT_CACHE *);
36 
37 #define DICT_CACHE_FLAG_VERBOSE		(1<<0)	/* verbose operation */
38 #define DICT_CACHE_FLAG_STATISTICS	(1<<1)	/* log cache statistics */
39 
40 /* Legacy API: type-unchecked argument, internal use. */
41 #define DICT_CACHE_CTL_END		0	/* list terminator */
42 #define DICT_CACHE_CTL_FLAGS		1	/* see above */
43 #define DICT_CACHE_CTL_INTERVAL		2	/* cleanup interval */
44 #define DICT_CACHE_CTL_VALIDATOR	3	/* call-back validator */
45 #define DICT_CACHE_CTL_CONTEXT		4	/* call-back context */
46 
47 /* Safer API: type-checked arguments, external use. */
48 #define CA_DICT_CACHE_CTL_END		DICT_CACHE_CTL_END
49 #define CA_DICT_CACHE_CTL_FLAGS(v)	DICT_CACHE_CTL_FLAGS, CHECK_VAL(DICT_CACHE, int, (v))
50 #define CA_DICT_CACHE_CTL_INTERVAL(v)	DICT_CACHE_CTL_INTERVAL, CHECK_VAL(DICT_CACHE, int, (v))
51 #define CA_DICT_CACHE_CTL_VALIDATOR(v)	DICT_CACHE_CTL_VALIDATOR, CHECK_VAL(DICT_CACHE, DICT_CACHE_VALIDATOR_FN, (v))
52 #define CA_DICT_CACHE_CTL_CONTEXT(v)	DICT_CACHE_CTL_CONTEXT, CHECK_PTR(DICT_CACHE, void, (v))
53 
54 CHECK_VAL_HELPER_DCL(DICT_CACHE, int);
55 CHECK_VAL_HELPER_DCL(DICT_CACHE, DICT_CACHE_VALIDATOR_FN);
56 CHECK_PTR_HELPER_DCL(DICT_CACHE, void);
57 
58 /* LICENSE
59 /* .ad
60 /* .fi
61 /*	The Secure Mailer license must be distributed with this software.
62 /* AUTHOR(S)
63 /*	Wietse Venema
64 /*	IBM T.J. Watson Research
65 /*	P.O. Box 704
66 /*	Yorktown Heights, NY 10598, USA
67 /*--*/
68 
69 #endif
70