tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

addr_policy_st.h (1912B)


      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 */
      6 
      7 /**
      8 * @file addr_policy_st.h
      9 * @brief Address policy structures.
     10 **/
     11 
     12 #ifndef TOR_ADDR_POLICY_ST_H
     13 #define TOR_ADDR_POLICY_ST_H
     14 
     15 #include "lib/cc/torint.h"
     16 #include "lib/net/address.h"
     17 
     18 /** What action type does an address policy indicate: accept or reject? */
     19 typedef enum {
     20  ADDR_POLICY_ACCEPT=1,
     21  ADDR_POLICY_REJECT=2,
     22 } addr_policy_action_t;
     23 #define addr_policy_action_bitfield_t ENUM_BF(addr_policy_action_t)
     24 
     25 /** A reference-counted address policy rule. */
     26 struct addr_policy_t {
     27  int refcnt; /**< Reference count */
     28  /** What to do when the policy matches.*/
     29  addr_policy_action_bitfield_t policy_type:2;
     30  unsigned int is_private:1; /**< True iff this is the pseudo-address,
     31                              * "private". */
     32  unsigned int is_canonical:1; /**< True iff this policy is the canonical
     33                                * copy (stored in a hash table to avoid
     34                                * duplication of common policies) */
     35  maskbits_t maskbits; /**< Accept/reject all addresses <b>a</b> such that the
     36                 * first <b>maskbits</b> bits of <b>a</b> match
     37                 * <b>addr</b>. */
     38  /** Base address to accept or reject.
     39   *
     40   * Note that wildcards are treated
     41   * differently depending on address family. An AF_UNSPEC address means
     42   * "All addresses, IPv4 or IPv6." An AF_INET address with maskbits==0 means
     43   * "All IPv4 addresses" and an AF_INET6 address with maskbits == 0 means
     44   * "All IPv6 addresses".
     45  **/
     46  tor_addr_t addr;
     47  uint16_t prt_min; /**< Lowest port number to accept/reject. */
     48  uint16_t prt_max; /**< Highest port number to accept/reject. */
     49 };
     50 
     51 #endif /* !defined(TOR_ADDR_POLICY_ST_H) */