policies.h 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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-2013, The Tor Project, Inc. */
  5. /* See LICENSE for licensing information */
  6. /**
  7. * \file policies.h
  8. * \brief Header file for policies.c.
  9. **/
  10. #ifndef TOR_POLICIES_H
  11. #define TOR_POLICIES_H
  12. /* (length of
  13. * "accept6 [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]/128:65535-65535\n"
  14. * plus a terminating NUL, rounded up to a nice number.)
  15. */
  16. #define POLICY_BUF_LEN 72
  17. int firewall_is_fascist_or(void);
  18. int fascist_firewall_allows_address_or(const tor_addr_t *addr, uint16_t port);
  19. int fascist_firewall_allows_or(const routerinfo_t *ri);
  20. int fascist_firewall_allows_node(const node_t *node);
  21. int fascist_firewall_allows_address_dir(const tor_addr_t *addr, uint16_t port);
  22. int dir_policy_permits_address(const tor_addr_t *addr);
  23. int socks_policy_permits_address(const tor_addr_t *addr);
  24. int authdir_policy_permits_address(uint32_t addr, uint16_t port);
  25. int authdir_policy_valid_address(uint32_t addr, uint16_t port);
  26. int authdir_policy_baddir_address(uint32_t addr, uint16_t port);
  27. int authdir_policy_badexit_address(uint32_t addr, uint16_t port);
  28. int validate_addr_policies(const or_options_t *options, char **msg);
  29. void policy_expand_private(smartlist_t **policy);
  30. void policy_expand_unspec(smartlist_t **policy);
  31. int policies_parse_from_options(const or_options_t *options);
  32. addr_policy_t *addr_policy_get_canonical_entry(addr_policy_t *ent);
  33. int cmp_addr_policies(smartlist_t *a, smartlist_t *b);
  34. addr_policy_result_t compare_tor_addr_to_addr_policy(const tor_addr_t *addr,
  35. uint16_t port, const smartlist_t *policy);
  36. addr_policy_result_t compare_tor_addr_to_node_policy(const tor_addr_t *addr,
  37. uint16_t port, const node_t *node);
  38. int policies_parse_exit_policy(config_line_t *cfg, smartlist_t **dest,
  39. int ipv6exit,
  40. int rejectprivate, uint32_t local_address,
  41. int add_default_policy);
  42. void policies_exit_policy_append_reject_star(smartlist_t **dest);
  43. void addr_policy_append_reject_addr(smartlist_t **dest,
  44. const tor_addr_t *addr);
  45. void policies_set_node_exitpolicy_to_reject_all(node_t *exitrouter);
  46. int exit_policy_is_general_exit(smartlist_t *policy);
  47. int policy_is_reject_star(const smartlist_t *policy, sa_family_t family);
  48. int getinfo_helper_policies(control_connection_t *conn,
  49. const char *question, char **answer,
  50. const char **errmsg);
  51. int policy_write_item(char *buf, size_t buflen, addr_policy_t *item,
  52. int format_for_desc);
  53. void addr_policy_list_free(smartlist_t *p);
  54. void addr_policy_free(addr_policy_t *p);
  55. void policies_free_all(void);
  56. char *policy_summarize(smartlist_t *policy, sa_family_t family);
  57. short_policy_t *parse_short_policy(const char *summary);
  58. char *write_short_policy(const short_policy_t *policy);
  59. void short_policy_free(short_policy_t *policy);
  60. int short_policy_is_reject_star(const short_policy_t *policy);
  61. addr_policy_result_t compare_tor_addr_to_short_policy(
  62. const tor_addr_t *addr, uint16_t port,
  63. const short_policy_t *policy);
  64. #endif