1 /* Copyright (c) 2017, The Tor Project, Inc. */
2 /* See LICENSE for licensing information */
4 #ifndef TOR_CONSDIFFMGR_H
5 #define TOR_CONSDIFFMGR_H
8 * Possible outcomes from trying to look up a given consensus diff.
10 typedef enum consdiff_status_t
{
16 typedef struct consdiff_cfg_t
{
17 int32_t cache_max_num
;
20 struct consensus_cache_entry_t
; // from conscache.h
22 int consdiffmgr_add_consensus(const char *consensus
,
23 const networkstatus_t
*as_parsed
);
25 consdiff_status_t
consdiffmgr_find_consensus(
26 struct consensus_cache_entry_t
**entry_out
,
27 consensus_flavor_t flavor
,
28 compress_method_t method
);
30 consdiff_status_t
consdiffmgr_find_diff_from(
31 struct consensus_cache_entry_t
**entry_out
,
32 consensus_flavor_t flavor
,
34 const uint8_t *digest
,
36 compress_method_t method
);
38 int consensus_cache_entry_get_voter_id_digests(
39 const struct consensus_cache_entry_t
*ent
,
41 int consensus_cache_entry_get_fresh_until(
42 const struct consensus_cache_entry_t
*ent
,
44 int consensus_cache_entry_get_valid_until(
45 const struct consensus_cache_entry_t
*ent
,
47 int consensus_cache_entry_get_valid_after(
48 const struct consensus_cache_entry_t
*ent
,
51 void consdiffmgr_rescan(void);
52 int consdiffmgr_cleanup(void);
53 void consdiffmgr_enable_background_compression(void);
54 void consdiffmgr_configure(const consdiff_cfg_t
*cfg
);
55 struct sandbox_cfg_elem
;
56 int consdiffmgr_register_with_sandbox(struct sandbox_cfg_elem
**cfg
);
57 void consdiffmgr_free_all(void);
58 int consdiffmgr_validate(void);
60 #ifdef CONSDIFFMGR_PRIVATE
61 STATIC
unsigned n_diff_compression_methods(void);
62 STATIC
unsigned n_consensus_compression_methods(void);
63 STATIC consensus_cache_t
*cdm_cache_get(void);
64 STATIC consensus_cache_entry_t
*cdm_cache_lookup_consensus(
65 consensus_flavor_t flavor
, time_t valid_after
);
66 STATIC
int cdm_entry_get_sha3_value(uint8_t *digest_out
,
67 consensus_cache_entry_t
*ent
,
69 STATIC
int uncompress_or_copy(char **out
, size_t *outlen
,
70 consensus_cache_entry_t
*ent
);
71 #endif /* defined(CONSDIFFMGR_PRIVATE) */
73 #endif /* !defined(TOR_CONSDIFFMGR_H) */