bwauth.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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-2019, The Tor Project, Inc. */
  5. /* See LICENSE for licensing information */
  6. /**
  7. * \file bwauth.h
  8. * \brief Header file for bwauth.c
  9. **/
  10. #ifndef TOR_BWAUTH_H
  11. #define TOR_BWAUTH_H
  12. /** Maximum allowable length of bandwidth headers in a bandwidth file */
  13. #define MAX_BW_FILE_HEADER_COUNT_IN_VOTE 50
  14. /** Terminatore that separates bandwidth file headers from bandwidth file
  15. * relay lines */
  16. #define BW_FILE_HEADERS_TERMINATOR "=====\n"
  17. int dirserv_read_measured_bandwidths(const char *from_file,
  18. smartlist_t *routerstatuses,
  19. smartlist_t *bw_file_headers,
  20. uint8_t *digest_out);
  21. int dirserv_query_measured_bw_cache_kb(const char *node_id,
  22. long *bw_out,
  23. time_t *as_of_out);
  24. void dirserv_clear_measured_bw_cache(void);
  25. int dirserv_has_measured_bw(const char *node_id);
  26. int dirserv_get_measured_bw_cache_size(void);
  27. void dirserv_count_measured_bws(const smartlist_t *routers);
  28. int dirserv_get_last_n_measured_bws(void);
  29. uint32_t dirserv_get_credible_bandwidth_kb(const routerinfo_t *ri);
  30. #ifdef BWAUTH_PRIVATE
  31. typedef struct measured_bw_line_t {
  32. char node_id[DIGEST_LEN];
  33. char node_hex[MAX_HEX_NICKNAME_LEN+1];
  34. long int bw_kb;
  35. } measured_bw_line_t;
  36. /* Put the MAX_MEASUREMENT_AGE #define here so unit tests can see it */
  37. #define MAX_MEASUREMENT_AGE (3*24*60*60) /* 3 days */
  38. STATIC int measured_bw_line_parse(measured_bw_line_t *out, const char *line,
  39. int line_is_after_headers);
  40. STATIC int measured_bw_line_apply(measured_bw_line_t *parsed_line,
  41. smartlist_t *routerstatuses);
  42. STATIC void dirserv_cache_measured_bw(const measured_bw_line_t *parsed_line,
  43. time_t as_of);
  44. STATIC void dirserv_expire_measured_bw_cache(time_t now);
  45. #endif /* defined(BWAUTH_PRIVATE) */
  46. #endif /* !defined(TOR_BWAUTH_H) */