1505d05c7Sgtb /*
2505d05c7Sgtb  * lib/krb5/keytab/rc-int.h
3505d05c7Sgtb  *
4505d05c7Sgtb  * Copyright 2004 by the Massachusetts Institute of Technology.
5505d05c7Sgtb  * All Rights Reserved.
6505d05c7Sgtb  *
7505d05c7Sgtb  * Export of this software from the United States of America may
8505d05c7Sgtb  *   require a specific license from the United States Government.
9505d05c7Sgtb  *   It is the responsibility of any person or organization contemplating
10505d05c7Sgtb  *   export to obtain such a license before exporting.
11*55fea89dSDan Cross  *
12505d05c7Sgtb  * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
13505d05c7Sgtb  * distribute this software and its documentation for any purpose and
14505d05c7Sgtb  * without fee is hereby granted, provided that the above copyright
15505d05c7Sgtb  * notice appear in all copies and that both that copyright notice and
16505d05c7Sgtb  * this permission notice appear in supporting documentation, and that
17505d05c7Sgtb  * the name of M.I.T. not be used in advertising or publicity pertaining
18505d05c7Sgtb  * to distribution of the software without specific, written prior
19505d05c7Sgtb  * permission.  Furthermore if you modify this software you must label
20505d05c7Sgtb  * your software as modified software and not distribute it in such a
21505d05c7Sgtb  * fashion that it might be confused with the original M.I.T. software.
22505d05c7Sgtb  * M.I.T. makes no representations about the suitability of
23505d05c7Sgtb  * this software for any purpose.  It is provided "as is" without express
24505d05c7Sgtb  * or implied warranty.
25*55fea89dSDan Cross  *
26505d05c7Sgtb  *
27505d05c7Sgtb  * This file contains constant and function declarations used in the
28505d05c7Sgtb  * file-based replay cache routines.
29505d05c7Sgtb  */
30505d05c7Sgtb 
31505d05c7Sgtb #ifndef __KRB5_RCACHE_INT_H__
32505d05c7Sgtb #define __KRB5_RCACHE_INT_H__
33505d05c7Sgtb 
34505d05c7Sgtb int krb5int_rc_finish_init(void);
35505d05c7Sgtb 
36505d05c7Sgtb void krb5int_rc_terminate(void);
37505d05c7Sgtb 
38505d05c7Sgtb struct krb5_rc_st {
39505d05c7Sgtb     krb5_magic magic;
40505d05c7Sgtb     const struct _krb5_rc_ops *ops;
41505d05c7Sgtb     krb5_pointer data;
42505d05c7Sgtb     k5_mutex_t lock;
43505d05c7Sgtb };
44505d05c7Sgtb 
45505d05c7Sgtb struct _krb5_rc_ops {
46505d05c7Sgtb     krb5_magic magic;
47505d05c7Sgtb     char *type;
48505d05c7Sgtb     krb5_error_code (KRB5_CALLCONV *init)
49505d05c7Sgtb 	(krb5_context, krb5_rcache,krb5_deltat); /* create */
50505d05c7Sgtb     krb5_error_code (KRB5_CALLCONV *recover)
51505d05c7Sgtb 	(krb5_context, krb5_rcache); /* open */
52505d05c7Sgtb     krb5_error_code (KRB5_CALLCONV *recover_or_init)
53505d05c7Sgtb 	(krb5_context, krb5_rcache,krb5_deltat);
54505d05c7Sgtb     krb5_error_code (KRB5_CALLCONV *destroy)
55505d05c7Sgtb 	(krb5_context, krb5_rcache);
56505d05c7Sgtb     krb5_error_code (KRB5_CALLCONV *close)
57505d05c7Sgtb 	(krb5_context, krb5_rcache);
58505d05c7Sgtb     krb5_error_code (KRB5_CALLCONV *store)
59505d05c7Sgtb 	(krb5_context, krb5_rcache,krb5_donot_replay *);
60505d05c7Sgtb     krb5_error_code (KRB5_CALLCONV *expunge)
61505d05c7Sgtb 	(krb5_context, krb5_rcache);
62505d05c7Sgtb     krb5_error_code (KRB5_CALLCONV *get_span)
63505d05c7Sgtb 	(krb5_context, krb5_rcache,krb5_deltat *);
64505d05c7Sgtb     char *(KRB5_CALLCONV *get_name)
65505d05c7Sgtb 	(krb5_context, krb5_rcache);
66505d05c7Sgtb     krb5_error_code (KRB5_CALLCONV *resolve)
67505d05c7Sgtb 	(krb5_context, krb5_rcache, char *);
68505d05c7Sgtb };
69505d05c7Sgtb 
70505d05c7Sgtb typedef struct _krb5_rc_ops krb5_rc_ops;
71505d05c7Sgtb 
72505d05c7Sgtb krb5_error_code krb5_rc_register_type (krb5_context, const krb5_rc_ops *);
73505d05c7Sgtb 
74159d09a2SMark Phalan /* Solaris Kerberos */
75159d09a2SMark Phalan extern krb5_rc_ops const *krb5_rc_dfl_ops;
7657607821Ssuha extern const krb5_rc_ops krb5_rc_none_ops;
77505d05c7Sgtb 
78505d05c7Sgtb #endif /* __KRB5_RCACHE_INT_H__ */
79