Report circuit build_state flags in CIRC events

This commit is contained in:
Robert Ransom 2011-06-23 14:34:56 -07:00
parent 9ce76adfe8
commit b7c765b1b1
2 changed files with 35 additions and 0 deletions

7
changes/feature2411 Normal file
View File

@ -0,0 +1,7 @@
o Minor features:
- Report flags that control a circuit's path selection to
controllers in CIRC events and in replies to 'GETINFO
circuit-status'. Implements part of ticket 2411.

View File

@ -1794,6 +1794,34 @@ circuit_describe_status_for_controller(origin_circuit_t *circ)
}
}
{
char *buildflags = NULL;
cpath_build_state_t *build_state = circ->build_state;
smartlist_t *flaglist = smartlist_create();
char *flaglist_joined;
if (build_state->onehop_tunnel)
smartlist_add(flaglist, (void *)"ONEHOP_TUNNEL");
if (build_state->is_internal)
smartlist_add(flaglist, (void *)"IS_INTERNAL");
if (build_state->need_capacity)
smartlist_add(flaglist, (void *)"NEED_CAPACITY");
if (build_state->need_uptime)
smartlist_add(flaglist, (void *)"NEED_UPTIME");
/* Only emit a BUILD_FLAGS argument if it will have a non-empty value. */
if (smartlist_len(flaglist)) {
flaglist_joined = smartlist_join_strings(flaglist, ",", 0, NULL);
tor_asprintf(&buildflags, "BUILD_FLAGS=%s", flaglist_joined);
smartlist_add(descparts, buildflags);
tor_free(flaglist_joined);
}
smartlist_free(flaglist);
}
{
char *purpose = NULL;
tor_asprintf(&purpose, "PURPOSE=%s",