97#define SIGCLEARDNSCACHE 130
98#define SIGHEARTBEAT 131
100#define SIGDORMANT 133
102#if (SIZEOF_CELL_T != 0)
105#define cell_t tor_cell_t
109#define DOWNCAST(to, ptr) ((to*)SUBTYPE_P(ptr, to, base_))
112#define MAX_NICKNAME_LEN 19
115#define MAX_HEX_NICKNAME_LEN (HEX_DIGEST_LEN+1)
118#define MAX_VERBOSE_NICKNAME_LEN (1+HEX_DIGEST_LEN+1+MAX_NICKNAME_LEN)
122#define MAX_HEADERS_SIZE 50000
127#define MAX_DESCRIPTOR_UPLOAD_SIZE 20000
130#define MAX_EXTRAINFO_UPLOAD_SIZE 50000
133#define MIN_ONION_KEY_LIFETIME_DAYS (1)
136#define MAX_ONION_KEY_LIFETIME_DAYS (90)
139#define DEFAULT_ONION_KEY_LIFETIME_DAYS (28)
144#define MIN_ONION_KEY_GRACE_PERIOD_DAYS (1)
147#define DEFAULT_ONION_KEY_GRACE_PERIOD_DAYS (7)
151#define ONION_KEY_CONSENSUS_CHECK_INTERVAL (60*60)
154#define MAX_SSL_KEY_LIFETIME_INTERNAL (2*60*60)
158#define ROUTER_MAX_AGE (60*60*48)
161#define ROUTER_MAX_AGE_TO_PUBLISH (60*60*24)
163#define OLD_ROUTER_DESC_MAX_AGE (60*60*24*5)
167#define PROXY_CONNECT 1
168#define PROXY_SOCKS4 2
169#define PROXY_SOCKS5 3
170#define PROXY_HAPROXY 4
176#define PROXY_PLUGGABLE 5
180#define MIN_CIRCUITS_HANDLING_STREAM 2
184#define RELAY_COMMAND_BEGIN 1
185#define RELAY_COMMAND_DATA 2
186#define RELAY_COMMAND_END 3
187#define RELAY_COMMAND_CONNECTED 4
189#define RELAY_COMMAND_SENDME 5
190#define RELAY_COMMAND_EXTEND 6
191#define RELAY_COMMAND_EXTENDED 7
192#define RELAY_COMMAND_TRUNCATE 8
193#define RELAY_COMMAND_TRUNCATED 9
194#define RELAY_COMMAND_DROP 10
196#define RELAY_COMMAND_RESOLVE 11
197#define RELAY_COMMAND_RESOLVED 12
199#define RELAY_COMMAND_BEGIN_DIR 13
200#define RELAY_COMMAND_EXTEND2 14
201#define RELAY_COMMAND_EXTENDED2 15
204#define RELAY_COMMAND_CONFLUX_LINK 19
205#define RELAY_COMMAND_CONFLUX_LINKED 20
206#define RELAY_COMMAND_CONFLUX_LINKED_ACK 21
207#define RELAY_COMMAND_CONFLUX_SWITCH 22
209#define RELAY_COMMAND_ESTABLISH_INTRO 32
210#define RELAY_COMMAND_ESTABLISH_RENDEZVOUS 33
211#define RELAY_COMMAND_INTRODUCE1 34
212#define RELAY_COMMAND_INTRODUCE2 35
213#define RELAY_COMMAND_RENDEZVOUS1 36
214#define RELAY_COMMAND_RENDEZVOUS2 37
215#define RELAY_COMMAND_INTRO_ESTABLISHED 38
216#define RELAY_COMMAND_RENDEZVOUS_ESTABLISHED 39
217#define RELAY_COMMAND_INTRODUCE_ACK 40
219#define RELAY_COMMAND_PADDING_NEGOTIATE 41
220#define RELAY_COMMAND_PADDING_NEGOTIATED 42
222#define RELAY_COMMAND_XOFF 43
223#define RELAY_COMMAND_XON 44
226#define END_OR_CONN_REASON_DONE 1
227#define END_OR_CONN_REASON_REFUSED 2
228#define END_OR_CONN_REASON_OR_IDENTITY 3
229#define END_OR_CONN_REASON_CONNRESET 4
230#define END_OR_CONN_REASON_TIMEOUT 5
231#define END_OR_CONN_REASON_NO_ROUTE 6
232#define END_OR_CONN_REASON_IO_ERROR 7
233#define END_OR_CONN_REASON_RESOURCE_LIMIT 8
234#define END_OR_CONN_REASON_PT_MISSING 9
235#define END_OR_CONN_REASON_TLS_ERROR 10
236#define END_OR_CONN_REASON_MISC 11
240#define END_STREAM_REASON_MISC 1
241#define END_STREAM_REASON_RESOLVEFAILED 2
242#define END_STREAM_REASON_CONNECTREFUSED 3
243#define END_STREAM_REASON_EXITPOLICY 4
244#define END_STREAM_REASON_DESTROY 5
245#define END_STREAM_REASON_DONE 6
246#define END_STREAM_REASON_TIMEOUT 7
247#define END_STREAM_REASON_NOROUTE 8
248#define END_STREAM_REASON_HIBERNATING 9
249#define END_STREAM_REASON_INTERNAL 10
250#define END_STREAM_REASON_RESOURCELIMIT 11
251#define END_STREAM_REASON_CONNRESET 12
252#define END_STREAM_REASON_TORPROTOCOL 13
253#define END_STREAM_REASON_NOTDIRECTORY 14
254#define END_STREAM_REASON_ENTRYPOLICY 15
263#define END_STREAM_REASON_CANT_ATTACH 257
266#define END_STREAM_REASON_NET_UNREACHABLE 258
269#define END_STREAM_REASON_SOCKSPROTOCOL 259
272#define END_STREAM_REASON_CANT_FETCH_ORIG_DEST 260
275#define END_STREAM_REASON_INVALID_NATD_DEST 261
278#define END_STREAM_REASON_PRIVATE_ADDR 262
282#define END_STREAM_REASON_HTTPPROTOCOL 263
285#define END_STREAM_REASON_MASK 511
289#define END_STREAM_REASON_FLAG_REMOTE 512
292#define END_STREAM_REASON_FLAG_ALREADY_SENT_CLOSED 1024
296#define END_STREAM_REASON_FLAG_ALREADY_SOCKS_REPLIED 2048
299#define RESOLVED_TYPE_HOSTNAME 0
300#define RESOLVED_TYPE_IPV4 4
301#define RESOLVED_TYPE_IPV6 6
302#define RESOLVED_TYPE_ERROR_TRANSIENT 0xF0
303#define RESOLVED_TYPE_ERROR 0xF1
309#define END_CIRC_REASON_IP_NOW_REDUNDANT -4
313#define END_CIRC_REASON_MEASUREMENT_EXPIRED -3
316#define END_CIRC_REASON_NOPATH -2
318#define END_CIRC_AT_ORIGIN -1
322#define END_CIRC_REASON_MIN_ 0
323#define END_CIRC_REASON_NONE 0
324#define END_CIRC_REASON_TORPROTOCOL 1
325#define END_CIRC_REASON_INTERNAL 2
326#define END_CIRC_REASON_REQUESTED 3
327#define END_CIRC_REASON_HIBERNATING 4
328#define END_CIRC_REASON_RESOURCELIMIT 5
329#define END_CIRC_REASON_CONNECTFAILED 6
330#define END_CIRC_REASON_OR_IDENTITY 7
331#define END_CIRC_REASON_CHANNEL_CLOSED 8
332#define END_CIRC_REASON_FINISHED 9
333#define END_CIRC_REASON_TIMEOUT 10
334#define END_CIRC_REASON_DESTROYED 11
335#define END_CIRC_REASON_NOSUCHSERVICE 12
336#define END_CIRC_REASON_MAX_ 12
341#define END_CIRC_REASON_FLAG_REMOTE 512
346#define REND_DESC_ID_V2_LEN_BASE32 BASE32_DIGEST_LEN
349#define REND_CLIENTNAME_MAX_LEN 16
353#define REND_COOKIE_LEN DIGEST_LEN
372#define REND_REPLAY_TIME_INTERVAL (5 * 60)
394#define CIRCWINDOW_START 1000
395#define CIRCWINDOW_START_MIN 100
396#define CIRCWINDOW_START_MAX 1000
398#define CIRCWINDOW_INCREMENT 100
401#define STREAMWINDOW_START 500
402#define STREAMWINDOW_START_MAX 500
404#define STREAMWINDOW_INCREMENT 50
413#define ORCIRC_MAX_MIDDLE_CELLS (CIRCWINDOW_START_MAX*2)
417#define ORCIRC_MAX_MIDDLE_KILL_THRESH (1.1f)
420#define CELL_PADDING 0
422#define CELL_CREATED 2
424#define CELL_DESTROY 4
425#define CELL_CREATE_FAST 5
426#define CELL_CREATED_FAST 6
427#define CELL_VERSIONS 7
428#define CELL_NETINFO 8
429#define CELL_RELAY_EARLY 9
430#define CELL_CREATE2 10
431#define CELL_CREATED2 11
432#define CELL_PADDING_NEGOTIATE 12
434#define CELL_VPADDING 128
435#define CELL_CERTS 129
436#define CELL_AUTH_CHALLENGE 130
437#define CELL_AUTHENTICATE 131
438#define CELL_AUTHORIZE 132
439#define CELL_COMMAND_MAX_ 132
442#define TIMEOUT_UNTIL_UNREACHABILITY_COMPLAINT (20*60)
445#define LEGAL_NICKNAME_CHARACTERS \
446 "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
449#define UNNAMED_ROUTER_NICKNAME "Unnamed"
452#define SOCKS4_NETWORK_LEN 8
465#define CELL_PAYLOAD_SIZE 509
468#define CELL_MAX_NETWORK_SIZE 514
471#define VAR_CELL_MAX_HEADER_SIZE 7
473static int get_cell_network_size(
int wide_circ_ids);
474static inline int get_cell_network_size(
int wide_circ_ids)
478static int get_var_cell_header_size(
int wide_circ_ids);
479static inline int get_var_cell_header_size(
int wide_circ_ids)
484static int get_circ_id_size(
int wide_circ_ids);
485static inline int get_circ_id_size(
int wide_circ_ids)
487 return wide_circ_ids ? 4 : 2;
492#define RELAY_HEADER_SIZE (1+2+2+4+2)
494#define RELAY_PAYLOAD_SIZE (CELL_PAYLOAD_SIZE-RELAY_HEADER_SIZE)
511typedef struct channel_tls_t channel_tls_t;
515typedef struct circuitmux_t circuitmux_t;
539#define OR_AUTH_CHALLENGE_LEN 32
551#define OR_CERT_TYPE_TLS_LINK 1
554#define OR_CERT_TYPE_ID_1024 2
558#define OR_CERT_TYPE_AUTH_1024 3
560#define OR_CERT_TYPE_RSA_ED_CROSSCERT 7
569#define AUTHTYPE_RSA_SHA256_TLSSECRET 1
577#define AUTHTYPE_RSA_SHA256_RFC5705 2
580#define AUTHTYPE_ED25519_SHA256_RFC5705 3
592#define V3_AUTH_FIXED_PART_LEN (8+(32*6))
595#define V3_AUTH_BODY_LEN (V3_AUTH_FIXED_PART_LEN + 8 + 16)
601#define EXT_OR_CONN_ID_LEN DIGEST_LEN
612#define TO_CONN(c) (&(((c)->base_)))
615#define ENTRY_TO_CONN(c) (TO_CONN(ENTRY_TO_EDGE_CONN(c)))
639#define saved_location_bitfield_t ENUM_BF(saved_location_t)
644 DL_SCHED_GENERIC = 0,
645 DL_SCHED_CONSENSUS = 1,
648#define download_schedule_bitfield_t ENUM_BF(download_schedule_t)
656 DL_WANT_ANY_DIRSERVER = 0,
657 DL_WANT_AUTHORITY = 1,
659#define download_want_authority_bitfield_t \
660 ENUM_BF(download_want_authority_t)
666 DL_SCHED_INCREMENT_FAILURE = 0,
667 DL_SCHED_INCREMENT_ATTEMPT = 1,
669#define download_schedule_increment_bitfield_t \
670 ENUM_BF(download_schedule_increment_t)
675#define IMPOSSIBLE_TO_DOWNLOAD 255
680#define ROUTER_ANNOTATION_BUF_LEN 256
769#define N_CONSENSUS_FLAVORS ((int)(FLAV_MICRODESC)+1)
799#define ALL_DIRINFO ((dirinfo_type_t)((1<<7)-1))
801#define ONION_HANDSHAKE_TYPE_TAP 0x0000
802#define ONION_HANDSHAKE_TYPE_FAST 0x0001
803#define ONION_HANDSHAKE_TYPE_NTOR 0x0002
804#define ONION_HANDSHAKE_TYPE_NTOR_V3 0x0003
805#define MAX_ONION_HANDSHAKE_TYPE 0x0003
812#define CPATH_KEY_MATERIAL_LEN (20*2+16*2)
837#define MAX_RELAY_EARLY_CELLS_PER_CIRCUIT 8
840#define path_state_bitfield_t ENUM_BF(path_state_t)
842#if REND_COOKIE_LEN != DIGEST_LEN
843#error "The REND_TOKEN_LEN macro assumes REND_COOKIE_LEN == DIGEST_LEN"
845#define REND_TOKEN_LEN DIGEST_LEN
848#define TO_CIRCUIT(x) (&((x)->base_))
857#define ISO_DESTPORT (1u<<0)
859#define ISO_DESTADDR (1u<<1)
861#define ISO_SOCKSAUTH (1u<<2)
863#define ISO_CLIENTPROTO (1u<<3)
865#define ISO_CLIENTADDR (1u<<4)
867#define ISO_SESSIONGRP (1u<<5)
869#define ISO_NYM_EPOCH (1u<<6)
871#define ISO_STREAM (1u<<7)
875#define ISO_DEFAULT (ISO_CLIENTADDR|ISO_SOCKSAUTH|ISO_SESSIONGRP|ISO_NYM_EPOCH)
878#define SESSION_GROUP_UNSET -1
880#define SESSION_GROUP_DIRCONN -2
882#define SESSION_GROUP_CONTROL_RESOLVE -3
884#define SESSION_GROUP_FIRST_AUTO -4
887typedef struct routerset_t routerset_t;
891#define CFG_AUTO_PORT 0xc4005e
897#define MAX_SOCKS_ADDR_LEN 256
902#define DEFAULT_ROUTE_LEN 3
907#define BW_WEIGHT_SCALE 10000
908#define BW_MIN_WEIGHT_SCALE 1
909#define BW_MAX_WEIGHT_SCALE INT32_MAX
939#define addressmap_entry_source_bitfield_t ENUM_BF(addressmap_entry_source_t)
941#define WRITE_STATS_INTERVAL (24*60*60)
954#define MAX_INTRO_POINT_REACHABILITY_FAILURES 5
959#define INTRO_POINT_MIN_LIFETIME_INTRODUCTIONS 16384
961#define INTRO_POINT_MAX_LIFETIME_INTRODUCTIONS \
962 (INTRO_POINT_MIN_LIFETIME_INTRODUCTIONS * 2)
970#define INTRO_POINT_LIFETIME_MIN_SECONDS (18*60*60)
975#define INTRO_POINT_LIFETIME_MAX_SECONDS (24*60*60)
980#define MAX_INTRO_POINT_CIRCUIT_RETRIES 3
986#define RELAY_REQUIRED_MIN_BANDWIDTH (75*1024)
987#define BRIDGE_REQUIRED_MIN_BANDWIDTH (50*1024)
989#define ROUTER_MAX_DECLARED_BANDWIDTH INT32_MAX
Header for approx_time.c.
Header file for buffers.c.
Inline functions for reading and writing multibyte values from the middle of strings,...
Macro definitions for MIN, MAX, and CLAMP.
Utility macros to handle different features and behavior in different compilers.
Locale-independent character-type inspection (header)
Header for compat_string.c.
Functions and types for monotonic times.
Headers for crypto_cipher.c.
Headers for crypto_rsa.c.
Definitions for sizes of Diffie-Hellman groups elements in Z_p.
Configuration structure for client ports.
Wrappers for reading and writing data to files on disk.
Macros for comparing the boolean value of integers.
Headers for util_malloc.c.
#define VAR_CELL_MAX_HEADER_SIZE
addressmap_entry_source_t
#define CELL_MAX_NETWORK_SIZE
download_want_authority_t
download_schedule_increment_t
circuit_channel_direction_t
Summarize similar messages that would otherwise flood the logs.
unsigned int supports_extend2_cells
unsigned int supports_ed25519_link_handshake_compat
unsigned int supports_v3_rendezvous_point
unsigned int supports_hs_setup_padding
unsigned int supports_initiating_ipv6_extends
unsigned int supports_v3_hsdir
unsigned int supports_ed25519_link_handshake_any
unsigned int supports_congestion_control
unsigned int supports_canonical_ipv6_conns
unsigned int supports_conflux
unsigned int protocols_known
unsigned int supports_accepting_ipv6_extends
unsigned int supports_ed25519_hs_intro
unsigned int supports_establish_intro_dos_extension
unsigned int waiting_time
Macros to implement mocking and selective exposure for the test code.
Definitions for timing-related constants.
Declarations for timeval-related macros that some platforms are missing.
Integer definitions used throughout Tor.
Macros to manage assertions, fatal and non-fatal.
Header for util_string.c.