1 /* Copyright (c) 2001 Matej Pfajfar.
2 * Copyright (c) 2001-2004, Roger Dingledine.
3 * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
4 * Copyright (c) 2007-2021, The Tor Project, Inc. */
5 /* See LICENSE for licensing information */
9 * \brief Header file for bwauth.c
15 /** Maximum allowable length of bandwidth headers in a bandwidth file */
16 #define MAX_BW_FILE_HEADER_COUNT_IN_VOTE 50
18 /** Terminatore that separates bandwidth file headers from bandwidth file
20 #define BW_FILE_HEADERS_TERMINATOR "=====\n"
22 int dirserv_read_measured_bandwidths(const char *from_file
,
23 smartlist_t
*routerstatuses
,
24 smartlist_t
*bw_file_headers
,
26 int dirserv_query_measured_bw_cache_kb(const char *node_id
,
29 void dirserv_clear_measured_bw_cache(void);
30 int dirserv_has_measured_bw(const char *node_id
);
31 int dirserv_get_measured_bw_cache_size(void);
32 void dirserv_count_measured_bws(const smartlist_t
*routers
);
33 int dirserv_get_last_n_measured_bws(void);
35 uint32_t dirserv_get_credible_bandwidth_kb(const routerinfo_t
*ri
);
38 typedef struct measured_bw_line_t
{
39 char node_id
[DIGEST_LEN
];
40 char node_hex
[MAX_HEX_NICKNAME_LEN
+1];
44 /* Put the MAX_MEASUREMENT_AGE #define here so unit tests can see it */
45 #define MAX_MEASUREMENT_AGE (3*24*60*60) /* 3 days */
47 STATIC
int measured_bw_line_parse(measured_bw_line_t
*out
, const char *line
,
48 int line_is_after_headers
);
50 STATIC
int measured_bw_line_apply(measured_bw_line_t
*parsed_line
,
51 smartlist_t
*routerstatuses
);
53 STATIC
void dirserv_cache_measured_bw(const measured_bw_line_t
*parsed_line
,
55 STATIC
void dirserv_expire_measured_bw_cache(time_t now
);
56 #endif /* defined(BWAUTH_PRIVATE) */
58 #endif /* !defined(TOR_BWAUTH_H) */