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
188 #define RELAY_COMMAND_SENDME 5
189 #define RELAY_COMMAND_EXTEND 6
190 #define RELAY_COMMAND_EXTENDED 7
191 #define RELAY_COMMAND_TRUNCATE 8
192 #define RELAY_COMMAND_TRUNCATED 9
193 #define RELAY_COMMAND_DROP 10
194 #define RELAY_COMMAND_RESOLVE 11
195 #define RELAY_COMMAND_RESOLVED 12
196 #define RELAY_COMMAND_BEGIN_DIR 13
197 #define RELAY_COMMAND_EXTEND2 14
198 #define RELAY_COMMAND_EXTENDED2 15
200 #define RELAY_COMMAND_ESTABLISH_INTRO 32
201 #define RELAY_COMMAND_ESTABLISH_RENDEZVOUS 33
202 #define RELAY_COMMAND_INTRODUCE1 34
203 #define RELAY_COMMAND_INTRODUCE2 35
204 #define RELAY_COMMAND_RENDEZVOUS1 36
205 #define RELAY_COMMAND_RENDEZVOUS2 37
206 #define RELAY_COMMAND_INTRO_ESTABLISHED 38
207 #define RELAY_COMMAND_RENDEZVOUS_ESTABLISHED 39
208 #define RELAY_COMMAND_INTRODUCE_ACK 40
210 #define RELAY_COMMAND_PADDING_NEGOTIATE 41
211 #define RELAY_COMMAND_PADDING_NEGOTIATED 42
213 #define RELAY_COMMAND_XOFF 43
214 #define RELAY_COMMAND_XON 44
217 #define END_OR_CONN_REASON_DONE 1
218 #define END_OR_CONN_REASON_REFUSED 2
219 #define END_OR_CONN_REASON_OR_IDENTITY 3
220 #define END_OR_CONN_REASON_CONNRESET 4
221 #define END_OR_CONN_REASON_TIMEOUT 5
222 #define END_OR_CONN_REASON_NO_ROUTE 6
223 #define END_OR_CONN_REASON_IO_ERROR 7
224 #define END_OR_CONN_REASON_RESOURCE_LIMIT 8
225 #define END_OR_CONN_REASON_PT_MISSING 9
226 #define END_OR_CONN_REASON_TLS_ERROR 10
227 #define END_OR_CONN_REASON_MISC 11
231 #define END_STREAM_REASON_MISC 1
232 #define END_STREAM_REASON_RESOLVEFAILED 2
233 #define END_STREAM_REASON_CONNECTREFUSED 3
234 #define END_STREAM_REASON_EXITPOLICY 4
235 #define END_STREAM_REASON_DESTROY 5
236 #define END_STREAM_REASON_DONE 6
237 #define END_STREAM_REASON_TIMEOUT 7
238 #define END_STREAM_REASON_NOROUTE 8
239 #define END_STREAM_REASON_HIBERNATING 9
240 #define END_STREAM_REASON_INTERNAL 10
241 #define END_STREAM_REASON_RESOURCELIMIT 11
242 #define END_STREAM_REASON_CONNRESET 12
243 #define END_STREAM_REASON_TORPROTOCOL 13
244 #define END_STREAM_REASON_NOTDIRECTORY 14
245 #define END_STREAM_REASON_ENTRYPOLICY 15
254 #define END_STREAM_REASON_CANT_ATTACH 257
257 #define END_STREAM_REASON_NET_UNREACHABLE 258
260 #define END_STREAM_REASON_SOCKSPROTOCOL 259
263 #define END_STREAM_REASON_CANT_FETCH_ORIG_DEST 260
266 #define END_STREAM_REASON_INVALID_NATD_DEST 261
269 #define END_STREAM_REASON_PRIVATE_ADDR 262
273 #define END_STREAM_REASON_HTTPPROTOCOL 263
276 #define END_STREAM_REASON_MASK 511
280 #define END_STREAM_REASON_FLAG_REMOTE 512
283 #define END_STREAM_REASON_FLAG_ALREADY_SENT_CLOSED 1024
287 #define END_STREAM_REASON_FLAG_ALREADY_SOCKS_REPLIED 2048
290 #define RESOLVED_TYPE_HOSTNAME 0
291 #define RESOLVED_TYPE_IPV4 4
292 #define RESOLVED_TYPE_IPV6 6
293 #define RESOLVED_TYPE_ERROR_TRANSIENT 0xF0
294 #define RESOLVED_TYPE_ERROR 0xF1
300 #define END_CIRC_REASON_IP_NOW_REDUNDANT -4
304 #define END_CIRC_REASON_MEASUREMENT_EXPIRED -3
307 #define END_CIRC_REASON_NOPATH -2
309 #define END_CIRC_AT_ORIGIN -1
313 #define END_CIRC_REASON_MIN_ 0
314 #define END_CIRC_REASON_NONE 0
315 #define END_CIRC_REASON_TORPROTOCOL 1
316 #define END_CIRC_REASON_INTERNAL 2
317 #define END_CIRC_REASON_REQUESTED 3
318 #define END_CIRC_REASON_HIBERNATING 4
319 #define END_CIRC_REASON_RESOURCELIMIT 5
320 #define END_CIRC_REASON_CONNECTFAILED 6
321 #define END_CIRC_REASON_OR_IDENTITY 7
322 #define END_CIRC_REASON_CHANNEL_CLOSED 8
323 #define END_CIRC_REASON_FINISHED 9
324 #define END_CIRC_REASON_TIMEOUT 10
325 #define END_CIRC_REASON_DESTROYED 11
326 #define END_CIRC_REASON_NOSUCHSERVICE 12
327 #define END_CIRC_REASON_MAX_ 12
332 #define END_CIRC_REASON_FLAG_REMOTE 512
337 #define REND_DESC_ID_V2_LEN_BASE32 BASE32_DIGEST_LEN
340 #define REND_CLIENTNAME_MAX_LEN 16
344 #define REND_COOKIE_LEN DIGEST_LEN
363 #define REND_REPLAY_TIME_INTERVAL (5 * 60)
385 #define CIRCWINDOW_START 1000
386 #define CIRCWINDOW_START_MIN 100
387 #define CIRCWINDOW_START_MAX 1000
389 #define CIRCWINDOW_INCREMENT 100
392 #define STREAMWINDOW_START 500
393 #define STREAMWINDOW_START_MAX 500
395 #define STREAMWINDOW_INCREMENT 50
404 #define ORCIRC_MAX_MIDDLE_CELLS (CIRCWINDOW_START_MAX*2)
408 #define ORCIRC_MAX_MIDDLE_KILL_THRESH (1.1f)
411 #define CELL_PADDING 0
412 #define CELL_CREATE 1
413 #define CELL_CREATED 2
415 #define CELL_DESTROY 4
416 #define CELL_CREATE_FAST 5
417 #define CELL_CREATED_FAST 6
418 #define CELL_VERSIONS 7
419 #define CELL_NETINFO 8
420 #define CELL_RELAY_EARLY 9
421 #define CELL_CREATE2 10
422 #define CELL_CREATED2 11
423 #define CELL_PADDING_NEGOTIATE 12
425 #define CELL_VPADDING 128
426 #define CELL_CERTS 129
427 #define CELL_AUTH_CHALLENGE 130
428 #define CELL_AUTHENTICATE 131
429 #define CELL_AUTHORIZE 132
430 #define CELL_COMMAND_MAX_ 132
433 #define TIMEOUT_UNTIL_UNREACHABILITY_COMPLAINT (20*60)
436 #define LEGAL_NICKNAME_CHARACTERS \
437 "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
440 #define UNNAMED_ROUTER_NICKNAME "Unnamed"
443 #define SOCKS4_NETWORK_LEN 8
456 #define CELL_PAYLOAD_SIZE 509
459 #define CELL_MAX_NETWORK_SIZE 514
462 #define VAR_CELL_MAX_HEADER_SIZE 7
464 static int get_cell_network_size(
int wide_circ_ids);
465 static inline int get_cell_network_size(
int wide_circ_ids)
469 static int get_var_cell_header_size(
int wide_circ_ids);
470 static inline int get_var_cell_header_size(
int wide_circ_ids)
475 static int get_circ_id_size(
int wide_circ_ids);
476 static inline int get_circ_id_size(
int wide_circ_ids)
478 return wide_circ_ids ? 4 : 2;
483 #define RELAY_HEADER_SIZE (1+2+2+4+2)
485 #define RELAY_PAYLOAD_SIZE (CELL_PAYLOAD_SIZE-RELAY_HEADER_SIZE)
502 typedef struct channel_tls_t channel_tls_t;
506 typedef struct circuitmux_t circuitmux_t;
530 #define OR_AUTH_CHALLENGE_LEN 32
542 #define OR_CERT_TYPE_TLS_LINK 1
545 #define OR_CERT_TYPE_ID_1024 2
549 #define OR_CERT_TYPE_AUTH_1024 3
551 #define OR_CERT_TYPE_RSA_ED_CROSSCERT 7
560 #define AUTHTYPE_RSA_SHA256_TLSSECRET 1
568 #define AUTHTYPE_RSA_SHA256_RFC5705 2
571 #define AUTHTYPE_ED25519_SHA256_RFC5705 3
583 #define V3_AUTH_FIXED_PART_LEN (8+(32*6))
586 #define V3_AUTH_BODY_LEN (V3_AUTH_FIXED_PART_LEN + 8 + 16)
592 #define EXT_OR_CONN_ID_LEN DIGEST_LEN
603 #define TO_CONN(c) (&(((c)->base_)))
606 #define ENTRY_TO_CONN(c) (TO_CONN(ENTRY_TO_EDGE_CONN(c)))
630 #define saved_location_bitfield_t ENUM_BF(saved_location_t)
635 DL_SCHED_GENERIC = 0,
636 DL_SCHED_CONSENSUS = 1,
639 #define download_schedule_bitfield_t ENUM_BF(download_schedule_t)
647 DL_WANT_ANY_DIRSERVER = 0,
648 DL_WANT_AUTHORITY = 1,
650 #define download_want_authority_bitfield_t \
651 ENUM_BF(download_want_authority_t)
657 DL_SCHED_INCREMENT_FAILURE = 0,
658 DL_SCHED_INCREMENT_ATTEMPT = 1,
660 #define download_schedule_increment_bitfield_t \
661 ENUM_BF(download_schedule_increment_t)
666 #define IMPOSSIBLE_TO_DOWNLOAD 255
671 #define ROUTER_ANNOTATION_BUF_LEN 256
757 #define N_CONSENSUS_FLAVORS ((int)(FLAV_MICRODESC)+1)
787 #define ALL_DIRINFO ((dirinfo_type_t)((1<<7)-1))
789 #define ONION_HANDSHAKE_TYPE_TAP 0x0000
790 #define ONION_HANDSHAKE_TYPE_FAST 0x0001
791 #define ONION_HANDSHAKE_TYPE_NTOR 0x0002
792 #define ONION_HANDSHAKE_TYPE_NTOR_V3 0x0003
793 #define MAX_ONION_HANDSHAKE_TYPE 0x0003
800 #define CPATH_KEY_MATERIAL_LEN (20*2+16*2)
825 #define MAX_RELAY_EARLY_CELLS_PER_CIRCUIT 8
828 #define path_state_bitfield_t ENUM_BF(path_state_t)
830 #if REND_COOKIE_LEN != DIGEST_LEN
831 #error "The REND_TOKEN_LEN macro assumes REND_COOKIE_LEN == DIGEST_LEN"
833 #define REND_TOKEN_LEN DIGEST_LEN
836 #define TO_CIRCUIT(x) (&((x)->base_))
845 #define ISO_DESTPORT (1u<<0)
847 #define ISO_DESTADDR (1u<<1)
849 #define ISO_SOCKSAUTH (1u<<2)
851 #define ISO_CLIENTPROTO (1u<<3)
853 #define ISO_CLIENTADDR (1u<<4)
855 #define ISO_SESSIONGRP (1u<<5)
857 #define ISO_NYM_EPOCH (1u<<6)
859 #define ISO_STREAM (1u<<7)
863 #define ISO_DEFAULT (ISO_CLIENTADDR|ISO_SOCKSAUTH|ISO_SESSIONGRP|ISO_NYM_EPOCH)
866 #define SESSION_GROUP_UNSET -1
868 #define SESSION_GROUP_DIRCONN -2
870 #define SESSION_GROUP_CONTROL_RESOLVE -3
872 #define SESSION_GROUP_FIRST_AUTO -4
875 typedef struct routerset_t routerset_t;
879 #define CFG_AUTO_PORT 0xc4005e
885 #define MAX_SOCKS_ADDR_LEN 256
890 #define DEFAULT_ROUTE_LEN 3
895 #define BW_WEIGHT_SCALE 10000
896 #define BW_MIN_WEIGHT_SCALE 1
897 #define BW_MAX_WEIGHT_SCALE INT32_MAX
927 #define addressmap_entry_source_bitfield_t ENUM_BF(addressmap_entry_source_t)
929 #define WRITE_STATS_INTERVAL (24*60*60)
942 #define MAX_INTRO_POINT_REACHABILITY_FAILURES 5
947 #define INTRO_POINT_MIN_LIFETIME_INTRODUCTIONS 16384
949 #define INTRO_POINT_MAX_LIFETIME_INTRODUCTIONS \
950 (INTRO_POINT_MIN_LIFETIME_INTRODUCTIONS * 2)
958 #define INTRO_POINT_LIFETIME_MIN_SECONDS (18*60*60)
963 #define INTRO_POINT_LIFETIME_MAX_SECONDS (24*60*60)
968 #define MAX_INTRO_POINT_CIRCUIT_RETRIES 3
974 #define RELAY_REQUIRED_MIN_BANDWIDTH (75*1024)
975 #define BRIDGE_REQUIRED_MIN_BANDWIDTH (50*1024)
977 #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 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.