diff options
author | Nick Mathewson <nickm@torproject.org> | 2008-12-17 14:59:28 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2008-12-17 14:59:28 +0000 |
commit | 7678ac5193d86bb060e182db0ce6b15c70cabbd2 (patch) | |
tree | 92c3440411cec25e2be609ec35f3f3a297b39ba6 /src/or/or.h | |
parent | 26632d59dd34aef4834ee9844adeab5131248bf7 (diff) | |
download | tor-7678ac5193d86bb060e182db0ce6b15c70cabbd2.tar.gz tor-7678ac5193d86bb060e182db0ce6b15c70cabbd2.zip |
Move edge-only flags from connection_t to edge_connection_t.
svn:r17643
Diffstat (limited to 'src/or/or.h')
-rw-r--r-- | src/or/or.h | 68 |
1 files changed, 40 insertions, 28 deletions
diff --git a/src/or/or.h b/src/or/or.h index 8e56ac249d..38ef28d63a 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -223,6 +223,7 @@ typedef enum { /* !!!! If _CONN_TYPE_MAX is ever over 15, we must grow the type field in * connection_t. */ +/** True iff <b>x</b> is an edge connection. */ #define CONN_IS_EDGE(x) \ ((x)->type == CONN_TYPE_EXIT || (x)->type == CONN_TYPE_AP) @@ -354,17 +355,17 @@ typedef enum { #define DIR_PURPOSE_UPLOAD_VOTE 10 /** A connection to a directory server: upload a v3 consensus signature */ #define DIR_PURPOSE_UPLOAD_SIGNATURES 11 -/** A connection to a directory server: download one or more network-status - * objects [XXX wtf, these are all the same comment] */ +/** A connection to a directory server: download one or more v3 networkstatus + * votes. */ #define DIR_PURPOSE_FETCH_STATUS_VOTE 12 -/** A connection to a directory server: download one or more network-status - * objects */ +/** A connection to a directory server: download a v3 detached signatures + * object for a consensus. */ #define DIR_PURPOSE_FETCH_DETACHED_SIGNATURES 13 -/** A connection to a directory server: download one or more network-status - * objects */ +/** A connection to a directory server: download a v3 networkstatus + * consensus. */, #define DIR_PURPOSE_FETCH_CONSENSUS 14 -/** A connection to a directory server: download one or more network-status - * objects */ +/** A connection to a directory server: download one or more directory + * authority certificates. */ #define DIR_PURPOSE_FETCH_CERTIFICATE 15 /** Purpose for connection at a directory server. */ @@ -377,6 +378,8 @@ typedef enum { #define DIR_PURPOSE_FETCH_RENDDESC_V2 18 #define _DIR_PURPOSE_MAX 18 +/** True iff <b>p</b> is a purpose corresponding to uploading data to a + * directory server. */ #define DIR_PURPOSE_IS_UPLOAD(p) \ ((p)==DIR_PURPOSE_UPLOAD_DIR || \ (p)==DIR_PURPOSE_UPLOAD_RENDDESC || \ @@ -480,15 +483,20 @@ typedef enum { /** True iff the circuit purpose <b>p</b> is for a circuit that * originated at this node. */ #define CIRCUIT_PURPOSE_IS_ORIGIN(p) ((p)>_CIRCUIT_PURPOSE_OR_MAX) +/** True iff the circuit purpose <b>p</b> is for a circuit that originated + * here to serve as a client. (Hidden services don't count here.) */ #define CIRCUIT_PURPOSE_IS_CLIENT(p) \ ((p)> _CIRCUIT_PURPOSE_OR_MAX && \ (p)<=_CIRCUIT_PURPOSE_C_MAX) +/** True iff the circuit_t <b>c</b> is actually an origin_circuit_t. */ #define CIRCUIT_IS_ORIGIN(c) (CIRCUIT_PURPOSE_IS_ORIGIN((c)->purpose)) /** How many circuits do we want simultaneously in-progress to handle * a given stream? */ #define MIN_CIRCUITS_HANDLING_STREAM 2 +/* These RELAY_COMMAND constants define values for relay cell commands, and +* must match those defined in tor-spec.txt. */ #define RELAY_COMMAND_BEGIN 1 #define RELAY_COMMAND_DATA 2 #define RELAY_COMMAND_END 3 @@ -513,7 +521,7 @@ typedef enum { #define RELAY_COMMAND_RENDEZVOUS_ESTABLISHED 39 #define RELAY_COMMAND_INTRODUCE_ACK 40 -/* Reasons why an OR connection is closed */ +/* Reasons why an OR connection is closed. */ #define END_OR_CONN_REASON_DONE 1 #define END_OR_CONN_REASON_REFUSED 2 /* connection refused */ #define END_OR_CONN_REASON_OR_IDENTITY 3 @@ -525,7 +533,7 @@ typedef enum { #define END_OR_CONN_REASON_MISC 9 /* Reasons why we (or a remote OR) might close a stream. See tor-spec.txt for - * documentation of these. */ + * documentation of these. The values must match. */ #define END_STREAM_REASON_MISC 1 #define END_STREAM_REASON_RESOLVEFAILED 2 #define END_STREAM_REASON_CONNECTREFUSED 3 @@ -897,21 +905,6 @@ typedef struct connection_t { * before closing it? */ unsigned int inbuf_reached_eof:1; /**< Boolean: did read() return 0 on this * conn? */ - unsigned int edge_has_sent_end:1; /**< For debugging; only used on edge - * connections. Set once we've set the stream end, - * and check in connection_about_to_close_connection(). - */ - /** Edge connections only: true if we've blocked reading until the - * circuit has fewer queued cells. */ - unsigned int edge_blocked_on_circ:1; - /** For AP connections only. If 1, and we fail to reach the chosen exit, - * stop requiring it. */ - unsigned int chosen_exit_optional:1; - /** For AP connections only. If non-zero, this exit node was picked as - * a result of the TrackHostExit, and the value decrements every time - * we fail to complete a circuit to our chosen exit -- if it reaches - * zero, abandon the associated mapaddress. */ - unsigned int chosen_exit_retries:3; /** Set to 1 when we're inside connection_flushed_some to keep us from * calling connection_handle_write() recursively. */ unsigned int in_flushed_some:1; @@ -1103,6 +1096,22 @@ typedef struct edge_connection_t { * itself rather than BEGIN (either via onehop or via a whole circuit). */ unsigned int use_begindir:1; + unsigned int edge_has_sent_end:1; /**< For debugging; only used on edge + * connections. Set once we've set the stream end, + * and check in connection_about_to_close_connection(). + */ + /** True iff we've blocked reading until the circuit has fewer queued + * cells. */ + unsigned int edge_blocked_on_circ:1; + /** For AP connections only. If 1, and we fail to reach the chosen exit, + * stop requiring it. */ + unsigned int chosen_exit_optional:1; + /** For AP connections only. If non-zero, this exit node was picked as + * a result of the TrackHostExit, and the value decrements every time + * we fail to complete a circuit to our chosen exit -- if it reaches + * zero, abandon the associated mapaddress. */ + unsigned int chosen_exit_retries:3; + /** If this is a DNSPort connection, this field holds the pending DNS * request that we're going to try to answer. */ struct evdns_server_request *dns_server_request; @@ -1261,7 +1270,7 @@ typedef enum { SAVED_IN_JOURNAL } saved_location_t; -/** Enumeration: what kind of downlaod schedule are we using for a given +/** Enumeration: what kind of download schedule are we using for a given * object? */ typedef enum { DL_SCHED_GENERIC = 0, @@ -1319,7 +1328,8 @@ typedef struct signed_descriptor_t { * status, so far as we know." */ time_t last_listed_as_valid_until; #ifdef TRACK_SERVED_TIME - /** DOCDOC */ + /** The last time we served anybody this descriptor. Used for internal + * testing to see whether we're holding on to descriptors too long. */ time_t last_served_at; /*XXXX021 remove if not useful. */ #endif /* If true, we do not ever try to save this object in the cache. */ @@ -1570,7 +1580,9 @@ typedef struct networkstatus_voter_info_t { uint16_t or_port; /**< OR port of this voter */ char *contact; /**< Contact information for this voter. */ char vote_digest[DIGEST_LEN]; /**< Digest of this voter's vote, as signed. */ - char legacy_id_digest[DIGEST_LEN]; /**< From vote only. DOCDOC */ + /** Digest of this voter's "legacy" identity key, if any. In vote only; for + * consensuses, we treat legacy keys as additional signers. */ + char legacy_id_digest[DIGEST_LEN]; /* Nothing from here on is signed. */ char signing_key_digest[DIGEST_LEN]; /**< Declared digest of signing key |