aboutsummaryrefslogtreecommitdiff
path: root/src/or/or.h
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2005-03-12 04:22:01 +0000
committerNick Mathewson <nickm@torproject.org>2005-03-12 04:22:01 +0000
commit115271f65e1b84cea09f0fb401afb123f22b075b (patch)
treeab148aad2c1d2f5e320011b8507507817e48c918 /src/or/or.h
parentd1f790e9cec42783e47805a8593ca5532a525904 (diff)
downloadtor-115271f65e1b84cea09f0fb401afb123f22b075b.tar
tor-115271f65e1b84cea09f0fb401afb123f22b075b.tar.gz
Implement the common case of ATTACHSTREAM.
svn:r3751
Diffstat (limited to 'src/or/or.h')
-rw-r--r--src/or/or.h23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/or/or.h b/src/or/or.h
index f14632eb0..3c5fbb23d 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -256,15 +256,18 @@ typedef enum {
/** State for a SOCKS connection: got a y.onion URL; waiting to receive
* rendezvous rescriptor. */
#define AP_CONN_STATE_RENDDESC_WAIT 6
+/** The controller will attach this connection to a circuit; it isn't our
+ * job to do so. */
+#define AP_CONN_STATE_CONTROLLER_WAIT 7
/** State for a SOCKS connection: waiting for a completed circuit. */
-#define AP_CONN_STATE_CIRCUIT_WAIT 7
+#define AP_CONN_STATE_CIRCUIT_WAIT 8
/** State for a SOCKS connection: sent BEGIN, waiting for CONNECTED. */
-#define AP_CONN_STATE_CONNECT_WAIT 8
+#define AP_CONN_STATE_CONNECT_WAIT 9
/** State for a SOCKS connection: send RESOLVE, waiting for RESOLVED. */
-#define AP_CONN_STATE_RESOLVE_WAIT 9
+#define AP_CONN_STATE_RESOLVE_WAIT 10
/** State for a SOCKS connection: ready to send and receive. */
-#define AP_CONN_STATE_OPEN 10
-#define _AP_CONN_STATE_MAX 10
+#define AP_CONN_STATE_OPEN 11
+#define _AP_CONN_STATE_MAX 11
#define _DIR_CONN_STATE_MIN 1
/** State for connection to directory server: waiting for connect(). */
@@ -1053,6 +1056,9 @@ typedef struct {
* the control system. */
int CookieAuthentication; /**< Boolean: do we enable cookie-based auth for
* the control system? */
+ int ManageConnections; /**< Boolean: Does Tor attach new connections to
+ * circuits itself (1), or does it let the controller
+ * deal? (0) */
} or_options_t;
#define MAX_SOCKS_REPLY_LEN 1024
@@ -1133,6 +1139,7 @@ void circuit_close_all_marked(void);
circuit_t *circuit_new(uint16_t p_circ_id, connection_t *p_conn);
circuit_t *circuit_get_by_circ_id_conn(uint16_t circ_id, connection_t *conn);
circuit_t *circuit_get_by_conn(connection_t *conn);
+circuit_t *circuit_get_by_global_id(uint32_t id);
circuit_t *circuit_get_by_rend_query_and_purpose(const char *rend_query, uint8_t purpose);
circuit_t *circuit_get_next_by_pk_and_purpose(circuit_t *start,
const char *digest, uint8_t purpose);
@@ -1172,6 +1179,8 @@ circuit_t *circuit_launch_by_nickname(uint8_t purpose, const char *exit_nickname
circuit_t *circuit_launch_by_identity(uint8_t purpose, const char *exit_digest,
int need_uptime, int need_capacity, int is_internal);
void circuit_reset_failure_count(int timeout);
+int connection_ap_handshake_attach_chosen_circuit(connection_t *conn,
+ circuit_t *circ);
int connection_ap_handshake_attach_circuit(connection_t *conn);
/********************************* command.c ***************************/
@@ -1260,6 +1269,7 @@ void connection_write_to_buf(const char *string, size_t len, connection_t *conn)
connection_t *connection_exact_get_by_addr_port(uint32_t addr, uint16_t port);
connection_t *connection_get_by_identity_digest(const char *digest, int type);
+connection_t *connection_get_by_global_id(uint32_t id);
connection_t *connection_get_by_type(int type);
connection_t *connection_get_by_type_state(int type, int state);
@@ -1365,7 +1375,8 @@ typedef enum stream_status_event_t {
STREAM_EVENT_SUCCEEDED = 2,
STREAM_EVENT_FAILED = 3,
STREAM_EVENT_CLOSED = 4,
- STREAM_EVENT_NEW = 5
+ STREAM_EVENT_NEW = 5,
+ STREAM_EVENT_NEW_RESOLVE = 6
} stream_status_event_t;
typedef enum or_conn_status_event_t {