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
233 case RELAY_COMMAND_BEGIN:
234 case RELAY_COMMAND_BEGIN_DIR:
235 case RELAY_COMMAND_CONFLUX_LINK:
236 case RELAY_COMMAND_CONFLUX_LINKED:
237 case RELAY_COMMAND_CONFLUX_LINKED_ACK:
238 case RELAY_COMMAND_CONFLUX_SWITCH:
239 case RELAY_COMMAND_CONNECTED:
240 case RELAY_COMMAND_DATA:
241 case RELAY_COMMAND_DROP:
242 case RELAY_COMMAND_END:
243 case RELAY_COMMAND_ESTABLISH_INTRO:
244 case RELAY_COMMAND_ESTABLISH_RENDEZVOUS:
245 case RELAY_COMMAND_EXTEND2:
246 case RELAY_COMMAND_EXTEND:
247 case RELAY_COMMAND_EXTENDED2:
248 case RELAY_COMMAND_EXTENDED:
249 case RELAY_COMMAND_INTRODUCE1:
250 case RELAY_COMMAND_INTRODUCE2:
251 case RELAY_COMMAND_INTRODUCE_ACK:
252 case RELAY_COMMAND_INTRO_ESTABLISHED:
253 case RELAY_COMMAND_PADDING_NEGOTIATE:
254 case RELAY_COMMAND_PADDING_NEGOTIATED:
255 case RELAY_COMMAND_RENDEZVOUS1:
256 case RELAY_COMMAND_RENDEZVOUS2:
257 case RELAY_COMMAND_RENDEZVOUS_ESTABLISHED:
258 case RELAY_COMMAND_RESOLVE:
259 case RELAY_COMMAND_RESOLVED:
260 case RELAY_COMMAND_SENDME:
261 case RELAY_COMMAND_TRUNCATE:
262 case RELAY_COMMAND_TRUNCATED:
263 case RELAY_COMMAND_XOFF:
264 case RELAY_COMMAND_XON:
272#define END_OR_CONN_REASON_DONE 1
273#define END_OR_CONN_REASON_REFUSED 2
274#define END_OR_CONN_REASON_OR_IDENTITY 3
275#define END_OR_CONN_REASON_CONNRESET 4
276#define END_OR_CONN_REASON_TIMEOUT 5
277#define END_OR_CONN_REASON_NO_ROUTE 6
278#define END_OR_CONN_REASON_IO_ERROR 7
279#define END_OR_CONN_REASON_RESOURCE_LIMIT 8
280#define END_OR_CONN_REASON_PT_MISSING 9
281#define END_OR_CONN_REASON_TLS_ERROR 10
282#define END_OR_CONN_REASON_MISC 11
286#define END_STREAM_REASON_MISC 1
287#define END_STREAM_REASON_RESOLVEFAILED 2
288#define END_STREAM_REASON_CONNECTREFUSED 3
289#define END_STREAM_REASON_EXITPOLICY 4
290#define END_STREAM_REASON_DESTROY 5
291#define END_STREAM_REASON_DONE 6
292#define END_STREAM_REASON_TIMEOUT 7
293#define END_STREAM_REASON_NOROUTE 8
294#define END_STREAM_REASON_HIBERNATING 9
295#define END_STREAM_REASON_INTERNAL 10
296#define END_STREAM_REASON_RESOURCELIMIT 11
297#define END_STREAM_REASON_CONNRESET 12
298#define END_STREAM_REASON_TORPROTOCOL 13
299#define END_STREAM_REASON_NOTDIRECTORY 14
300#define END_STREAM_REASON_ENTRYPOLICY 15
309#define END_STREAM_REASON_CANT_ATTACH 257
312#define END_STREAM_REASON_NET_UNREACHABLE 258
315#define END_STREAM_REASON_SOCKSPROTOCOL 259
318#define END_STREAM_REASON_CANT_FETCH_ORIG_DEST 260
321#define END_STREAM_REASON_INVALID_NATD_DEST 261
324#define END_STREAM_REASON_PRIVATE_ADDR 262
328#define END_STREAM_REASON_HTTPPROTOCOL 263
331#define END_STREAM_REASON_MASK 511
335#define END_STREAM_REASON_FLAG_REMOTE 512
338#define END_STREAM_REASON_FLAG_ALREADY_SENT_CLOSED 1024
342#define END_STREAM_REASON_FLAG_ALREADY_SOCKS_REPLIED 2048
345#define RESOLVED_TYPE_HOSTNAME 0
346#define RESOLVED_TYPE_IPV4 4
347#define RESOLVED_TYPE_IPV6 6
348#define RESOLVED_TYPE_ERROR_TRANSIENT 0xF0
349#define RESOLVED_TYPE_ERROR 0xF1
351#define RESOLVED_TYPE_NOERROR 0x01F2
357#define END_CIRC_REASON_IP_NOW_REDUNDANT -4
361#define END_CIRC_REASON_MEASUREMENT_EXPIRED -3
364#define END_CIRC_REASON_NOPATH -2
366#define END_CIRC_AT_ORIGIN -1
370#define END_CIRC_REASON_MIN_ 0
371#define END_CIRC_REASON_NONE 0
372#define END_CIRC_REASON_TORPROTOCOL 1
373#define END_CIRC_REASON_INTERNAL 2
374#define END_CIRC_REASON_REQUESTED 3
375#define END_CIRC_REASON_HIBERNATING 4
376#define END_CIRC_REASON_RESOURCELIMIT 5
377#define END_CIRC_REASON_CONNECTFAILED 6
378#define END_CIRC_REASON_OR_IDENTITY 7
379#define END_CIRC_REASON_CHANNEL_CLOSED 8
380#define END_CIRC_REASON_FINISHED 9
381#define END_CIRC_REASON_TIMEOUT 10
382#define END_CIRC_REASON_DESTROYED 11
383#define END_CIRC_REASON_NOSUCHSERVICE 12
384#define END_CIRC_REASON_MAX_ 12
389#define END_CIRC_REASON_FLAG_REMOTE 512
394#define REND_DESC_ID_V2_LEN_BASE32 BASE32_DIGEST_LEN
397#define REND_CLIENTNAME_MAX_LEN 16
401#define REND_COOKIE_LEN DIGEST_LEN
420#define REND_REPLAY_TIME_INTERVAL (5 * 60)
442#define CIRCWINDOW_START 1000
443#define CIRCWINDOW_START_MIN 100
444#define CIRCWINDOW_START_MAX 1000
446#define CIRCWINDOW_INCREMENT 100
449#define STREAMWINDOW_START 500
450#define STREAMWINDOW_START_MAX 500
452#define STREAMWINDOW_INCREMENT 50
461#define ORCIRC_MAX_MIDDLE_CELLS (CIRCWINDOW_START_MAX*2)
465#define ORCIRC_MAX_MIDDLE_KILL_THRESH (1.1f)
468#define CELL_PADDING 0
470#define CELL_CREATED 2
472#define CELL_DESTROY 4
473#define CELL_CREATE_FAST 5
474#define CELL_CREATED_FAST 6
475#define CELL_VERSIONS 7
476#define CELL_NETINFO 8
477#define CELL_RELAY_EARLY 9
478#define CELL_CREATE2 10
479#define CELL_CREATED2 11
480#define CELL_PADDING_NEGOTIATE 12
482#define CELL_VPADDING 128
483#define CELL_CERTS 129
484#define CELL_AUTH_CHALLENGE 130
485#define CELL_AUTHENTICATE 131
486#define CELL_AUTHORIZE 132
487#define CELL_COMMAND_MAX_ 132
490#define TIMEOUT_UNTIL_UNREACHABILITY_COMPLAINT (20*60)
493#define LEGAL_NICKNAME_CHARACTERS \
494 "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
497#define UNNAMED_ROUTER_NICKNAME "Unnamed"
500#define SOCKS4_NETWORK_LEN 8
520#define CELL_PAYLOAD_SIZE 509
523#define CELL_MAX_NETWORK_SIZE 514
526#define VAR_CELL_MAX_HEADER_SIZE 7
536static int get_cell_network_size(
int wide_circ_ids);
537static inline int get_cell_network_size(
int wide_circ_ids)
541static int get_var_cell_header_size(
int wide_circ_ids);
542static inline int get_var_cell_header_size(
int wide_circ_ids)
547static int get_circ_id_size(
int wide_circ_ids);
548static inline int get_circ_id_size(
int wide_circ_ids)
550 return wide_circ_ids ? 4 : 2;
554#define RELAY_HEADER_SIZE_V0 (1+2+2+4+2)
557#define RELAY_HEADER_SIZE_V1_NO_STREAM_ID (16+1+2)
560#define RELAY_HEADER_SIZE_V1_WITH_STREAM_ID (16+1+2+2)
567#define RELAY_PAYLOAD_SIZE_MAX (CELL_PAYLOAD_SIZE - RELAY_HEADER_SIZE_V0)
570#define RELAY_PAYLOAD_SIZE_MIN \
571 (CELL_PAYLOAD_SIZE - RELAY_HEADER_SIZE_V1_WITH_STREAM_ID)
575#define RELAY_PAYLOAD_SIZE RELAY_PAYLOAD_SIZE_MAX
593typedef struct channel_tls_t channel_tls_t;
597typedef struct circuitmux_t circuitmux_t;
627#define OR_AUTH_CHALLENGE_LEN 32
639#define OR_CERT_TYPE_TLS_LINK 1
642#define OR_CERT_TYPE_ID_1024 2
646#define OR_CERT_TYPE_AUTH_1024 3
648#define OR_CERT_TYPE_RSA_ED_CROSSCERT 7
657#define AUTHTYPE_RSA_SHA256_TLSSECRET 1
665#define AUTHTYPE_RSA_SHA256_RFC5705 2
668#define AUTHTYPE_ED25519_SHA256_RFC5705 3
680#define V3_AUTH_FIXED_PART_LEN (8+(32*6))
683#define V3_AUTH_BODY_LEN (V3_AUTH_FIXED_PART_LEN + 8 + 16)
689#define EXT_OR_CONN_ID_LEN DIGEST_LEN
700#define TO_CONN(c) (&(((c)->base_)))
703#define ENTRY_TO_CONN(c) (TO_CONN(ENTRY_TO_EDGE_CONN(c)))
727#define saved_location_bitfield_t ENUM_BF(saved_location_t)
732 DL_SCHED_GENERIC = 0,
733 DL_SCHED_CONSENSUS = 1,
736#define download_schedule_bitfield_t ENUM_BF(download_schedule_t)
744 DL_WANT_ANY_DIRSERVER = 0,
745 DL_WANT_AUTHORITY = 1,
747#define download_want_authority_bitfield_t \
748 ENUM_BF(download_want_authority_t)
754 DL_SCHED_INCREMENT_FAILURE = 0,
755 DL_SCHED_INCREMENT_ATTEMPT = 1,
757#define download_schedule_increment_bitfield_t \
758 ENUM_BF(download_schedule_increment_t)
763#define IMPOSSIBLE_TO_DOWNLOAD 255
768#define ROUTER_ANNOTATION_BUF_LEN 256
857#define N_CONSENSUS_FLAVORS ((int)(FLAV_MICRODESC)+1)
887#define ALL_DIRINFO ((dirinfo_type_t)((1<<7)-1))
889#define ONION_HANDSHAKE_TYPE_TAP 0x0000
890#define ONION_HANDSHAKE_TYPE_FAST 0x0001
891#define ONION_HANDSHAKE_TYPE_NTOR 0x0002
892#define ONION_HANDSHAKE_TYPE_NTOR_V3 0x0003
893#define MAX_ONION_HANDSHAKE_TYPE 0x0003
900#define CPATH_KEY_MATERIAL_LEN (20*2+16*2)
925#define MAX_RELAY_EARLY_CELLS_PER_CIRCUIT 8
928#define path_state_bitfield_t ENUM_BF(path_state_t)
930#if REND_COOKIE_LEN != DIGEST_LEN
931#error "The REND_TOKEN_LEN macro assumes REND_COOKIE_LEN == DIGEST_LEN"
933#define REND_TOKEN_LEN DIGEST_LEN
936#define TO_CIRCUIT(x) (&((x)->base_))
945#define ISO_DESTPORT (1u<<0)
947#define ISO_DESTADDR (1u<<1)
949#define ISO_SOCKSAUTH (1u<<2)
951#define ISO_CLIENTPROTO (1u<<3)
953#define ISO_CLIENTADDR (1u<<4)
955#define ISO_SESSIONGRP (1u<<5)
957#define ISO_NYM_EPOCH (1u<<6)
959#define ISO_STREAM (1u<<7)
963#define ISO_DEFAULT (ISO_CLIENTADDR|ISO_SOCKSAUTH|ISO_SESSIONGRP|ISO_NYM_EPOCH)
966#define SESSION_GROUP_UNSET -1
968#define SESSION_GROUP_DIRCONN -2
970#define SESSION_GROUP_CONTROL_RESOLVE -3
972#define SESSION_GROUP_FIRST_AUTO -4
975typedef struct routerset_t routerset_t;
979#define CFG_AUTO_PORT 0xc4005e
985#define MAX_SOCKS_ADDR_LEN 256
990#define DEFAULT_ROUTE_LEN 3
995#define BW_WEIGHT_SCALE 10000
996#define BW_MIN_WEIGHT_SCALE 1
997#define BW_MAX_WEIGHT_SCALE INT32_MAX
1027#define addressmap_entry_source_bitfield_t ENUM_BF(addressmap_entry_source_t)
1029#define WRITE_STATS_INTERVAL (24*60*60)
1042#define MAX_INTRO_POINT_REACHABILITY_FAILURES 5
1047#define INTRO_POINT_MIN_LIFETIME_INTRODUCTIONS 16384
1049#define INTRO_POINT_MAX_LIFETIME_INTRODUCTIONS \
1050 (INTRO_POINT_MIN_LIFETIME_INTRODUCTIONS * 2)
1058#define INTRO_POINT_LIFETIME_MIN_SECONDS (18*60*60)
1063#define INTRO_POINT_LIFETIME_MAX_SECONDS (24*60*60)
1068#define MAX_INTRO_POINT_CIRCUIT_RETRIES 3
1074#define RELAY_REQUIRED_MIN_BANDWIDTH (75*1024)
1075#define BRIDGE_REQUIRED_MIN_BANDWIDTH (50*1024)
1077#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.
tor_cmdline_mode_t command
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
static bool is_known_relay_command(const uint8_t cmd)
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.