Only cache replay digests for SPA packets that decrypt
[fwknop.git] / server / replay_cache.h
1 /*
2  *****************************************************************************
3  *
4  * File:    replay_cache.h
5  *
6  * Author:  Damien Stuart (dstuart@dstuart.org)
7  *
8  * Purpose: Header file for fwknopd replay_cache.c functions.
9  *
10  * Copyright 2010 Damien Stuart (dstuart@dstuart.org)
11  *
12  *  License (GNU Public License):
13  *
14  *  This program is free software; you can redistribute it and/or
15  *  modify it under the terms of the GNU General Public License
16  *  as published by the Free Software Foundation; either version 2
17  *  of the License, or (at your option) any later version.
18  *
19  *  This program is distributed in the hope that it will be useful,
20  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
21  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22  *  GNU General Public License for more details.
23  *
24  *  You should have received a copy of the GNU General Public License
25  *  along with this program; if not, write to the Free Software
26  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
27  *  USA
28  *
29  *****************************************************************************
30 */
31 #ifndef REPLAY_CACHE_H
32 #define REPLAY_CACHE_H
33
34 #include "fwknopd_common.h"
35 #include "fko.h"
36
37 typedef struct digest_cache_info {
38     unsigned int    src_ip;
39     unsigned int    dst_ip;
40     unsigned short  src_port;
41     unsigned short  dst_port;
42     unsigned char   proto;
43     time_t          created;
44     char           *digest;
45 #if ! USE_FILE_CACHE
46     time_t          first_replay;
47     time_t          last_replay;
48     int             replay_count;
49 #endif
50 } digest_cache_info_t;
51
52 #if USE_FILE_CACHE
53 struct digest_cache_list {
54     digest_cache_info_t cache_info;
55     struct digest_cache_list *next;
56 };
57 #endif
58
59 /* Prototypes
60 */
61 int replay_cache_init(fko_srv_options_t *opts);
62 int is_replay(fko_srv_options_t *opts, char *digest);
63 int add_replay(fko_srv_options_t *opts, char *digest);
64 #ifdef USE_FILE_CACHE
65 int replay_file_cache_init(fko_srv_options_t *opts);
66 int is_replay_file_cache(fko_srv_options_t *opts, char *digest);
67 int add_replay_file_cache(fko_srv_options_t *opts, char *digest);
68 void free_replay_list(fko_srv_options_t *opts);
69 #else
70 int replay_db_cache_init(fko_srv_options_t *opts);
71 int is_replay_dbm_cache(fko_srv_options_t *opts, char *digest);
72 int add_replay_dbm_cache(fko_srv_options_t *opts, char *digest);
73 #endif
74
75 #endif  /* REPLAY_CACHE_H */