Tor 0.4.9.3-alpha-dev
Loading...
Searching...
No Matches
or_options_st.h
Go to the documentation of this file.
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 or_options_st.h
9 *
10 * \brief The or_options_t structure, which represents Tor's configuration.
11 */
12
13#ifndef TOR_OR_OPTIONS_ST_H
14#define TOR_OR_OPTIONS_ST_H
15
16#include "core/or/or.h"
17#include "lib/cc/torint.h"
18#include "lib/net/address.h"
20
21struct smartlist_t;
22struct config_line_t;
23struct config_suite_t;
24struct routerset_t;
25
26/** Enumeration of outbound address configuration types:
27 * Exit-only, OR-only, PT-only, or any of them */
28typedef enum {
29 /** Outbound IP address for Exit connections. Controlled by the
30 * `OutboundBindAddressExit` configuration entry in torrc. */
32
33 /** Outbound IP address for OR connections. Controlled by the
34 * `OutboundBindAddressOR` configuration entry in torrc. */
36
37 /** Outbound IP address for PT connections. Controlled by the
38 * `OutboundBindAddressPT` configuration entry in torrc. */
40
41 /** Outbound IP address for any outgoing connections. Controlled by the
42 * OutboundBindAddress configuration entry in torrc. This value is used as
43 * fallback if the more specific OUTBOUND_ADDR_EXIT, OUTBOUND_ADDR_OR, and
44 * OUTBOUND_ADDR_PT are unset. */
46
47 /** Max value for this enum. Must be the last element in this enum. */
50
51/** Which protocol to use for TCPProxy. */
52typedef enum {
53 /** Use the HAProxy proxy protocol. */
56
57/** Enumeration of available time formats for output of --key-expiration */
58typedef enum {
59 KEY_EXPIRATION_FORMAT_ISO8601 = 0,
60 KEY_EXPIRATION_FORMAT_TIMESTAMP
62
63/** Configuration options for a Tor process. */
65 uint32_t magic_;
66
67 /** What should the tor process actually do? */
69 char *command_arg; /**< Argument for command-line option. */
70
71 struct config_line_t *Logs; /**< New-style list of configuration lines
72 * for logs */
73 int LogTimeGranularity; /**< Log resolution in milliseconds. */
74
75 int LogMessageDomains; /**< Boolean: Should we log the domain(s) in which
76 * each log message occurs? */
77 int TruncateLogFile; /**< Boolean: Should we truncate the log file
78 before we start writing? */
79 char *SyslogIdentityTag; /**< Identity tag to add for syslog logging. */
80
81 char *DebugLogFile; /**< Where to send verbose log messages. */
82 char *DataDirectory_option; /**< Where to store long-term data, as
83 * configured by the user. */
84 char *DataDirectory; /**< Where to store long-term data, as modified. */
85 int DataDirectoryGroupReadable; /**< Boolean: Is the DataDirectory g+r? */
86
87 char *KeyDirectory_option; /**< Where to store keys, as
88 * configured by the user. */
89 char *KeyDirectory; /**< Where to store keys data, as modified. */
90 int KeyDirectoryGroupReadable; /**< Boolean: Is the KeyDirectory g+r? */
91
92 char *FamilyKeyDirectory_option; /**< Where to look for family ID keys,
93 * as configured by the user. */
94 char *FamilyKeyDirectory; /**< Where to look for family ID keys. */
95
96 char *CacheDirectory_option; /**< Where to store cached data, as
97 * configured by the user. */
98 char *CacheDirectory; /**< Where to store cached data, as modified. */
99 int CacheDirectoryGroupReadable; /**< Boolean: Is the CacheDirectory g+r? */
100
101 char *Nickname; /**< OR only: nickname of this onion router. */
102 /** OR only: configured address for this onion router. Up to two times this
103 * options is accepted as in IPv4 and IPv6. */
105
106 /** Boolean: If set, disable IPv6 address resolution, IPv6 ORPorts, IPv6
107 * reachability checks, and publishing an IPv6 ORPort in its descriptor. */
109
110 char *PidFile; /**< Where to store PID of Tor process. */
111
112 struct routerset_t *ExitNodes; /**< Structure containing nicknames, digests,
113 * country codes and IP address patterns of ORs to
114 * consider as exits. */
115 struct routerset_t *MiddleNodes; /**< Structure containing nicknames,
116 * digests, country codes and IP address patterns
117 * of ORs to consider as middles. */
118 struct routerset_t *EntryNodes;/**< Structure containing nicknames, digests,
119 * country codes and IP address patterns of ORs to
120 * consider as entry points. */
121 int StrictNodes; /**< Boolean: When none of our EntryNodes or ExitNodes
122 * are up, or we need to access a node in ExcludeNodes,
123 * do we just fail instead? */
124 struct routerset_t *ExcludeNodes;/**< Structure containing nicknames,
125 * digests, country codes and IP address patterns
126 * of ORs not to use in circuits. But see
127 * StrictNodes above. */
128 struct routerset_t *ExcludeExitNodes;/**< Structure containing nicknames,
129 * digests, country codes and IP address
130 * patterns of ORs not to consider as
131 * exits. */
132
133 /** Union of ExcludeNodes and ExcludeExitNodes */
134 struct routerset_t *ExcludeExitNodesUnion_;
135
136 int DisableAllSwap; /**< Boolean: Attempt to call mlockall() on our
137 * process for all current and future memory. */
138
139 struct config_line_t *ExitPolicy; /**< Lists of exit policy components. */
140 int ExitPolicyRejectPrivate; /**< Should we not exit to reserved private
141 * addresses, and our own published addresses?
142 */
143 int ExitPolicyRejectLocalInterfaces; /**< Should we not exit to local
144 * interface addresses?
145 * Includes OutboundBindAddresses and
146 * configured ports. */
147 int ReducedExitPolicy; /**<Should we use the Reduced Exit Policy? */
148 int ReevaluateExitPolicy; /**<Should we re-evaluate Exit Policy on existing
149 * connections when it changes? */
150 struct config_line_t *SocksPolicy; /**< Lists of socks policy components */
151 struct config_line_t *DirPolicy; /**< Lists of dir policy components */
152 /** Local address to bind outbound sockets */
154 /** Local address to bind outbound relay sockets */
156 /** Local address to bind outbound exit sockets */
158 /** Local address to bind outbound PT sockets */
160 /** Addresses derived from the various OutboundBindAddress lines.
161 * [][0] is IPv4, [][1] is IPv6
162 */
164 /** Whether dirservers allow router descriptors with private IPs. */
166 /** Whether routers accept EXTEND cells to routers with private IPs. */
168 char *User; /**< Name of user to run Tor as. */
169 /** Ports to listen on for OR connections. */
171 /** Ports to listen on for extended OR connections. */
173 /** Ports to listen on for Metrics connections. */
175 /** Ports to listen on for SOCKS connections. */
177 /** Ports to listen on for transparent pf/netfilter connections. */
179 char *TransProxyType; /**< What kind of transparent proxy
180 * implementation are we using? */
181 /** Parsed value of TransProxyType. */
182 enum {
183 TPT_DEFAULT,
184 TPT_PF_DIVERT,
185 TPT_IPFW,
186 TPT_TPROXY,
188 /** Ports to listen on for transparent natd connections. */
190 /** Ports to listen on for HTTP Tunnel connections. */
192 struct config_line_t *ControlPort_lines; /**< Ports to listen on for control
193 * connections. */
194 /** List of Unix Domain Sockets to listen on for control connections. */
196
197 int ControlSocketsGroupWritable; /**< Boolean: Are control sockets g+rw? */
198 int UnixSocksGroupWritable; /**< Boolean: Are SOCKS Unix sockets g+rw? */
199 /** Ports to listen on for directory connections. */
201 /** Ports to listen on for DNS requests. */
203
204 /* MaxMemInQueues value as input by the user. We clean this up to be
205 * MaxMemInQueues. */
206 uint64_t MaxMemInQueues_raw;
207 uint64_t MaxMemInQueues;/**< If we have more memory than this allocated
208 * for queues and buffers, run the OOM handler */
209 /** Above this value, consider ourselves low on RAM. */
211
212 uint64_t MaxHSDirCacheBytes;/**< If we have more memory than this allocated
213 * for the hidden service directory cache,
214 * run the HS cache OOM handler */
215
216 /** @name port booleans
217 *
218 * Derived booleans: For server ports and ControlPort, true iff there is a
219 * non-listener port on an AF_INET or AF_INET6 address of the given type
220 * configured in one of the _lines options above.
221 * For client ports, also true if there is a unix socket configured.
222 * If you are checking for client ports, you may want to use:
223 * SocksPort_set || TransPort_set || NATDPort_set || DNSPort_set ||
224 * HTTPTunnelPort_set
225 * rather than SocksPort_set.
226 *
227 * @{
228 */
229 unsigned int ORPort_set : 1;
230 unsigned int SocksPort_set : 1;
231 unsigned int TransPort_set : 1;
232 unsigned int NATDPort_set : 1;
233 unsigned int ControlPort_set : 1;
234 unsigned int DirPort_set : 1;
235 unsigned int DNSPort_set : 1;
236 unsigned int ExtORPort_set : 1;
237 unsigned int HTTPTunnelPort_set : 1;
238 unsigned int MetricsPort_set : 1;
239 /**@}*/
240
241 /** Whether to publish our descriptor regardless of all our self-tests
242 */
244 /** Whether to publish our descriptor regardless of IPv6 self-tests.
245 *
246 * This is an autobool; when set to AUTO, it uses AssumeReachable.
247 **/
249 int AuthoritativeDir; /**< Boolean: is this an authoritative directory? */
250 int V3AuthoritativeDir; /**< Boolean: is this an authoritative directory
251 * for version 3 directories? */
252 int BridgeAuthoritativeDir; /**< Boolean: is this an authoritative directory
253 * that aggregates bridge descriptors? */
254
255 /** If set on a bridge relay, it will include this value on a new
256 * "bridge-distribution-request" line in its bridge descriptor. */
258
259 /** If set on a bridge authority, it will answer requests on its dirport
260 * for bridge statuses -- but only if the requests use this password. */
262 /** If BridgePassword is set, this is a SHA256 digest of the basic http
263 * authenticator for it. Used so we can do a time-independent comparison. */
265
266 int UseBridges; /**< Boolean: should we start all circuits with a bridge? */
267 struct config_line_t *Bridges; /**< List of bootstrap bridge addresses. */
268
269 struct config_line_t *ClientTransportPlugin; /**< List of client
270 transport plugins. */
271
272 struct config_line_t *ServerTransportPlugin; /**< List of client
273 transport plugins. */
274
275 /** List of TCP/IP addresses that transports should listen at. */
277
278 /** List of options that must be passed to pluggable transports. */
280
281 int BridgeRelay; /**< Boolean: are we acting as a bridge relay? We make
282 * this explicit so we can change how we behave in the
283 * future. */
284
285 /** Boolean: if we know the bridge's digest, should we get new
286 * descriptors from the bridge authorities or from the bridge itself? */
288
289 int AvoidDiskWrites; /**< Boolean: should we never cache things to disk?
290 * Not used yet. */
291 int ClientOnly; /**< Boolean: should we never evolve into a server role? */
292
293 int ReducedConnectionPadding; /**< Boolean: Should we try to keep connections
294 open shorter and pad them less against
295 connection-level traffic analysis? */
296 /** Autobool: if auto, then connection padding will be negotiated by client
297 * and server. If 0, it will be fully disabled. If 1, the client will still
298 * pad to the server regardless of server support. */
300
301 /** Boolean: if true, then circuit padding will be negotiated by client
302 * and server, subject to consenus limits (default). If 0, it will be fully
303 * disabled. */
305
306 /** Boolean: if true, then this client will discard cached bridge
307 * descriptors on a setconf or other config change that impacts guards
308 * or bridges (see options_transition_affects_guards() for exactly which
309 * config changes trigger it). Useful for tools that test bridge
310 * reachability by fetching fresh descriptors. */
312
313 /** Boolean: if true, then this client will only use circuit padding
314 * algorithms that are known to use a low amount of overhead. If false,
315 * we will use all available circuit padding algorithms.
316 */
318
319 /** To what authority types do we publish our descriptor? Choices are
320 * "v1", "v2", "v3", "bridge", or "". */
322 /** A bitfield of authority types, derived from PublishServerDescriptor. */
324 /** Boolean: do we publish hidden service descriptors to the HS auths? */
326 int FetchServerDescriptors; /**< Do we fetch server descriptors as normal? */
327 int FetchHidServDescriptors; /**< and hidden service descriptors? */
328
329 int FetchUselessDescriptors; /**< Do we fetch non-running descriptors too? */
330 int AllDirActionsPrivate; /**< Should every directory action be sent
331 * through a Tor circuit? */
332
333 /** A routerset that should be used when picking middle nodes for HS
334 * circuits. */
335 struct routerset_t *HSLayer2Nodes;
336
337 /** A routerset that should be used when picking third-hop nodes for HS
338 * circuits. */
339 struct routerset_t *HSLayer3Nodes;
340
341 /** Onion Services in HiddenServiceSingleHopMode make one-hop (direct)
342 * circuits between the onion service server, and the introduction and
343 * rendezvous points. (Onion service descriptors are still posted using
344 * 3-hop paths, to avoid onion service directories blocking the service.)
345 * This option makes every hidden service instance hosted by
346 * this tor instance a Single Onion Service.
347 * HiddenServiceSingleHopMode requires HiddenServiceNonAnonymousMode to be
348 * set to 1.
349 * Use rend_service_allow_non_anonymous_connection() or
350 * rend_service_reveal_startup_time() instead of using this option directly.
351 */
353 /* Makes hidden service clients and servers non-anonymous on this tor
354 * instance. Allows the non-anonymous HiddenServiceSingleHopMode. Enables
355 * non-anonymous behaviour in the hidden service protocol.
356 * Use hs_service_non_anonymous_mode_enabled() instead of using this option
357 * directly.
358 */
359 int HiddenServiceNonAnonymousMode;
360
361 int ConnLimit; /**< Demanded minimum number of simultaneous connections. */
362 int ConnLimit_; /**< Maximum allowed number of simultaneous connections. */
363 int ConnLimit_high_thresh; /**< start trying to lower socket usage if we
364 * have this many. */
365 int ConnLimit_low_thresh; /**< try to get down to here after socket
366 * exhaustion. */
367 int RunAsDaemon; /**< If true, run in the background. (Unix only) */
368 int FascistFirewall; /**< Whether to prefer ORs reachable on open ports. */
369 struct smartlist_t *FirewallPorts; /**< Which ports our firewall allows
370 * (strings). */
371 /** IP:ports our firewall allows. */
373 struct config_line_t *ReachableORAddresses; /**< IP:ports for OR conns. */
374 struct config_line_t *ReachableDirAddresses; /**< IP:ports for Dir conns. */
375
376 int ConstrainedSockets; /**< Shrink xmit and recv socket buffers. */
377 uint64_t ConstrainedSockSize; /**< Size of constrained buffers. */
378
379 /** Whether we should drop exit streams from Tors that we don't know are
380 * relays. One of "0" (never refuse), "1" (always refuse), or "-1" (do
381 * what the consensus says, defaulting to 'refuse' if the consensus says
382 * nothing). */
384
385 /** Application ports that require all nodes in circ to have sufficient
386 * uptime. */
388 /** Application ports that are likely to be unencrypted and
389 * unauthenticated; we reject requests for them to prevent the
390 * user from screwing up and leaking plaintext secrets to an
391 * observer somewhere on the Internet. */
393 /** Related to RejectPlaintextPorts above, except this config option
394 * controls whether we warn (in the log and via a controller status
395 * event) every time a risky connection is attempted. */
397 /** Should we try to reuse the same exit node for a given host */
399 int TrackHostExitsExpire; /**< Number of seconds until we expire an
400 * addressmap */
401 struct config_line_t *AddressMap; /**< List of address map directives. */
402 int AutomapHostsOnResolve; /**< If true, when we get a resolve request for a
403 * hostname ending with one of the suffixes in
404 * <b>AutomapHostsSuffixes</b>, map it to a
405 * virtual address. */
406 /** List of suffixes for <b>AutomapHostsOnResolve</b>. The special value
407 * "." means "match everything." */
409 int KeepalivePeriod; /**< How often do we send padding cells to keep
410 * connections alive? */
411 int SocksTimeout; /**< How long do we let a socks connection wait
412 * unattached before we fail it? */
413 int LearnCircuitBuildTimeout; /**< If non-zero, we attempt to learn a value
414 * for CircuitBuildTimeout based on timeout
415 * history. Use circuit_build_times_disabled()
416 * rather than checking this value directly. */
417 int CircuitBuildTimeout; /**< Cull non-open circuits that were born at
418 * least this many seconds ago. Used until
419 * adaptive algorithm learns a new value. */
420 int CircuitsAvailableTimeout; /**< Try to have an open circuit for at
421 least this long after last activity */
422 int CircuitStreamTimeout; /**< If non-zero, detach streams from circuits
423 * and try a new circuit if the stream has been
424 * waiting for this many seconds. If zero, use
425 * our default internal timeout schedule. */
426 int MaxOnionQueueDelay; /*< DOCDOC */
427 int NewCircuitPeriod; /**< How long do we use a circuit before building
428 * a new one? */
429 int MaxCircuitDirtiness; /**< Never use circs that were first used more than
430 this interval ago. */
431 uint64_t BandwidthRate; /**< How much bandwidth, on average, are we willing
432 * to use in a second? */
433 uint64_t BandwidthBurst; /**< How much bandwidth, at maximum, are we willing
434 * to use in a second? */
435 uint64_t MaxAdvertisedBandwidth; /**< How much bandwidth are we willing to
436 * tell other nodes we have? */
437 uint64_t RelayBandwidthRate; /**< How much bandwidth, on average, are we
438 * willing to use for all relayed conns? */
439 uint64_t RelayBandwidthBurst; /**< How much bandwidth, at maximum, will we
440 * use in a second for all relayed conns? */
441 uint64_t PerConnBWRate; /**< Long-term bw on a single TLS conn, if set. */
442 uint64_t PerConnBWBurst; /**< Allowed burst on a single TLS conn, if set. */
443 int NumCPUs; /**< How many CPUs should we try to use? */
444 struct config_line_t *RendConfigLines; /**< List of configuration lines
445 * for rendezvous services. */
446 char *ClientOnionAuthDir; /**< Directory to keep client
447 * onion service authorization secret keys */
448 char *ContactInfo; /**< Contact info to be published in the directory. */
449
450 int HeartbeatPeriod; /**< Log heartbeat messages after this many seconds
451 * have passed. */
452 int MainloopStats; /**< Log main loop statistics as part of the
453 * heartbeat messages. */
454
455 char *HTTPProxy; /**< hostname[:port] to use as http proxy, if any. */
456 tor_addr_t HTTPProxyAddr; /**< Parsed IPv4 addr for http proxy, if any. */
457 uint16_t HTTPProxyPort; /**< Parsed port for http proxy, if any. */
458 char *HTTPProxyAuthenticator; /**< username:password string, if any. */
459
460 char *HTTPSProxy; /**< hostname[:port] to use as https proxy, if any. */
461 tor_addr_t HTTPSProxyAddr; /**< Parsed addr for https proxy, if any. */
462 uint16_t HTTPSProxyPort; /**< Parsed port for https proxy, if any. */
463 char *HTTPSProxyAuthenticator; /**< username:password string, if any. */
464
465 char *Socks4Proxy; /**< hostname:port to use as a SOCKS4 proxy, if any. */
466 tor_addr_t Socks4ProxyAddr; /**< Derived from Socks4Proxy. */
467 uint16_t Socks4ProxyPort; /**< Derived from Socks4Proxy. */
468
469 char *Socks5Proxy; /**< hostname:port to use as a SOCKS5 proxy, if any. */
470 tor_addr_t Socks5ProxyAddr; /**< Derived from Sock5Proxy. */
471 uint16_t Socks5ProxyPort; /**< Derived from Socks5Proxy. */
472 char *Socks5ProxyUsername; /**< Username for SOCKS5 authentication, if any */
473 char *Socks5ProxyPassword; /**< Password for SOCKS5 authentication, if any */
474
475 char *TCPProxy; /**< protocol and hostname:port to use as a proxy, if any. */
476 tcp_proxy_protocol_t TCPProxyProtocol; /**< Derived from TCPProxy. */
477 tor_addr_t TCPProxyAddr; /**< Derived from TCPProxy. */
478 uint16_t TCPProxyPort; /**< Derived from TCPProxy. */
479
480 /** List of configuration lines for replacement directory authorities.
481 * If you just want to replace one class of authority at a time,
482 * use the "Alternate*Authority" options below instead. */
484
485 /** List of fallback directory servers */
487 /** Whether to use the default hard-coded FallbackDirs */
489
490 /** Weight to apply to all directory authority rates if considering them
491 * along with fallbackdirs */
493
494 /** If set, use these main (currently v3) directory authorities and
495 * not the default ones. */
497
498 /** If set, use these bridge authorities and not the default one. */
500
501 struct config_line_t *MyFamily_lines; /**< Declared family for this OR. */
502 struct config_line_t *MyFamily; /**< Declared family for this OR,
503 normalized */
504 struct config_line_t *FamilyId_lines; /**< If set, IDs for family keys to use
505 * to certify this OR's membership. */
506 struct smartlist_t *FamilyIds; /**< FamilyIds, parsed and converted
507 * to a list of ed25519_public_key_t */
508 bool AllFamilyIdsExpected; /**< If true, we should accept all the
509 * FamilyIds in the FamilyKeyDirectory. */
510
511 struct config_line_t *NodeFamilies; /**< List of config lines for
512 * node families */
513 /** List of parsed NodeFamilies values. */
515 struct config_line_t *AuthDirBadExit; /**< Address policy for descriptors to
516 * mark as bad exits. */
517 /** Address policy for descriptors to mark as only suitable for the
518 * middle position in circuits. */
520 struct config_line_t *AuthDirReject; /**< Address policy for descriptors to
521 * reject. */
522 struct config_line_t *AuthDirInvalid; /**< Address policy for descriptors to
523 * never mark as valid. */
524 /** @name AuthDir...CC
525 *
526 * Lists of country codes to mark as BadExit, or Invalid, or to
527 * reject entirely.
528 *
529 * @{
530 */
531 struct smartlist_t *AuthDirBadExitCCs;
532 struct smartlist_t *AuthDirInvalidCCs;
533 struct smartlist_t *AuthDirMiddleOnlyCCs;
534 struct smartlist_t *AuthDirRejectCCs;
535 /**@}*/
536
537 char *AccountingStart; /**< How long is the accounting interval, and when
538 * does it start? */
539 uint64_t AccountingMax; /**< How many bytes do we allow per accounting
540 * interval before hibernation? 0 for "never
541 * hibernate." */
542 /** How do we determine when our AccountingMax has been reached?
543 * "max" for when in or out reaches AccountingMax
544 * "sum" for when in plus out reaches AccountingMax
545 * "in" for when in reaches AccountingMax
546 * "out" for when out reaches AccountingMax */
548 enum { ACCT_MAX, ACCT_SUM, ACCT_IN, ACCT_OUT } AccountingRule;
549
550 /** Base64-encoded hash of accepted passwords for the control system. */
552 /** As HashedControlPassword, but not saved. */
554
555 int CookieAuthentication; /**< Boolean: do we enable cookie-based auth for
556 * the control system? */
557 char *CookieAuthFile; /**< Filesystem location of a ControlPort
558 * authentication cookie. */
559 char *ExtORPortCookieAuthFile; /**< Filesystem location of Extended
560 * ORPort authentication cookie. */
561 int CookieAuthFileGroupReadable; /**< Boolean: Is the CookieAuthFile g+r? */
562 int ExtORPortCookieAuthFileGroupReadable; /**< Boolean: Is the
563 * ExtORPortCookieAuthFile g+r? */
564 int LeaveStreamsUnattached; /**< Boolean: Does Tor attach new streams to
565 * circuits itself (0), or does it expect a controller
566 * to cope? (1) */
567 int DisablePredictedCircuits; /**< Boolean: does Tor preemptively
568 * make circuits in the background (0),
569 * or not (1)? */
570
571 /** Process specifier for a controller that ‘owns’ this Tor
572 * instance. Tor will terminate if its owning controller does. */
574 /** FD specifier for a controller that owns this Tor instance. */
576
577 int ShutdownWaitLength; /**< When we get a SIGINT and we're a server, how
578 * long do we wait before exiting? */
579 char *SafeLogging; /**< Contains "relay", "1", "0" (meaning no scrubbing). */
580
581 /* Derived from SafeLogging */
582 enum {
583 SAFELOG_SCRUB_ALL, SAFELOG_SCRUB_RELAY, SAFELOG_SCRUB_NONE
584 } SafeLogging_;
585
586 int Sandbox; /**< Boolean: should sandboxing be enabled? */
587 int SafeSocks; /**< Boolean: should we outright refuse application
588 * connections that use socks4 or socks5-with-local-dns? */
589 int ProtocolWarnings; /**< Boolean: when other parties screw up the Tor
590 * protocol, is it a warn or an info in our logs? */
591 int TestSocks; /**< Boolean: when we get a socks connection, do we loudly
592 * log whether it was DNS-leaking or not? */
593 /** Token Bucket Refill resolution in milliseconds. */
595
596 /** Boolean: Do we try to enter from a smallish number
597 * of fixed nodes? */
599 /** Internal variable to remember whether we're actually acting on
600 * UseEntryGuards_option -- when we're a non-anonymous Single Onion Service,
601 * it is always false, otherwise we use the value of UseEntryGuards_option.
602 * */
604
605 int NumEntryGuards; /**< How many entry guards do we try to establish? */
606
607 /** If 1, we use any guardfraction information we see in the
608 * consensus. If 0, we don't. If -1, let the consensus parameter
609 * decide. */
611
612 int NumDirectoryGuards; /**< How many dir guards do we try to establish?
613 * If 0, use value from NumEntryGuards. */
614 int NumPrimaryGuards; /**< How many primary guards do we want? */
615
616 /** Boolean: Switch to toggle the vanguards-lite subsystem */
618
619 /** Boolean: Switch to override consensus to enable congestion control */
621
622 /** Boolean: Switch to specify this is an sbws measurement exit */
624
625 int RephistTrackTime; /**< How many seconds do we keep rephist info? */
626 /** Should we always fetch our dir info on the mirror schedule (which
627 * means directly from the authorities) no matter our other config? */
629
630 /** Should we fetch our dir info at the start of the consensus period? */
632
633 int DirCache; /**< Cache all directory documents and accept requests via
634 * tunnelled dir conns from clients. If 1, enabled (default);
635 * If 0, disabled. Use dir_server_mode() rather than
636 * referencing this option directly. (Except for routermode
637 * and relay_config, which do direct checks.) */
638
639 char *VirtualAddrNetworkIPv4; /**< Address and mask to hand out for virtual
640 * MAPADDRESS requests for IPv4 addresses */
641 char *VirtualAddrNetworkIPv6; /**< Address and mask to hand out for virtual
642 * MAPADDRESS requests for IPv6 addresses */
643 int ServerDNSSearchDomains; /**< Boolean: If set, we don't force exit
644 * addresses to be FQDNs, but rather search for them in
645 * the local domains. */
646 int ServerDNSDetectHijacking; /**< Boolean: If true, check for DNS failure
647 * hijacking. */
648 int ServerDNSRandomizeCase; /**< Boolean: Use the 0x20-hack to prevent
649 * DNS poisoning attacks. */
650 char *ServerDNSResolvConfFile; /**< If provided, we configure our internal
651 * resolver from the file here rather than from
652 * /etc/resolv.conf (Unix) or the registry (Windows). */
653 char *DirPortFrontPage; /**< This is a full path to a file with an html
654 disclaimer. This allows a server administrator to show
655 that they're running Tor and anyone visiting their server
656 will know this without any specialized knowledge. */
657 int DisableDebuggerAttachment; /**< Currently Linux only specific attempt to
658 disable ptrace; needs BSD testing. */
659 /** Boolean: if set, we start even if our resolv.conf file is missing
660 * or broken. */
662 /** Boolean: if set, then even connections to private addresses will get
663 * rate-limited. */
665 /** A list of addresses that definitely should be resolvable. Used for
666 * testing our DNS server. */
668 int EnforceDistinctSubnets; /**< If true, don't allow multiple routers in the
669 * same network zone in the same circuit. */
670 int AllowNonRFC953Hostnames; /**< If true, we allow connections to hostnames
671 * with weird characters. */
672 /** If true, we try resolving hostnames with weird characters. */
674
675 /** If true, we try to download extra-info documents (and we serve them,
676 * if we are a cache). For authorities, this is always true. */
678
679 /** If true, we're configured to collect statistics on clients
680 * requesting network statuses from us as directory. */
682 /** Internal variable to remember whether we're actually acting on
683 * DirReqStatistics_option -- yes if it's set and we're a server, else no. */
685
686 /** If true, the user wants us to collect statistics on port usage. */
688
689 /** If true, the user wants us to collect connection statistics. */
691
692 /** If true, the user wants us to collect cell statistics. */
694
695 /** If true, the user wants us to collect padding statistics. */
697
698 /** If true, the user wants us to collect statistics as entry node. */
700
701 /** If true, the user wants us to collect statistics as hidden service
702 * directory, introduction point, or rendezvous point. */
704 /** Internal variable to remember whether we're actually acting on
705 * HiddenServiceStatistics_option -- yes if it's set and we're a server,
706 * else no. */
708
709 /** If true, include statistics file contents in extra-info documents. */
711
712 /** If true, include overload statistics in extra-info documents. */
714
715 /** If true, do not believe anybody who tells us that a domain resolves
716 * to an internal address, or that an internal address has a PTR mapping.
717 * Helps avoid some cross-site attacks. */
719
720 /** If true, do not accept any requests to connect to internal addresses
721 * over randomly chosen exits. */
723
724 /** If true, clients may connect over IPv4. If false, they will avoid
725 * connecting over IPv4. We enforce this for OR and Dir connections. */
727 /** If true, clients may connect over IPv6. If false, they will avoid
728 * connecting over IPv4. We enforce this for OR and Dir connections.
729 * Use reachable_addr_use_ipv6() instead of accessing this value
730 * directly. */
732 /** If true, prefer an IPv6 OR port over an IPv4 one for entry node
733 * connections. If auto, bridge clients prefer IPv6, and other clients
734 * prefer IPv4. Use node_ipv6_or_preferred() instead of accessing this value
735 * directly. */
737 /** If true, prefer an IPv6 directory port over an IPv4 one for direct
738 * directory connections. If auto, bridge clients prefer IPv6, and other
739 * clients prefer IPv4. Use reachable_addr_prefer_ipv6_dirport() instead of
740 * accessing this value directly. */
742
743 /** If true, always use the compiled hash implementation. If false, always
744 * the interpreter. Default of "auto" allows a dynamic fallback from
745 * copmiler to interpreter. */
747
748 /** If true, the tor client will use conflux for its general purpose
749 * circuits which excludes onion service traffic. */
751
752 /** Has the UX integer value that the client will request from the exit. */
754 int ConfluxClientUX;
755
756 /** The length of time that we think a consensus should be fresh. */
758 /** The length of time we think it will take to distribute votes. */
760 /** The length of time we think it will take to distribute signatures. */
762 /** The number of intervals we think a consensus should be valid. */
764
765 /** Should advertise and sign consensuses with a legacy key, for key
766 * migration purposes? */
768
769 /** Location of bandwidth measurement file */
771
772 /** Location of guardfraction file */
774
775 /** The length of time that we think an initial consensus should be fresh.
776 * Only altered on testing networks. */
778
779 /** The length of time we think it will take to distribute initial votes.
780 * Only altered on testing networks. */
782
783 /** The length of time we think it will take to distribute initial
784 * signatures. Only altered on testing networks.*/
786
787 /** Offset in seconds added to the starting time for consensus
788 voting. Only altered on testing networks. */
790
791 /** Schedule for when servers should download things in general. Only
792 * altered on testing networks. */
794
795 /** Schedule for when clients should download things in general. Only
796 * altered on testing networks. */
798
799 /** Schedule for when servers should download consensuses. Only altered
800 * on testing networks. */
802
803 /** Schedule for when clients should download consensuses. Only altered
804 * on testing networks. */
806
807 /** Schedule for when clients should download consensuses from authorities
808 * if they are bootstrapping (that is, they don't have a usable, reasonably
809 * live consensus). Only used by clients fetching from a list of fallback
810 * directory mirrors.
811 *
812 * This schedule is incremented by (potentially concurrent) connection
813 * attempts, unlike other schedules, which are incremented by connection
814 * failures. Only altered on testing networks. */
816
817 /** Schedule for when clients should download consensuses from fallback
818 * directory mirrors if they are bootstrapping (that is, they don't have a
819 * usable, reasonably live consensus). Only used by clients fetching from a
820 * list of fallback directory mirrors.
821 *
822 * This schedule is incremented by (potentially concurrent) connection
823 * attempts, unlike other schedules, which are incremented by connection
824 * failures. Only altered on testing networks. */
826
827 /** Schedule for when clients should download consensuses from authorities
828 * if they are bootstrapping (that is, they don't have a usable, reasonably
829 * live consensus). Only used by clients which don't have or won't fetch
830 * from a list of fallback directory mirrors.
831 *
832 * This schedule is incremented by (potentially concurrent) connection
833 * attempts, unlike other schedules, which are incremented by connection
834 * failures. Only altered on testing networks. */
836
837 /** Schedule for when clients should download bridge descriptors. Only
838 * altered on testing networks. */
840
841 /** Schedule for when clients should download bridge descriptors when they
842 * have no running bridges. Only altered on testing networks. */
844
845 /** When directory clients have only a few descriptors to request, they
846 * batch them until they have more, or until this amount of time has
847 * passed. Only altered on testing networks. */
849
850 /** How long do we let a directory connection stall before expiring
851 * it? Only altered on testing networks. */
853
854 /** How many simultaneous in-progress connections will we make when trying
855 * to fetch a consensus before we wait for one to complete, timeout, or
856 * error out? Only altered on testing networks. */
858
859 /** If true, we take part in a testing network. Change the defaults of a
860 * couple of other configuration options and allow to change the values
861 * of certain configuration options. */
863
864 /** Enable CONN_BW events. Only altered on testing networks. */
866
867 /** Enable CELL_STATS events. Only altered on testing networks. */
869
870 /** If true, and we have GeoIP data, and we're a bridge, keep a per-country
871 * count of how many client addresses have contacted us so that we can help
872 * the bridge authority guess which countries have blocked access to us. */
874
875 /** Optionally, IPv4 and IPv6 GeoIP data. */
877 char *GeoIPv6File;
878
879 /** Autobool: if auto, then any attempt to Exclude{Exit,}Nodes a particular
880 * country code will exclude all nodes in ?? and A1. If true, all nodes in
881 * ?? and A1 are excluded. Has no effect if we don't know any GeoIP data. */
883
884 /** If true, SIGHUP should reload the torrc. Sometimes controllers want
885 * to make this false. */
887
888 /** The main parameter for picking circuits within a connection.
889 *
890 * If this value is positive, when picking a cell to relay on a connection,
891 * we always relay from the circuit whose weighted cell count is lowest.
892 * Cells are weighted exponentially such that if one cell is sent
893 * 'CircuitPriorityHalflife' seconds before another, it counts for half as
894 * much.
895 *
896 * If this value is zero, we're disabling the cell-EWMA algorithm.
897 *
898 * If this value is negative, we're using the default approach
899 * according to either Tor or a parameter set in the consensus.
900 */
902
903 /** Set to true if the TestingTorNetwork configuration option is set.
904 * This is used so that options_validate() has a chance to realize that
905 * the defaults have changed. */
907
908 /** If 1, we try to use microdescriptors to build circuits. If 0, we don't.
909 * If -1, Tor decides. */
911
912 /** File where we should write the ControlPort. */
914 /** Should that file be group-readable? */
916
917#define MAX_MAX_CLIENT_CIRCUITS_PENDING 1024
918 /** Maximum number of non-open general-purpose origin circuits to allow at
919 * once. */
921
922 /** If 1, we accept and launch no external network connections, except on
923 * control ports. */
925
926 /**
927 * Parameters for path-bias detection.
928 * @{
929 * These options override the default behavior of Tor's (**currently
930 * experimental**) path bias detection algorithm. To try to find broken or
931 * misbehaving guard nodes, Tor looks for nodes where more than a certain
932 * fraction of circuits through that guard fail to get built.
933 *
934 * The PathBiasCircThreshold option controls how many circuits we need to
935 * build through a guard before we make these checks. The
936 * PathBiasNoticeRate, PathBiasWarnRate and PathBiasExtremeRate options
937 * control what fraction of circuits must succeed through a guard so we
938 * won't write log messages. If less than PathBiasExtremeRate circuits
939 * succeed *and* PathBiasDropGuards is set to 1, we disable use of that
940 * guard.
941 *
942 * When we have seen more than PathBiasScaleThreshold circuits through a
943 * guard, we scale our observations by 0.5 (governed by the consensus) so
944 * that new observations don't get swamped by old ones.
945 *
946 * By default, or if a negative value is provided for one of these options,
947 * Tor uses reasonable defaults from the networkstatus consensus document.
948 * If no defaults are available there, these options default to 150, .70,
949 * .50, .30, 0, and 300 respectively.
950 */
952 double PathBiasNoticeRate;
953 double PathBiasWarnRate;
954 double PathBiasExtremeRate;
955 int PathBiasDropGuards;
956 int PathBiasScaleThreshold;
957 /** @} */
958
959 /**
960 * Parameters for path-bias use detection
961 * @{
962 * Similar to the above options, these options override the default behavior
963 * of Tor's (**currently experimental**) path use bias detection algorithm.
964 *
965 * Where as the path bias parameters govern thresholds for successfully
966 * building circuits, these four path use bias parameters govern thresholds
967 * only for circuit usage. Circuits which receive no stream usage are not
968 * counted by this detection algorithm. A used circuit is considered
969 * successful if it is capable of carrying streams or otherwise receiving
970 * well-formed responses to RELAY cells.
971 *
972 * By default, or if a negative value is provided for one of these options,
973 * Tor uses reasonable defaults from the networkstatus consensus document.
974 * If no defaults are available there, these options default to 20, .80,
975 * .60, and 100, respectively.
976 */
978 double PathBiasNoticeUseRate;
979 double PathBiasExtremeUseRate;
980 int PathBiasScaleUseThreshold;
981 /** @} */
982
983 int IPv6Exit; /**< Do we support exiting to IPv6 addresses? */
984
985 /** Fraction: */
987
988 /** What expiry time shall we place on our SSL certs? "0" means we
989 * should guess a suitable value. */
991
992 /** How long (seconds) do we keep a guard before picking a new one? */
994
995 /** Is this an exit node? This is a tristate, where "1" means "yes, and use
996 * the default exit policy if none is given" and "0" means "no; exit policy
997 * is 'reject *'" and "auto" (-1) means "same as 1, but warn the user."
998 *
999 * XXXX Eventually, the default will be 0. */
1001
1002 /** For how long (seconds) do we declare our signing keys to be valid? */
1004 /** For how long (seconds) do we declare our link keys to be valid? */
1006 /** For how long (seconds) do we declare our auth keys to be valid? */
1008
1009 /** How long before signing keys expire will we try to make a new one? */
1011 /** How long before link keys expire will we try to make a new one? */
1013 /** How long before auth keys expire will we try to make a new one? */
1015
1016 /** Force use of offline master key features: never generate a master
1017 * ed25519 identity key except from tor --keygen */
1019
1020 key_expiration_format_t key_expiration_format;
1021
1022 enum {
1023 FORCE_PASSPHRASE_AUTO=0,
1024 FORCE_PASSPHRASE_ON,
1025 FORCE_PASSPHRASE_OFF
1026 } keygen_force_passphrase;
1027 int use_keygen_passphrase_fd;
1028 int keygen_passphrase_fd;
1029 int change_key_passphrase;
1030 char *master_key_fname;
1031
1032 /** Autobool: Do we try to retain capabilities if we can? */
1034
1035 /** Maximum total size of unparseable descriptors to log during the
1036 * lifetime of this Tor process.
1037 */
1039
1040 /** If 1, we skip all OOS checks. */
1042
1043 /** Autobool: Should we include Ed25519 identities in extend2 cells?
1044 * If -1, we should do whatever the consensus parameter says. */
1046
1047 /** Bool (default: 0): Tells if a %include was used on torrc */
1049
1050 /** The seconds after expiration which we as a relay should keep old
1051 * consensuses around so that we can generate diffs from them. If 0,
1052 * use the default. */
1054
1055 /** Bool (default: 0). Tells Tor to never try to exec another program.
1056 */
1058
1059 /** Have the KIST scheduler run every X milliseconds. If less than zero, do
1060 * not use the KIST scheduler but use the old vanilla scheduler instead. If
1061 * zero, do what the consensus says and fall back to using KIST as if this is
1062 * set to "10 msec" if the consensus doesn't say anything. */
1064
1065 /** A multiplier for the KIST per-socket limit calculation. */
1067
1068 /** The list of scheduler type string ordered by priority that is first one
1069 * has to be tried first. Default: KIST,KISTLite,Vanilla */
1071 /** An ordered list of scheduler_types mapped from Schedulers. */
1073
1074 /** List of files that were opened by %include in torrc and torrc-defaults */
1076
1077 /** If true, Tor shouldn't install any posix signal handlers, since it is
1078 * running embedded inside another process.
1079 */
1081
1082 /** Interval: how long without activity does it take for a client
1083 * to become dormant?
1084 **/
1086
1087 /**
1088 * Boolean: If enabled, then we consider the timeout when deciding whether
1089 * to be dormant. If not enabled, then only the SIGNAL ACTIVE/DORMANT
1090 * controls can change our status.
1091 **/
1093
1094 /** Boolean: true if having an idle stream is sufficient to prevent a client
1095 * from becoming dormant.
1096 **/
1098
1099 /** Boolean: true if Tor should be dormant the first time it starts with
1100 * a datadirectory; false otherwise. */
1102 /**
1103 * Boolean: true if Tor should treat every startup event as cancelling
1104 * a possible previous dormant state.
1105 **/
1107
1108 /** List of policy allowed to query the Metrics port. */
1110
1111 /** How far must we be into the current bandwidth-measurement period to
1112 * report bandwidth observations from this period? */
1114
1115 /**
1116 * Configuration objects for individual modules.
1117 *
1118 * Never access this field or its members directly: instead, use the module
1119 * in question to get its relevant configuration object.
1120 */
1122};
1123
1124#endif /* !defined(TOR_OR_OPTIONS_ST_H) */
Headers for address.h.
Master header file for Tor-specific functionality.
dirinfo_type_t
Definition or.h:886
tcp_proxy_protocol_t
@ TCP_PROXY_PROTOCOL_HAPROXY
outbound_addr_t
@ OUTBOUND_ADDR_OR
@ OUTBOUND_ADDR_EXIT
@ OUTBOUND_ADDR_ANY
@ OUTBOUND_ADDR_MAX
@ OUTBOUND_ADDR_PT
key_expiration_format_t
int TestingV3AuthInitialDistDelay
char * ExtORPortCookieAuthFile
struct smartlist_t * PublishServerDescriptor
struct config_line_t * ControlPort_lines
tor_addr_t Socks4ProxyAddr
int TestingClientDownloadInitialDelay
tor_addr_t HTTPProxyAddr
uint64_t MaxMemInQueues
int ClientBootstrapConsensusFallbackDownloadInitialDelay
int ReducedConnectionPadding
int AlwaysCongestionControl
dirinfo_type_t PublishServerDescriptor_
struct config_line_t * MyFamily
struct config_line_t * NATDPort_lines
int DirReqStatistics_option
struct config_line_t * AuthDirInvalid
char * ClientOnionAuthDir
uint64_t RelayBandwidthBurst
int ClientPreferIPv6DirPort
char * CacheDirectory
struct config_line_t * AlternateBridgeAuthority
tor_addr_t HTTPSProxyAddr
char * SyslogIdentityTag
uint16_t Socks4ProxyPort
int ConnLimit_high_thresh
int ClientBootstrapConsensusAuthorityOnlyDownloadInitialDelay
char * KeyDirectory
struct routerset_t * ExcludeExitNodes
int TestingBridgeBootstrapDownloadInitialDelay
int TestingEnableConnBwEvent
struct config_line_t * OutboundBindAddressExit
struct config_line_t * AuthDirReject
struct config_line_t * DNSPort_lines
int FetchServerDescriptors
char * BridgePassword_AuthDigest_
char * BridgePassword
struct config_line_t * ServerTransportOptions
int ExtORPortCookieAuthFileGroupReadable
char * FamilyKeyDirectory_option
uint64_t MaxMemInQueues_low_threshold
char * command_arg
struct smartlist_t * RejectPlaintextPorts
char * ServerDNSResolvConfFile
int V3AuthNIntervalsValid
char * FamilyKeyDirectory
tor_addr_t TCPProxyAddr
struct config_line_t * Logs
int ExitPolicyRejectPrivate
struct config_line_t * ORPort_lines
struct routerset_t * ExcludeExitNodesUnion_
int TestingDirConnectionMaxStall
struct config_line_t * ServerTransportListenAddr
int ClientBootstrapConsensusMaxInProgressTries
char * BridgeDistribution
struct smartlist_t * ServerDNSTestAddresses
int TestingMinTimeToReportBandwidth
char * CookieAuthFile
struct smartlist_t * WarnPlaintextPorts
struct smartlist_t * TrackHostExits
int MaxConsensusAgeForDiffs
struct smartlist_t * FirewallPorts
int TestingClientMaxIntervalWithoutRequest
struct smartlist_t * Schedulers
tcp_proxy_protocol_t TCPProxyProtocol
int FetchDirInfoExtraEarly
uint64_t MaxUnparseableDescSizeToLog
struct config_line_t * ExtORPort_lines
struct config_line_t * ClientTransportPlugin
struct config_line_t * OutboundBindAddressPT
int AllowNonRFC953Hostnames
struct smartlist_t * SchedulerTypes_
char * TransProxyType
uint64_t BandwidthRate
struct config_line_t * DirAuthorities
int FetchHidServDescriptors
struct config_line_t * Bridges
int ServerDNSSearchDomains
int ControlSocketsGroupWritable
int LeaveStreamsUnattached
uint64_t OwningControllerFD
double KISTSockBufSizeFactor
struct config_line_t * AuthDirMiddleOnly
struct config_line_t * MetricsPort_lines
struct config_line_t * ControlSocket
int ServerDNSAllowBrokenConfig
int ClientBootstrapConsensusAuthorityDownloadInitialDelay
int TestingClientConsensusDownloadInitialDelay
uint64_t AccountingMax
struct config_line_t * OutboundBindAddress
int UpdateBridgesFromAuthority
int ClientRejectInternalAddresses
int UseDefaultFallbackDirs
char * DebugLogFile
struct config_suite_t * subconfigs_
struct config_line_t * AlternateDirAuthority
int DataDirectoryGroupReadable
int CacheDirectoryGroupReadable
struct config_line_t * MyFamily_lines
int KeyDirectoryGroupReadable
char * KeyDirectory_option
struct smartlist_t * NodeFamilySets
uint64_t ConstrainedSockSize
struct config_line_t * AddressMap
int EnforceDistinctSubnets
struct smartlist_t * FilesOpenedByIncludes
int HiddenServiceStatistics_option
uint64_t PerConnBWBurst
char * GuardfractionFile
char * HTTPProxyAuthenticator
int DormantTimeoutDisabledByIdleStreams
struct config_line_t * HashedControlPassword
int TokenBucketRefillInterval
int TestingServerConsensusDownloadInitialDelay
int LearnCircuitBuildTimeout
struct config_line_t * FallbackDir
char * V3BandwidthsFile
bool AllFamilyIdsExpected
struct routerset_t * EntryNodes
int HiddenServiceStatistics
int TestingServerDownloadInitialDelay
struct config_line_t * ServerTransportPlugin
int TestingLinkCertLifetime
int UsingTestNetworkDefaults_
int UnixSocksGroupWritable
uint64_t MaxHSDirCacheBytes
int ServerDNSRandomizeCase
struct config_line_t * NodeFamilies
int ServerDNSDetectHijacking
char * ControlPortWriteToFile
int FetchUselessDescriptors
struct config_line_t * MetricsPortPolicy
int ClientPreferIPv6ORPort
char * VirtualAddrNetworkIPv6
struct config_line_t * FamilyId_lines
int TestingV3AuthInitialVotingInterval
struct routerset_t * ExcludeNodes
struct config_line_t * SocksPolicy
char * OwningControllerProcess
struct config_line_t * ReachableORAddresses
char * Socks5ProxyUsername
double CircuitPriorityHalflife
struct config_line_t * HashedControlSessionPassword
char * Socks5ProxyPassword
int CookieAuthFileGroupReadable
int ServerDNSAllowNonRFC953Hostnames
int CountPrivateBandwidth
int TestingEnableCellStatsEvent
struct routerset_t * ExitNodes
int TestingBridgeDownloadInitialDelay
tor_addr_t Socks5ProxyAddr
struct config_line_t * ReachableDirAddresses
uint64_t RelayBandwidthRate
int MaxClientCircuitsPending
tor_addr_t OutboundBindAddresses[OUTBOUND_ADDR_MAX][2]
int PublishHidServDescriptors
struct routerset_t * HSLayer2Nodes
int ExitPolicyRejectLocalInterfaces
int BridgeRecordUsageByCountry
int ControlPortFileGroupReadable
int DisablePredictedCircuits
struct config_line_t * DirPolicy
char * DirPortFrontPage
char * CacheDirectory_option
uint16_t TCPProxyPort
int DirAllowPrivateAddresses
struct config_line_t * ExitPolicy
struct config_line_t * OutboundBindAddressOR
int TestingV3AuthInitialVoteDelay
int ReconfigDropsBridgeDescs
int CircuitsAvailableTimeout
struct config_line_t * Address
uint16_t Socks5ProxyPort
uint64_t MaxAdvertisedBandwidth
int ReducedCircuitPadding
enum or_options_t::@2 TransProxyType_parsed
struct smartlist_t * AutomapHostsSuffixes
int ConnDirectionStatistics
char * VirtualAddrNetworkIPv4
int AutomapHostsOnResolve
char * HTTPSProxyAuthenticator
tor_cmdline_mode_t command
int DisableDebuggerAttachment
uint16_t HTTPProxyPort
char * AccountingRule_option
struct smartlist_t * FamilyIds
struct config_line_t * TransPort_lines
char * DataDirectory
struct smartlist_t * LongLivedPorts
struct config_line_t * RendConfigLines
int CompiledProofOfWorkHash
struct config_line_t * ReachableAddresses
uint64_t PerConnBWRate
char * ConfluxClientUX_option
int HiddenServiceSingleHopMode
int BridgeAuthoritativeDir
int DormantCanceledByStartup
char * AccountingStart
double PathsNeededToBuildCircuits
int UseEntryGuards_option
int ExtendAllowPrivateAddresses
struct config_line_t * HTTPTunnelPort_lines
int PathBiasCircThreshold
char * DataDirectory_option
struct config_line_t * DirPort_lines
int ClientDNSRejectInternalAddresses
struct routerset_t * MiddleNodes
struct config_line_t * SocksPort_lines
double DirAuthorityFallbackRate
int TestingV3AuthVotingStartOffset
uint16_t HTTPSProxyPort
uint64_t BandwidthBurst
struct routerset_t * HSLayer3Nodes
struct config_line_t * AuthDirBadExit
Declare the tor_cmdline_mode_t enumeration.
tor_cmdline_mode_t
Integer definitions used throughout Tor.