1 /*
2  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
3  * Use is subject to license terms.
4  */
5 /*
6  * lib/krb5/rcache/rc_file.h
7  *
8  * This file of the Kerberos V5 software is derived from public-domain code
9  * contributed by Daniel J. Bernstein, <brnstnd@acf10.nyu.edu>.
10  *
11  */
12 
13 /*
14  * Declarations for the file replay cache implementation.
15  */
16 
17 #ifndef _KRB5_RC_FILE_H
18 #define	_KRB5_RC_FILE_H
19 
20 
21 /* Solaris Kerberos */
22 
23 #include "rc_common.h"
24 #include "rc_io.h"
25 #include "rc-int.h"
26 
27 #ifndef EXCESSREPS
28 #define	EXCESSREPS 30
29 #endif
30 /*
31  * The rcache will be automatically expunged when the number of expired
32  * krb5_donot_replays encountered incidentally in searching exceeds the number
33  * of live krb5_donot_replays by EXCESSREPS. With the defaults here, a typical
34  * cache might build up some 10K of expired krb5_donot_replays before an
35  * automatic expunge, with the waste basically independent of the number of
36  * stores per minute.
37 
38  * The rcache will also automatically be expunged when it encounters more
39  * than EXCESSREPS expired entries when recovering a cache in
40  * file_recover.
41  */
42 
43 struct file_data {
44 	char *name;
45 	krb5_deltat lifespan;
46 	int hsize;
47 	int numhits;
48 	int nummisses;
49 	struct authlist **h;
50 	struct authlist *a;
51 	krb5_rc_iostuff d;
52 	char recovering;
53 };
54 
55 extern const krb5_rc_ops krb5_rc_file_ops;
56 
57 krb5_error_code KRB5_CALLCONV krb5_rc_file_init
58     	(krb5_context,
59 		   krb5_rcache,
60 		   krb5_deltat);
61 krb5_error_code KRB5_CALLCONV krb5_rc_file_recover
62 	(krb5_context,
63 		   krb5_rcache);
64 krb5_error_code KRB5_CALLCONV krb5_rc_file_recover_or_init
65     	(krb5_context,
66 		   krb5_rcache,
67 		   krb5_deltat);
68 krb5_error_code KRB5_CALLCONV krb5_rc_file_destroy
69 	(krb5_context,
70 		   krb5_rcache);
71 krb5_error_code KRB5_CALLCONV krb5_rc_file_close
72 	(krb5_context,
73 		   krb5_rcache);
74 krb5_error_code KRB5_CALLCONV krb5_rc_file_store
75 	(krb5_context,
76 		   krb5_rcache,
77 		   krb5_donot_replay *);
78 krb5_error_code KRB5_CALLCONV krb5_rc_file_expunge
79 	(krb5_context,
80 		   krb5_rcache);
81 krb5_error_code KRB5_CALLCONV krb5_rc_file_get_span
82 	(krb5_context,
83 		   krb5_rcache,
84 		   krb5_deltat *);
85 char * KRB5_CALLCONV krb5_rc_file_get_name
86 	(krb5_context,
87 		   krb5_rcache);
88 krb5_error_code KRB5_CALLCONV krb5_rc_file_resolve
89 	(krb5_context,
90 		   krb5_rcache,
91 		   char *);
92 krb5_error_code krb5_rc_file_close_no_free
93 	(krb5_context,
94 		   krb5_rcache);
95 void krb5_rc_free_entry
96 	(krb5_context,
97 		   krb5_donot_replay **);
98 #endif
99 
100