diff options
author | Roger Dingledine <arma@torproject.org> | 2007-05-08 10:11:53 +0000 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2007-05-08 10:11:53 +0000 |
commit | 54f5ab39b331a39081d568d4d4fc5d5e56ce4565 (patch) | |
tree | 5a5f7b0f585c51d808166dcd1e18fbf071b8be67 | |
parent | 1d3bb103a4f10b22d8d779feabf6ebab784fd658 (diff) | |
download | tor-54f5ab39b331a39081d568d4d4fc5d5e56ce4565.tar.gz tor-54f5ab39b331a39081d568d4d4fc5d5e56ce4565.zip |
record the router purpose at each step of the circuit path.
i have the feeling this will come in handy.
svn:r10139
-rw-r--r-- | src/or/circuitbuild.c | 11 | ||||
-rw-r--r-- | src/or/or.h | 9 |
2 files changed, 17 insertions, 3 deletions
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index 83a59fcd07..a555900ec0 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -1732,9 +1732,19 @@ extend_info_from_router(routerinfo_t *r) info->onion_key = crypto_pk_dup_key(r->onion_pkey); info->addr = r->addr; info->port = r->or_port; + info->router_purpose = r->purpose; return info; } +/** What router purpose is <b>digest</b>? + * It's a general purpose router unless it's on our bridges list. + */ +static uint8_t +get_router_purpose_from_digest(char *digest) { + (void)digest; + return ROUTER_PURPOSE_GENERAL; /* XXX020 */ +} + /** Allocate and return a new extend_info_t that can be used to build a * circuit to or through the router <b>r</b>. */ extend_info_t * @@ -1748,6 +1758,7 @@ extend_info_from_routerstatus(routerstatus_t *s) info->onion_key = NULL; /* routerstatus doesn't know this */ info->addr = s->addr; info->port = s->or_port; + info->router_purpose = get_router_purpose_from_digest(info->identity_digest); return info; } diff --git a/src/or/or.h b/src/or/or.h index 4d27b43339..8836060c20 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -1118,11 +1118,13 @@ typedef struct { unsigned int is_bad_exit:1; /**< Do we think this exit is censored, borked, * or otherwise nasty? */ -/** Tor can use this desc for circuit-building. */ +/** Tor can use this router for general positions in circuits. */ #define ROUTER_PURPOSE_GENERAL 0 -/** Tor should avoid using this desc for circuit-building. */ +/** Tor should avoid using this router for circuit-building. */ #define ROUTER_PURPOSE_CONTROLLER 1 - uint8_t purpose; /** Should Tor use this desc for circuit-building? */ +/** Tor should use this router only for bridge positions in circuits. */ +#define ROUTER_PURPOSE_BRIDGE 1 + uint8_t purpose; /** What positions in a circuit is this router good for? */ /* The below items are used only by authdirservers for * reachability testing. */ @@ -1297,6 +1299,7 @@ typedef struct extend_info_t { char identity_digest[DIGEST_LEN]; /**< Hash of this router's identity key. */ uint32_t addr; /**< IP address in host order. */ uint16_t port; /**< OR port. */ + uint8_t router_purpose; /**< General, controller, or bridge. */ crypto_pk_env_t *onion_key; /**< Current onionskin key. */ } extend_info_t; |