2017-04-06 20:46:45 +02:00
|
|
|
/* Copyright (c) 2017, The Tor Project, Inc. */
|
|
|
|
/* See LICENSE for licensing information */
|
|
|
|
|
|
|
|
#ifndef TOR_CONSDIFFMGR_H
|
|
|
|
#define TOR_CONSDIFFMGR_H
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Possible outcomes from trying to look up a given consensus diff.
|
|
|
|
*/
|
|
|
|
typedef enum consdiff_status_t {
|
|
|
|
CONSDIFF_AVAILABLE,
|
|
|
|
CONSDIFF_NOT_FOUND,
|
|
|
|
CONSDIFF_IN_PROGRESS,
|
|
|
|
} consdiff_status_t;
|
|
|
|
|
|
|
|
typedef struct consdiff_cfg_t {
|
2017-04-24 17:41:11 +02:00
|
|
|
int32_t cache_max_age_hours;
|
|
|
|
int32_t cache_max_num;
|
2017-04-06 20:46:45 +02:00
|
|
|
} consdiff_cfg_t;
|
|
|
|
|
|
|
|
struct consensus_cache_entry_t; // from conscache.h
|
|
|
|
|
|
|
|
int consdiffmgr_add_consensus(const char *consensus,
|
|
|
|
const networkstatus_t *as_parsed);
|
|
|
|
|
|
|
|
consdiff_status_t consdiffmgr_find_diff_from(
|
|
|
|
struct consensus_cache_entry_t **entry_out,
|
|
|
|
consensus_flavor_t flavor,
|
|
|
|
int digest_type,
|
|
|
|
const uint8_t *digest,
|
|
|
|
size_t digestlen);
|
|
|
|
void consdiffmgr_rescan(void);
|
|
|
|
int consdiffmgr_cleanup(void);
|
|
|
|
void consdiffmgr_configure(const consdiff_cfg_t *cfg);
|
|
|
|
void consdiffmgr_free_all(void);
|
2017-04-15 17:43:53 +02:00
|
|
|
int consdiffmgr_validate(void);
|
2017-04-06 20:46:45 +02:00
|
|
|
|
2017-04-14 18:35:02 +02:00
|
|
|
#ifdef CONSDIFFMGR_PRIVATE
|
2017-04-15 16:59:05 +02:00
|
|
|
STATIC consensus_cache_t *cdm_cache_get(void);
|
2017-04-14 18:35:02 +02:00
|
|
|
STATIC consensus_cache_entry_t *cdm_cache_lookup_consensus(
|
|
|
|
consensus_flavor_t flavor, time_t valid_after);
|
2017-04-16 21:36:20 +02:00
|
|
|
STATIC int cdm_entry_get_sha3_value(uint8_t *digest_out,
|
|
|
|
consensus_cache_entry_t *ent,
|
|
|
|
const char *label);
|
2017-04-14 18:35:02 +02:00
|
|
|
#endif
|
|
|
|
|
2017-04-06 20:46:45 +02:00
|
|
|
#endif
|
|
|
|
|