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 entry_port_cfg_st.h
9  * @brief Configuration structure for client ports.
10  **/
11 
12 #ifndef ENTRY_PORT_CFG_ST_H
13 #define ENTRY_PORT_CFG_ST_H
14 
15 #include "lib/cc/torint.h"
16 #include "core/or/or.h"
17 
18 struct entry_port_cfg_t {
19   /* Client port types (socks, dns, trans, natd) only: */
20   uint8_t isolation_flags; /**< Zero or more isolation flags */
21   int session_group; /**< A session group, or -1 if this port is not in a
22                       * session group. */
23 
24   /* Socks only: */
25   /** When both no-auth and user/pass are advertised by a SOCKS client, select
26    * no-auth. */
27   unsigned int socks_prefer_no_auth : 1;
28   /** When ISO_SOCKSAUTH is in use, Keep-Alive circuits indefinitely. */
29   unsigned int socks_iso_keep_alive : 1;
30 
31   /* Client port types only: */
32   unsigned int ipv4_traffic : 1;
33   unsigned int ipv6_traffic : 1;
34   unsigned int prefer_ipv6 : 1;
35   unsigned int dns_request : 1;
36   unsigned int onion_traffic : 1;
37 
38   /** For a socks listener: should we cache IPv4/IPv6 DNS information that
39    * exit nodes tell us?
40    *
41    * @{ */
42   unsigned int cache_ipv4_answers : 1;
43   unsigned int cache_ipv6_answers : 1;
44   /** @} */
45   /** For a socks listeners: if we find an answer in our client-side DNS cache,
46    * should we use it?
47    *
48    * @{ */
49   unsigned int use_cached_ipv4_answers : 1;
50   unsigned int use_cached_ipv6_answers : 1;
51   /** @} */
52   /** For socks listeners: When we can automap an address to IPv4 or IPv6,
53    * do we prefer IPv6? */
54   unsigned int prefer_ipv6_virtaddr : 1;
55 
56   /** For socks listeners: can we send back the extended SOCKS5 error code? */
57   unsigned int extended_socks5_codes : 1;
58 
59 };
60 
61 #endif /* !defined(ENTRY_PORT_CFG_ST_H) */
62